Просто чтобы предисловие к моему вопросу, Я так понимаю, что прямой поддержки чего-то подобного нет. Я ищу какой-то обходной путь или запутанный вывод, который дал бы мне полууважаемый результат.
Я работаю с довольно большим кластером MySQL (таблицы> 400 миллионов строк), используя механизм кластеров.
Знает ли кто-нибудь способ напрямую получить или иным образом получить несколько (или лучше) точную индикацию хода выполнения длинного запроса в mysql? У меня есть несколько запросов, которые могут занять до 45 минут, и мне нужно определить, 10% или 90% мы прошли через обработку.
РЕДАКТИРОВАТЬ:
Как указано в комментариях, вот дистиллированная и обобщенная версия из одного запроса, который приводит к моему первоначальному вопросу ...
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 секунда кажется зависшей или бездействующей. Некоторый индикатор прогресса был бы идеальным.