PostgreSQL savjeti za produkcijske web aplikacije
Praktični PostgreSQL savjeti koje smo naučili iz pokretanja produkcijskih web aplikacija, pokrivajući strategije indeksiranja, optimizaciju upita i connection pooling.
PostgreSQL je naša glavna baza u IT Family. Moćan, pouzdan, sposoban. Ali nagrađuje timove koji odvoje vrijeme da razumiju njegove performansne karakteristike. Nakon godina pokretanja produkcijskih web aplikacija na Postgresu, evo savjeta za koje smo željeli da smo ih znali od prvog dana.
Indeksirajte strateški, ne svuda
Dodavanje indeksa je prva stvar za koju developeri posegnu kada upiti uspore, ali pretjerano indeksiranje je jednako štetno kao nedovoljno indeksiranje. Svaki indeks usporava zapisivanje i troši prostor. Počnite analiziranjem vaših stvarnih obrazaca upita sa pg_stat_statements.
Koristite EXPLAIN ANALYZE religiozno
Nikada ne pogađajte zašto je upit spor. Pokrenite EXPLAIN ANALYZE i pažljivo pročitajte izlaz. Tražite sekvencijalna skeniranja na velikim tabelama i nepodudaranja u procjenama redova koja ukazuju na zastarjelu statistiku.
Connection pooling je obavezan
PostgreSQL kreira novi proces za svaku konekciju. Koristimo PgBouncer u transaction pooling modu ispred svake produkcijske baze. Značajno smanjuje broj aktivnih konekcija dok obrađuje hiljade istovremenih zahtjeva.
Optimizujte svoje tipove podataka
Mali izbori u tipovima podataka se akumuliraju na skali. Koristite UUID v7 umjesto v4 za primarne ključeve ako vam trebaju sortirajući ID-ovi. Koristite timestamptz umjesto timestamp da izbjegnete bagove sa vremenskim zonama.
PostgreSQL je izuzetno moćna baza. Daje najbolje rezultate kada radite sa njom, a ne protiv nje.




