Postgres Izskaidrojiet izmaksas

Postgres Izskaidrojiet Izmaksas



Postgres ir jaudīga un plaši izmantota atvērtā pirmkoda relāciju datu bāzes sistēma ar spēcīgu reputāciju tās robustuma, funkcionalitātes un veiktspējas dēļ.

Viens no rīkiem, kas padara Postgres pārsvarā spēcīgu veiktspēju, ir komanda EXPLAIN, kas sniedz detalizētu informāciju par SQL vaicājuma izpildes plānu.

Kas ir komanda EXPLAIN?

Komanda EXPLAIN parāda izpildes plānu, ko PostgreSQL plānotājs ģenerē konkrētajam SQL priekšrakstam.







Tas ietver informāciju par katra vaicājuma darbības aptuvenajām izmaksām. Izpētot šīs izmaksas, mēs varam saprast, kāpēc vaicājums darbojas lēni un kā to optimizēt.



PostgreSQL Izskaidrojiet izmaksas

Mēs galvenokārt izmantojam komandu EXPLAIN, lai iegūtu informāciju par noteiktu vaicājumu. Komanda izvada informāciju par vaicājumu.



Ņemiet, piemēram, vaicājumu, kas parādīts tālāk:





SELECT f.title, c.name
NO filmas f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN kategorijai c ON fc.category_id = c.category_id;

Ja mēs izpildām paskaidrošanas komandu iepriekšējā vienkāršajā savienojumā:

EXPLAIN SELECT f.title, c.name
NO filmas f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN kategorijai c ON fc.category_id = c.category_id;

Mums vajadzētu iegūt izvadi, kā parādīts tālāk:



Varat pamanīt, ka katram vaicājuma solim PostgreSQL atgriež šī vaicājuma aptuvenās izmaksas.

  1. startup_cost — parāda aptuvenās izmaksas operācijas inicializācijai, pirms tā var sākt rindu izvadīšanu.
  2. total_cost — visu rindu izgūšanas kopējās izmaksas.
  3. Rindas — nosaka aptuveno rindu skaitu, kuras atgriež vaicājums.
  4. Platums — nosaka vidējo baitu skaitu visās rindās, kuras atgriež darbība.

Vaicājuma izmaksas programmā PostgreSQL ir apzīmētas patvaļīgās vienībās, kuras nosaka izmaksu parametri, kas iestatīti servera konfigurācijā.

Šo parametru atslēga ir seq_page_cost, kas nosaka izmaksas par diska lapas ielādi, kas nav kešatmiņā.

Ja izmantojat pgAdmin, varat izmantot funkciju “izskaidrot analīzi”, lai iegūtu labāk lasāmu un labāk attēlotu izskaidrošanas komandas diagrammu. Piemēram:

Pēc tam varat noklikšķināt uz katras darbības, lai skatītu statistiku un aptuvenās izmaksas.

Vaicājumu optimizēšana, pamatojoties uz izmaksām

Optimizējot vaicājumus, ir svarīgi saprast, ka zemākas izmaksas parasti nozīmē ātrāku izpildi. Tāpēc varat modificēt savus vaicājumus par zemākām izmaksām.
Šeit ir daži faktori, kas jāņem vērā:

Izmantojiet tabulu Indeksi – Indeksi ievērojami samazina izmaksas par meklēšanu balstītiem vaicājumiem, saglabājot datu struktūru, kas ļauj ātrāk meklēt.

Izmantojiet funkcijas un operatorus saprātīgi – Funkciju un operatoru izmaksu aprēķins ne vienmēr ir precīzs, jo faktiskās izmaksas var būt ļoti atkarīgas no konkrētiem datiem. Tādējādi ierobežojiet funkciju un sarežģītu operatoru izmantošanu līdz minimumam.

Secinājums

Mēs izpētījām izmaksu jēdzienu PostgreSQL ANALYZE komandā. Mēs apspriedām, ko nozīmē komandas izvade un kā izmantot izmaksu izvadi, lai analizētu visefektīvāko veidu, kā palaist noteiktu vaicājumu.