Spec-Zone.ru › MariaDB

Сортировка файлов с оптимизацией малого LIMIT

Описание оптимизации

Когда n достаточно мало, оптимизатор использует очередь с приоритетами для сортировки. До переноса оптимизации в MariaDB 10.0, альтернативой, грубо говоря, было сортировать весь вывод, а затем выбирать только первые n строки.

Видимость оптимизации в MariaDB

Существует два способа проверки, использовала ли сортировка файлов очередь с приоритетами.

Переменная состояния

Первый способ — проверить переменную состояния Sort_priority_queue_sorts. Она показывает количество раз, когда сортировка производилась с помощью очереди с приоритетами. (Общее количество раз, когда производилась сортировка, является суммой Sort_range и Sort_scan).

Журнал медленных запросов

Второй способ — проверить журнал медленных запросов. При использовании расширенной статистики в журнале медленных запросов и указании log_slow_verbosity=query_plan, записи журнала медленных запросов выглядят так

# Time: 140714 18:30:39
# User@Host: root[root] @ localhost []
# Thread_id: 3  Schema: test  QC_hit: No
# Query_time: 0.053857  Lock_time: 0.000188  Rows_sent: 11  Rows_examined: 100011
# Full_scan: Yes  Full_join: No  Tmp_table: No  Tmp_table_on_disk: No
# Filesort: Yes  Filesort_on_disk: No  Merge_passes: 0  Priority_queue: Yes
SET timestamp=1405348239;SET timestamp=1405348239;
select * from t1 where col1 between 10 and 20 order by col2 limit 100;

Обратите внимание на «Priority_queue: Yes» в последней строке комментария. (pt-query-digest может анализировать журналы медленных запросов с полем Priority_queue)

Что касается EXPLAIN, она не даст никаких указаний на то, использует ли filesort очередь с приоритетами или общий алгоритм быстрой сортировки и слияния. Using filesort будет показано в обоих случаях, как в MariaDB, так и в MySQL.

См. также

  • Страница оптимизации LIMIT в руководстве MySQL 5.6 (поиск по «очереди с приоритетами»).
  • Запись WorkLog MySQL, WL#1393
  • MDEV-415, MDEV-6430
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительную проверку MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают мнения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/filesort-with-small-limit-optimization/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API