2

我正在通过 MySQL 使用 sphinxse 访问大型索引文本数据集。结果集的大小为千兆字节。但是,我注意到,只要数据集大于 16MB,MySQL 就会停止查询并出现以下错误:

1430 (HY000): 处理对外部数据源的查询时出现问题。数据源错误:bad searchd response length (length=16777523)

length 显示了冒犯 MySQL 的结果集的长度。我用 Sphinx 的独立搜索程序尝试了相同的查询。它工作正常。我已经在 MySQL 和 Sphinx 中尝试了所有可能的变量,但没有任何帮助。

我正在使用 Sphinx 0.9.9 rc-2 和 MySQL 5.1.46。

谢谢

4

2 回答 2

2

我终于解决了这个问题。事实证明,用于 mysql (SphinxSE) 的 sphinx 插件硬编码了源代码中结果集的 16 MB 响应限制(bad bad bad source-code)。我在 ha_sphinx.cc 文件中将 SPHINXSE_MAX_ALLOC 更改为 1*1024*1024*1024,现在一切正常。

于 2010-05-02T01:57:06.590 回答
0

您可能需要从默认值 16M 增加 max_allowed_pa​​cket:

来自mysql的文档

客户端和服务器都有自己的 max_allowed_pa​​cket 变量,所以如果你想处理大数据包,你必须在客户端和服务器中都增加这个变量。

如果您使用的是 mysql 客户端程序,其默认的 max_allowed_pa​​cket 变量为 16MB。要设置更大的值,请像这样启动 mysql:

外壳> mysql --max_allowed_pa​​cket=32M

这将数据包大小设置为 32MB。

于 2010-05-01T03:31:06.250 回答