All my tables use InnoDB, and I have set sphinx sql_range_step to the minimum, which is 128. This improved the performance a lot, but it is still very slow if you make a request right after a new step begins.
I'm sure it would work just fine if I could reduce the range step to 10 or something, but someone found that the min value is hardcoded and there is no way to change it (other than editing the source).
So I was wondering if there was a way to deal with this directly from MySQL. When I am indexing a database, the other databases aren't affected, so it's not the whole server which has been slowed down, but only the database I am indexing.
Is there a way to give less priority to a user or query, or something?
Take a look at this similar post from StackOverflow. You may be able to use those strategies to give sphinx a lower priority.
Have a look at this
The idea is to insert some code in your query that is throttling down query execution.
For a quickest approach you can use a query like this:
That will make sphinx query to wait for 0.1 seconds before finishing.