0Pricing
PostgreSQL Performance & Query Optimization · Урок

Чтение оценок стоимости и количества строк в EXPLAIN

Научитесь интерпретировать значения стоимости, оценочное количество строк и ширину, которые EXPLAIN указывает для каждого узла плана, а также замечать ошибки оценок планировщика

«Чтение оценок стоимости и количества строк в EXPLAIN» — бесплатный урок PostgreSQL Performance & Query Optimization на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PostgreSQL Performance & Query Optimization, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PostgreSQL Performance & Query Optimization содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

What the Cost Numbers Mean

Every node in an EXPLAIN plan shows a cost=startup..total pair. These are arbitrary planner units, not milliseconds. The planner uses them only to compare alternative plans and pick the cheapest one.

Startup vs Total Cost

The two numbers tell different stories:

  • Startup cost: work before the first row is returned (e.g. building a hash table)
  • Total cost: work to return all rows

A node that must sort or aggregate everything has a high startup cost.

A Sample Plan

Run EXPLAIN on a simple query and read the cost on each line.

EXPLAIN SELECT * FROM orders WHERE total > 100;

The rows Estimate

Each node shows rows=N, the planner's estimated number of rows it will emit. The planner derives this from table statistics gathered by ANALYZE.

Bad estimates lead to bad plans, so this number matters a lot.

The width Value

The width=N field is the estimated average row size in bytes. Multiplied by rows it estimates memory and I/O needs, which influences whether sorts or hashes spill to disk.

Estimated vs Actual

EXPLAIN alone shows only estimates. Add ANALYZE to also run the query and see real timings and real row counts side by side.

EXPLAIN ANALYZE SELECT * FROM orders WHERE total > 100;

Spotting Estimate Errors

Compare rows (estimate) with actual rows in EXPLAIN ANALYZE output. A large gap — say estimate 10 but actual 100000 — signals stale or insufficient statistics.

Why Estimates Drift

Estimates go stale when:

  • Data changed a lot since the last ANALYZE
  • Columns are correlated and the planner assumes independence
  • The default statistics target is too low for skewed data

Refreshing Statistics

Run ANALYZE to recompute statistics for a table. Better stats produce better row estimates and therefore better plans.

ANALYZE orders;

Raising the Statistics Target

For columns with skewed distributions, increase how many distinct values are sampled. A higher target means more accurate estimates at the cost of slightly slower ANALYZE.

ALTER TABLE orders ALTER COLUMN total SET STATISTICS 500;
ANALYZE orders;

Cost Multipliers in postgresql.conf

Constants like seq_page_cost, random_page_cost, and cpu_tuple_cost scale how the planner weighs disk vs CPU. On SSDs, lowering random_page_cost makes index scans look cheaper.

Quick Check

Test your understanding of cost estimates.

Recap

You learned to read EXPLAIN's numbers:

  • Cost is in arbitrary units; startup vs total cost differ
  • rows and width are estimates from statistics
  • Compare estimated vs actual rows to spot bad stats
  • Fix drift with ANALYZE and a higher statistics target
  • Cost constants tune disk-vs-CPU weighting

Часто задаваемые вопросы

Урок «Чтение оценок стоимости и количества строк в EXPLAIN» бесплатный?

Да — полный текст урока «Чтение оценок стоимости и количества строк в EXPLAIN» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PostgreSQL Performance & Query Optimization, подпишись на CoddyKit PRO. Курс PostgreSQL Performance & Query Optimization содержит 4 уроков всего.

Чему я научусь в уроке «Чтение оценок стоимости и количества строк в EXPLAIN»?

Научитесь интерпретировать значения стоимости, оценочное количество строк и ширину, которые EXPLAIN указывает для каждого узла плана, а также замечать ошибки оценок планировщика Ты практикуешь PostgreSQL Performance & Query Optimization с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PostgreSQL Performance & Query Optimization?

Предыдущий опыт не требуется. PostgreSQL Performance & Query Optimization на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Чтение оценок стоимости и количества строк в EXPLAIN»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PostgreSQL Performance & Query Optimization?

Да. Каждый урок PostgreSQL Performance & Query Optimization включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Введение в EXPLAIN и ANALYZE
  2. Интерпретация узлов плана
  3. Выявление узких мест производительности
  4. Чтение оценок стоимости и количества строк в EXPLAIN
← Назад к PostgreSQL Performance & Query Optimization