Сравнивайте estimated и actual rows, время узлов, loops, чтение buffers, отбрасываемые строки и выход сортировок на диск. Это помогает различать ошибку оценок, лишнюю работу и I/O.
Пожалуйста, давайте сосредоточимся на теме. Какие метрики плана выполнения PostgreSQL помогают выявить узкие места в запросах?
Сравнивайте estimated и actual rows, время узлов, loops, чтение buffers, отбрасываемые строки и выход сортировок на диск. Это помогает различать ошибку оценок, лишнюю работу и I/O.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сравнивайте estimated и actual rows, время узлов, loops, чтение buffers, отбрасываемые строки и выход сортировок на диск. Это помогает различать ошибку оценок, лишнюю работу и I/O.
Используйте EXPLAIN (ANALYZE, BUFFERS) только там, где допустимо реальное выполнение запроса. При loops > 1 время и строки узла обычно показываются в среднем на один запуск; учитывайте множитель.
Большое расхождение оценок влияет на выбор join и scan. Смотрите Rows Removed by Filter, Sort Method, временные чтения/записи и число обращений к таблице. Не складывайте времена родительских и дочерних узлов как независимые: они включают вложенную работу. Для меняющих данные запросов заранее предусмотрите безопасную среду проверки.
Источник: www.postgresql.org.