Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Know-how Nástroje
O nás Spolupráce Kariéra
Pojďme to probrat

PostgreSQL: 15 optimalizačních triků

03. 12. 2021 1 min čtení intermediate

PostgreSQL je skvělá databáze, ale bez správné optimalizace může být pomalá. Tady je 15 triků.

1. EXPLAIN ANALYZE

EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE status = ‘pending’;

2. Správné indexy

CREATE INDEX idx_orders_status ON orders(status, created_at DESC);
CREATE INDEX idx_active ON users(email) WHERE active = true;
CREATE INDEX idx_cover ON orders(user_id) INCLUDE (total, status);

3. pg_stat_statements

CREATE EXTENSION pg_stat_statements;
SELECT query, mean_exec_time, calls FROM pg_stat_statements ORDER BY mean_exec_time DESC LIMIT 10;

4. PgBouncer

Connection pooling. PostgreSQL = nový proces na spojení (~10 MB). PgBouncer v transaction mode to řeší.

5. VACUUM tuning

SELECT relname, n_dead_tup FROM pg_stat_user_tables ORDER BY n_dead_tup DESC LIMIT 10;

6. work_mem

SET work_mem = ‘256MB’;

7. Partitioning

CREATE TABLE events (…) PARTITION BY RANGE (created_at);

8. COPY místo INSERT

COPY users(name, email) FROM ‘/tmp/users.csv’ WITH (FORMAT csv, HEADER);

9-15: Quick wins

  • random_page_cost = 1.1 pro SSD
  • effective_cache_size = 75% RAM
  • shared_buffers = 25% RAM
  • Nepoužívejte SELECT *
  • LIMIT vždy
  • Batch UPDATE/DELETE po 10K
  • Smažte nepoužívané indexy

Závěr

Začněte EXPLAIN ANALYZE a pg_stat_statements. Pochopte co DB dělá, pak optimalizujte.

postgresqldatabázeperformance
Sdílet:

CORE SYSTEMS tým

Stavíme core systémy a AI agenty, které drží provoz. 15 let zkušeností s enterprise IT.