Чтобы предисловие к моему вопросу, я понимаю, что нет никакой непосредственной поддержки для чего-то подобного. То, что я ищу, - это любой вид работы или свернутый вывод, который принесет мне полупорядочный результат.
Я работаю с довольно большим кластером MySQL (таблицы > 400 миллионов строк), используя механизм кластера.
Кто-нибудь знает о способе либо напрямую извлекать или иначе получить несколько (или лучше) точные указания о прогрессе через длинный запрос в mysql? У меня есть несколько запросов, которые могут занять до 45 минут, и мне нужно определить, если мы обработаем 10% или 90%.
EDIT:
Как указано в комментариях, здесь приведена дистиллированная и обобщенная версия одного из запросов, которые приводят к моему первоначальному вопросу...
SELECT `userId`
FROM `openEndedResponses` AS `oe`
WHERE
`oe`.`questionId` = 3 -- zip code
AND (REPLACE( REPLACE( `oe`.`value`, ' ', '' ), '-', '' ) IN ( '30071', '30106', '30122', '30134', '30135', '30168', '30180', '30185', '30187', '30317', '30004' ));
Этот запрос выполняется против одной таблицы с ~ 95 миллионами строк. Для выполнения запроса требуется 8 секунд, а еще 13 - для передачи данных (всего 21 сек). Учитывая размер таблицы и тот факт, что используются функции манипуляции строкой, я бы сказал, что она работает довольно быстро. Тем не менее, для пользователя, он все еще на 21 секунду появляется либо застрял, либо простаивает. Некоторый признак прогресса был бы идеальным.