Оценка MySQL Query Runtime

То, что Вы ищете, называют Интернационализировавшим доменным именем (IDN). Да это возможно на большей части ccTLDs, а также некоторых более традиционных TLDs.

Статья Википедии
Информация о .com от verisign

4
задан 5 January 2012 в 10:24
2 ответа

Ну, вы можете войти в консоль mysql и выдать SHOW PROCESSLIST; команда. Это покажет вам, какие запросы выполняются, но вы не получите оценку, когда эти запросы закончатся.

Если вы запустите запросы с префиксом EXPLAIN EXTENDED заранее, это покажет вам количество элементов и другие важные сведения о запросе. Это может вам помочь, но поскольку запрос выполняется, вы можете использовать другой подход, подробно описанный в mysqlperformanceblog .

Отрывок:

Ответ был прост, потому что на сервере больше ничего не работало. Это означает, что SHOW GLOBAL STATUS дает приблизительное представление о том, что на самом деле делает запрос. (Если бы на сервере была большая активность, я бы не смог с уверенностью сказать, что SHOW GLOBAL STATUS показывает, что делает этот один запрос; активность других запросов тоже была бы смешанной. Это было бы Было бы здорово иметь возможность выбрать другой поток и наблюдать только за его статусом, но MySQL в настоящее время не позволяет вам этого делать.)

Решение состояло в том, чтобы измерить, насколько быстро запрос сканирует строки при сканировании таблицы таблицы фактов . Это показано переменной состояния Handler_read_rnd_next. Вот простой способ увидеть это (innotop - еще один удобный способ):

mysqladmin extended -r -i 10 | grep Handler_read_rnd_next
-- ignore the first line of output...
| Handler_read_rnd_next             | 429224      |

Итак, сервер читал примерно 43 КБ строк в секунду, а в таблице было 150 миллионов строк. Немного математики позже, и вы получите 3488 секунд до завершения, или чуть меньше часа. И действительно, запрос был выполнен примерно за 55 минут.

Это простейший случай, и есть более сложные, которые нужно рассмотреть, но, надеюсь, это даст вам представление о том, как можно решить эту проблему в различных ситуациях.

4
ответ дан 3 December 2019 в 03:33

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

Другие варианты, которые я могу выделить:

  1. Вы можете использовать системный инструмент, такой как top , чтобы убедиться, что он все еще работает (потребляет CPU).
  2. По возможности рекомендуется разделить сложный запрос на несколько запросов. В этом случае вы можете просто написать сценарий для выполнения нескольких запросов и отображения некоторой информации между каждыми двумя последовательными выполнениями. Таким образом, вы можете узнать о ходе выполнения задания.
0
ответ дан 3 December 2019 в 03:33

Теги

Похожие вопросы