У меня есть cronjob, который выполняет длительный запрос каждые 5 минут. Этот запрос не критичен по времени, он занимает около 30 секунд.Длительный несущественный запрос замедляет другие запросы
Проблема в том, что во время выполнения запроса все остальные запросы выполняются значительно медленнее.
Запрос очень прост (нет объединений, использует индекс и т. Д.), Но читает много данных (1,5 мил строк, около 150 байт данных в строке).
Я не могу легко кэшировать результаты, так как все данные могут быть изменены в любое время.
Есть ли способ дросселировать этот конкретный запрос?
Edit: Запрос на самом деле просто:
SELECT field1,field2 FROM table;
Edit 2: Хорошо, жаль это говорить, но каждый один из вас отсутствует пункт здесь. Я спрашиваю, могу ли я сжать запрос, и все ответы, которые я получаю, вообще не затрагивают вопрос. Вы все говорите мне изменить cronjob (я знаю, что могу), запустите его из cli (я не хочу), получая данные в кусках и т. Д.
Опять же я спрашиваю конкретно Могу ли я каким-то образом выполнить Запрос MySQL SELECT как «не важно», чтобы он не украл все ресурсы из других запросов?
Извините, если это звучит как основной тирады, я ценю, что вы нашли время, чтобы помочь :)
Почему бы вы возвращение 1,5 миллиона строк в работе, которая выполняется каждые 30 секунд? Где идут строки? –
Работа выполняется каждые 5 минут, запрос занимает около 30 секунд. Мне нужны данные, чтобы рассчитать материал (слишком долго объяснять здесь, но я * делаю * нужны все данные). – smoove
Да, но каковы данные? Перемещение 1,5 миллиона строк почти наверняка является причиной замедления и вряд ли улучшится, если вы не сможете обойти это перемещение (IE, если он вернется в mysql, тогда вы могли бы использовать INSERT ... SELECT?). – Giles