(я считаю, что Sphinx - это в основном пользовательский механизм хранения MySQL)
SphinxSE - это фальшивый механизм хранения. фальшивый, потому что он не хранит никаких данных, а скорее принимает запросы на данные из своей «таблицы», но на самом деле он просто передает их обратно в работающий экземпляр searchd в фоновом режиме.
Само searchd не имеет никакого кеширования - но, как уже упоминалось при считывании из индексации, ОС вполне может начать кеширование файлов - так что не нужно возвращаться обратно на диск.
Если вы используете SphinxSE - тогда запросы могут кэшироваться обычным кэшем запросов mysql - поэтому целые наборы результатов кэшируются. Но в зависимости, обычный способ использования SphinxSE - это объединить результаты поиска с исходным набором данных, чтобы вы оба вернулись в приложение за один раз. Таким образом, ваши запросы также зависят от реальных таблиц данных mysql. И они будут подвергаться тому же кешированию ОС - поскольку mysql читает данные, они будут кешироваться.
Когда я запускаю новый сервер
что говорит о том, что вы используете виртуальную машину? В этом случае виртуальный диск может быть расположен в удаленной сети SAN. (или EBS на Amazon ec2)
- , что означает, что загрузка большого индекса сфинкса по этому маршруту может быть медленной.
В зависимости от того, где размещена ваша виртуальная машина, может быть возможность получить некоторые специальные высокопроизводительные диски - в идеале локальные по отношению к хосту - возможно, даже SSD - которые вполне могут помочь.
В любом случае, чтобы отследить проблему, более вероятно, что вы почти наверняка должны включить журнал запросов sphinx. Посмотрите на это, чтобы увидеть, если запросы выполняются там медленно. Существует также возможность запуска поиска для searchd, где вы можете включить iostats. Это запишет дополнительную информацию в журнал запросов о статистике io по мере выполнения запросов. Это может дать вам дополнительную информацию.