После записи SQL-операторов в MySQL, как измерить скорость / производительность их?

Я видел что-то из статьи "плана выполнения":

10 rows fetched in 0.0003s (0.7344s)

(ссылка: http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/)

Каким образом существует 2 показанные продолжительности? Что, если у меня еще нет большого набора данных. Например, если у меня есть только 20, 50, или даже всего 100 записей, я не могу действительно иметь размеры, как быстрее 2 различных SQL-оператора выдерживают сравнение с точки зрения скорости в реальной ситуации? Другими словами, должны быть, по крайней мере, сотни тысяч записей, или даже миллион записей на точно сравнивает производительность тех 2 различных SQL-операторов?

1
задан 太極者無極而生 24 April 2010 в 16:00
поделиться

3 ответа

По вашему первому вопросу:

X строк, извлеченных в Y s (Z s)

X = количество строк (конечно ); Y = время, затраченное сервером MySQL на выполнение запроса (синтаксический анализ, получение, отправка); Z = время, затраченное набором результатов на передачу от сервера к клиенту;

(Источник: http://forums.mysql.com/read.php?108,51989,210628#msg-210628 )

Что касается второго вопроса, вы никогда не узнаете, как выполняется запрос. если вы не тестируете с реалистичным количеством записей. Вот хороший пример правильного тестирования: http://www.mysqlperformanceblog.com/2010/04/21/mysql-5-5-4-in-tpcc-like-workload/

Это блог в целом, а также книга « High Performance MySQL » - это золотая жила.

1
ответ дан 3 September 2019 в 01:03
поделиться

Лучший способ проверить и сравнить производительность операций - часто (если не всегда!) работать с реалистичным набором данных .

Если вы планируете иметь миллионы строк, когда ваше приложение находится в рабочей среде, то вам следует прямо сейчас протестировать миллионы строк, а не только дюжину!


Пара советов:

  • При тестировании используйте select SQL_NO_CACHE ... вместо select ...
    • Это предотвратит использование MySQL кэшем запросов (что заставит первый запрос занять нормальное количество времени, а повторное выполнение будет выполняться в несколько раз быстрее)
  • Узнайте, как использовать EXPLAIN , и поймите его вывод
  • Прочтите Глава 7. Оптимизация раздел руководства; -)
1
ответ дан 3 September 2019 в 01:03
поделиться

Обычно, когда показано 2 раза, один - ЦП время, а один - время настенных часов. Я не могу вспомнить, что есть что, но похоже, что первое - это время процессора, а второе - прошедшее время.

0
ответ дан 3 September 2019 в 01:03
поделиться
Другие вопросы по тегам:

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