PostgreSQL - Architettura e Configurazioni¶
Shared Memory¶
- shared_buffers : blocchi di dati letti/scritti (tabelle, indici)
- wal_buffers : log delle transazioni in attesa di scrittura
Memory Process¶
- temp_buffers : tabelle temporanee della sessione utente
- work_mem : sort (
ORDER BY,DISTINCT) e hash (join, aggregation) - maintenance_work_mem : operazioni di manutenzione (
VACUUM,CREATE INDEX, FK)
Processi PostgreSQL¶
- Postmaster : processo principale
- Backend Process : uno per ogni connessione client
- WAL Writer : scrive i WAL su disco
- WAL Sender : invia WAL ai replica (replica streaming)
- Background Writer : svuota periodicamente i buffer
- Checkpointer : gestisce i checkpoint
- Autovacuum : pulisce tuple obsolete
- Archiver : opzionale, salva WAL per backup
- Stats Collector : raccoglie metriche di sistema
- Logical Replication : gestisce replica logica
- Startup Process : attivo all’avvio o recovery
- Logger : scrive log di sistema
Physical Files¶
- data_directory : dati di tabelle e indici, pagine da 8KB
- wal_level : log transazioni per durabilità e recovery
- archive_mode : archiviazione WAL per backup/replica
- archive_command : comando di esecuzione per l'archiviazione del WAL
- temp_file_limit : operazioni temporanee se memoria insufficiente
Parallelism¶
- max_worker_processes : max processi worker totali (background, replica, parallelismo)
- max_parallel_workers : max worker paralleli complessivi per il server
- max_parallel_workers_per_gather : max worker per singola operazione parallela (Gather)
Esempio Configurazione (4 CPU, 8GB RAM)¶
- shared_buffers : 2GB
- wal_buffers : 64MB
- work_mem : 16MB
- maintenance_work_mem : 512MB
- max_worker_processes : 4
- max_parallel_workers : 4
- max_parallel_workers_per_gather : 2