Salta el contingut

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ó.


Recursos recomanats