MySQL Long Query Progress Monitoring

Просто чтобы предисловие к моему вопросу, Я так понимаю, что прямой поддержки чего-то подобного нет. Я ищу какой-то обходной путь или запутанный вывод, который дал бы мне полууважаемый результат.

Я работаю с довольно большим кластером 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 секунда кажется зависшей или бездействующей. Некоторый индикатор прогресса был бы идеальным.

49
задан KOGI 8 June 2011 в 05:59
поделиться