Индексатор Sphinx замедляет работу базы данных: как придать ей низкий приоритет?
Все мои таблицы используют InnoDB, и я установил sphinx sql_range_step на минимум, равный 128. Это значительно улучшило производительность, но все еще очень медленно, если вы делаете запрос сразу после начала нового шага.
Я уверен, что все будет работать нормально, если я смогу уменьшить шаг диапазона до 10 или около того, но кто-то обнаружил, что минимальное значение жестко задано, и нет никакого способа изменить его (кроме редактирования источника).
Поэтому мне было интересно, есть ли способ справиться с этим непосредственно из MySQL. Когда я индексирую базу данных, другие базы данных не затрагиваются, поэтому замедляется не весь сервер, а только индексируемая база данных.
Есть ли способ дать меньший приоритет пользователю или запросу, или что-то?
2 ответа
Взгляните на этот похожий пост от StackOverflow. Возможно, вы сможете использовать эти стратегии, чтобы сфинкс получил более низкий приоритет.
Посмотри на это
Идея состоит в том, чтобы вставить в запрос некоторый код, который замедляет выполнение запроса.
Для быстрого подхода вы можете использовать такой запрос:
select <your stuff> from <your table where <your condition> and (sleep (0.1) or 1)
Это заставит запрос sphinx ждать 0,1 секунды, прежде чем закончить.