Advanced PostgreSQL: Indexing, Partitioning, Replication · Lekcja

Dostrajanie kosztu indeksów za pomocą ANALYZE i statystyk

Dowiedzą się Państwo, jak planer PostgreSQL korzysta ze statystyk tabel przy wyborze indeksów oraz jak utrzymywać te statystyki w aktualności, aby plany zapytań pozostawały szybkie.

Lekcja 4 z 413 kroki

Dostrajanie kosztu indeksów za pomocą ANALYZE i statystyk to bezpłatna lekcja Advanced PostgreSQL: Indexing, Partitioning, Replication na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Advanced PostgreSQL: Indexing, Partitioning, Replication, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Advanced PostgreSQL: Indexing, Partitioning, Replication zawiera 4 lekcji w sumie.

Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.

The Planner Needs Data About Data

PostgreSQL's planner picks between index scans and sequential scans using statistics about your tables: row counts, value distributions, and more.

Stale statistics lead to bad plans.

What ANALYZE Does

The ANALYZE command samples a table and updates statistics stored in the system catalogs, so the planner estimates row counts accurately.

ANALYZE orders;

Autovacuum and Autoanalyze

The autovacuum daemon also runs ANALYZE automatically when enough rows change. But heavy bulk loads may need a manual ANALYZE right away.

Reading Estimates vs Actuals

Use EXPLAIN ANALYZE to compare the planner's estimated rows with actual rows. A big gap signals stale or insufficient statistics.

EXPLAIN ANALYZE SELECT * FROM orders WHERE status = 'paid';

Statistics Target

The default_statistics_target controls sample size. Raise it on columns with skewed data for sharper histograms.

ALTER TABLE orders ALTER COLUMN status SET STATISTICS 500;

Why Bad Estimates Hurt

If the planner underestimates matching rows it may pick an index scan that becomes slow; overestimate and it may skip a perfectly good index for a seq scan.

Inspecting pg_stats

The pg_stats view exposes the collected statistics like most common values and null fraction per column.

SELECT attname, n_distinct, null_frac FROM pg_stats WHERE tablename = 'orders';

Extended Statistics

For correlated columns, create extended statistics so the planner understands dependencies between them.

CREATE STATISTICS orders_corr (dependencies) ON city, zip FROM orders;

Cost Parameters

Settings like random_page_cost tell the planner how expensive random I/O is. On SSDs, lowering it makes index scans more attractive.

SET random_page_cost = 1.1;

When the Index Is Ignored

If an index exists but is unused, suspect:

  • Stale statistics
  • Low selectivity (most rows match)
  • A type mismatch preventing index use

A Tuning Workflow

  1. Run EXPLAIN ANALYZE
  2. Check estimate vs actual gap
  3. ANALYZE or raise statistics target
  4. Adjust cost settings if needed
  5. Re-measure

Quick Check

Test your statistics tuning knowledge.

Recap

The PostgreSQL planner chooses indexes based on statistics kept fresh by ANALYZE and autovacuum.

Compare estimated versus actual rows with EXPLAIN ANALYZE, raise the statistics target for skewed columns, add extended statistics for correlated ones, and tune cost parameters to guide index choice.

Bezpłatny start

Ucz się Advanced PostgreSQL: Indexing, Partitioning, Replication dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
11
Lekcje
44

Często zadawane pytania

Czy lekcja „Dostrajanie kosztu indeksów za pomocą ANALYZE i statystyk” jest bezpłatna?

Tak — pełny tekst „Dostrajanie kosztu indeksów za pomocą ANALYZE i statystyk” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Advanced PostgreSQL: Indexing, Partitioning, Replication, przejdź na CoddyKit PRO. Kurs Advanced PostgreSQL: Indexing, Partitioning, Replication zawiera 4 lekcji w sumie.

Co nauczysz się w „Dostrajanie kosztu indeksów za pomocą ANALYZE i statystyk”?

Dowiedzą się Państwo, jak planer PostgreSQL korzysta ze statystyk tabel przy wyborze indeksów oraz jak utrzymywać te statystyki w aktualności, aby plany zapytań pozostawały szybkie. Ćwiczysz Advanced PostgreSQL: Indexing, Partitioning, Replication z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Advanced PostgreSQL: Indexing, Partitioning, Replication?

Nie wymagamy żadnego doświadczenia. Advanced PostgreSQL: Indexing, Partitioning, Replication w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Dostrajanie kosztu indeksów za pomocą ANALYZE i statystyk”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Advanced PostgreSQL: Indexing, Partitioning, Replication?

Tak. Każda lekcja Advanced PostgreSQL: Indexing, Partitioning, Replication zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Analizowanie planów zapytań za pomocą EXPLAIN
  2. Monitorowanie wykorzystania indeksów
  3. Przebudowa i konserwacja indeksów
  4. Dostrajanie kosztu indeksów za pomocą ANALYZE i statystyk
← Powrót do Advanced PostgreSQL: Indexing, Partitioning, Replication