【问题标题】:Problem with Sphinx resultset larger than 16 MB in MySQLMySQL 中 Sphinx 结果集大于 16 MB 的问题
【发布时间】:2010-04-30 21:49:38
【问题描述】:

我正在通过 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。

谢谢

【问题讨论】:

    标签: mysql sphinx resultset


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      来自mysql's documentation

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

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

      shell> mysql --max_allowed_pa​​cket=32M

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

      【讨论】:

      • 感谢您的回复。我已经在服务器和客户端中尝试过 max_allowed_pa​​cket。它没有工作:(
      猜你喜欢
      • 2018-06-08
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多