Выбор ответа Middle EXPLAIN и оптимизация обновлено

Сортировка на диске

Вопрос

В плане Sort Method: external merge Disk: 250000kB. Что это значит и что можно сделать?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Сортировка не влезла в workmem: индекс, меньше данных, больше памяти. workmem ограничивает память на одну операцию сортировки или хеширования.

Варианты ответа

  1. Таблица хранится на диске, а не в памяти; увеличить shared_buffers
  2. Индекс повреждён, и база сортирует строки вручную на диске
  3. Сортировка не влезла в work_mem: индекс, меньше данных, больше памятиправильный ответ
  4. Это нормальное сообщение для любого ORDER BY по большой таблице

Разбор

work_mem ограничивает память на одну операцию сортировки или хеширования. Не хватило, и база пишет промежуточные данные во временные файлы, это медленно. Варианты: индекс, который выдаёт строки уже в нужном порядке; выбирать меньше колонок и строк; поднять work_mem для конкретной сессии или запроса (глобально осторожно: лимит на каждую операцию каждого соединения). shared_buffers это кеш страниц таблиц, к сортировке отношения не имеет. Сортировка в памяти показывается как quicksort Memory.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме