Fonaments del rendiment
El cicle de l'optimització
L'optimització del rendiment (performance tuning) és el procés sistemàtic d'identificar i eliminar els colls d'ampolla que limiten la velocitat, la capacitat o l'escalabilitat d'un sistema gestor de bases de dades. No es tracta d'una acció puntual, sinó d'un cicle continu d'observació, mesura, intervenció i validació.
flowchart LR
A[Observar] --> B[Mesurar]
B --> C[Diagnosticar]
C --> D[Intervenir]
D --> E[Validar]
E --> A
Les quatre capes de l'optimització
1. Índexs
Els índexs permeten al motor localitzar files sense escanejar tota la taula. Una base de dades sense índexs adequats és com un llibre sense índex: per trobar qualsevol cosa cal llegir-lo sencer. L'objectiu és disposar dels índexs justos: ni de menys (consultes lentes) ni de massa (escriptures lentes i espai malgastat).
2. Plans d'execució
El query planner (o query optimizer) de cada motor decideix com executar una consulta SQL: quin índex usar, en quin ordre fer els joins, si ordenar primer o filtrar primer. Llegir i entendre els plans d'execució és l'habilitat central de l'optimització.
3. Configuració de memòria
La memòria RAM és el recurs més valuós per al rendiment. Els paràmetres com shared_buffers (PostgreSQL), innodb_buffer_pool_size (MySQL) o buffer cache (Oracle) determinen quanta informació es manté a la memòria cau i quant sovint cal llegir del disc.
4. I/O i disc
Quan la memòria no és suficient, el motor ha d'accedir al disc. L'I/O de disc és ordres de magnitud més lent que l'accés a memòria. Cal minimitzar les lectures físiques, distribuir les dades en volums ràpids (SSD NVMe) i evitar operacions d'ordenació excessives.
Àrees principals d'optimització
mindmap
root((Optimització SGBD))
Índexs
B-tree
Hash
Full-text
Parcials
Compostos
Plans d'execució
EXPLAIN ANALYZE
Seq Scan vs Index Scan
Join algorithms
Estadístiques
Configuració
Memòria shared_buffers
Work_mem
Connexions
Checkpoints
Monitoratge
Consultes lentes
Bloquejos
Connexions actives
I/O estadístiques
Consultes SQL
Antipatrons
Reescriptura
CTEs
Window functions
Rendiment des del punt de vista de l'usuari
Un usuari espera que una consulta OLTP (transaccional) respongui en menys de 10 ms. Una consulta analítica complexa pot admetre fins a alguns segons, però mai minuts. Quan el rendiment es degrada, els efectes en cascada son ràpids:
- Les connexions s'acumulen esperant.
- El connection pool s'omple.
- Les aplicacions web retornen errors 503.
- La base de dades pot arribar a bloquejar-se completament.
Per evitar-ho, l'administrador de SGBD necessita eines de diagnosi (plans d'execució, vistes de sistema, logs) i coneixement dels patrons d'optimització.