我所有的表都使用 InnoDB,并且我已将 sphinx sql_range_step 设置为最小值,即 128。这大大提高了性能,但是如果您在新步骤开始后立即发出请求,速度仍然非常慢。
我确信如果我可以将范围步长减少到 10 左右,它就可以正常工作,但有人发现最小值是硬编码的,并且没有办法更改它(除了编辑源代码)。
所以我想知道是否有办法直接从 MySQL 处理这个问题。当我索引一个数据库时,其他数据库不会受到影响,所以不是整个服务器变慢了,而只是我正在索引的数据库变慢了。
有没有办法降低用户或查询的优先级,或者其他的?
答案1
看一眼这篇类似的帖子来自 StackOverflow。您可以使用这些策略来降低 sphinx 的优先级。
答案2
看一下这
这个想法是在查询中插入一些代码来限制查询的执行。
为了最快的方法,您可以使用如下查询:
select <your stuff> from <your table where <your condition> and (sleep (0.1) or 1)
这将使得 sphinx 查询等待 0.1 秒才完成。