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 Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

Connection Pooling

01. 01. 2024 1 min čtení intermediate

Každé DB spojení stojí ~10MB RAM. Bez poolingu vytvoříte stovky spojení a DB se zhroutí.

Proč pooling

  • TCP handshake + TLS = ~100ms per connection
  • PostgreSQL fork per connection = ~10MB RAM
  • Max connections limit (default 100)
  • Connection reuse = dramaticky nižší latence

SQLAlchemy pool

from sqlalchemy import create_engine engine = create_engine( “postgresql://user:pass@localhost/db”, pool_size=20, max_overflow=10, pool_timeout=30, pool_recycle=1800, # Recyklace po 30 min )

PgBouncer

pgbouncer.ini

[databases] mydb = host=localhost port=5432 dbname=mydb [pgbouncer] pool_mode = transaction # Doporučeno max_client_conn = 1000 default_pool_size = 25

Klíčový takeaway

Vždy poolujte. SQLAlchemy pool_size=20, PgBouncer pro sdílení poolu mezi aplikacemi.

databaseconnection poolpostgresqlperformance