← Tutti gli episodi
Copertina di Tu dici cosa, lui decide come: il pianificatore
Stagione 53 · Episodio 005

Tu dici cosa, lui decide come: il pianificatore

12 settembre 2026 4:51
0:00 4:51

Ciao, e benvenuto nella quinta puntata della cinquantatreesima stagione. Nella seconda puntata abbiamo detto che a Postgres descrivi cosa vuoi, non come ottenerlo. Oggi guardiamo chi si occupa del come, cioè la parte che gli deleghi, e scopriamo che è uno dei componenti più intelligenti dell'intero sistema. Oggi capiamo il pianificatore.

Partiamo dal problema nascosto, perché è più profondo di quanto sembri. Quando chiedi a Postgres dammi questi dati, tu hai detto solo il cosa. Ma per ogni domanda esistono tanti modi diversi di trovare la risposta, e possono differire enormemente in velocità. Prendo i dati in questo ordine o in quello? Uso una scorciatoia o leggo tutto? Unisco prima questa tabella o quell'altra? Alcune strade impiegano un millesimo di secondo, altre, per la stessa identica risposta, impiegano minuti. Qualcuno deve scegliere la strada giusta. E quel qualcuno, in Postgres, è il pianificatore.

Voglio dirti cosa fa, perché è sorprendente. Il pianificatore prende la tua richiesta e, prima di eseguirla, immagina i diversi modi possibili di soddisfarla. Poi, per ciascuno, stima quanto costerebbe: quanti dati dovrebbe leggere, quanto lavoro servirebbe. E infine sceglie il piano che stima più economico, e solo quello esegue. È un piccolo motore decisionale basato sui costi: non prova a caso, ragiona su quale strada convenga, e lo fa in una frazione di secondo, per ogni singola richiesta che gli fai.

Voglio darti l'immagine che rende chiara questa idea, perché la usi ogni giorno. Pensa a un navigatore satellitare. Tu gli dici solo la destinazione, il cosa. Lui conosce tante strade possibili, stima il traffico e la lunghezza di ciascuna, e sceglie quella che prevede più veloce. Non ti fa scegliere tu la strada, e non le prova tutte guidando: le calcola in testa e ti dà la migliore. Il pianificatore di Postgres è esattamente questo, per i tuoi dati: tu dai la meta, lui trova il percorso, ogni volta, valutando le opzioni prima di partire.

Voglio dirti su cosa si basa, perché è la sua forza e la sua debolezza. Per stimare i costi, il pianificatore non tira a indovinare: si affida a statistiche sui tuoi dati. Quante righe ci sono in questa tabella, quanto sono vari i valori in questa colonna, quanto è raro ciò che stai cercando. Sono come le informazioni sul traffico del navigatore: gli servono per fare stime sensate. Se le statistiche sono buone e aggiornate, sceglie quasi sempre benissimo. Postgres le raccoglie da solo, in sottofondo, mentre i dati cambiano.

Voglio essere onesto sui suoi limiti, perché contano. Ma il pianificatore non è infallibile, ed è giusto saperlo. Se le statistiche sono vecchie, perché i dati sono cambiati molto in fretta, le sue stime sbagliano, e può scegliere una strada lentissima convinto che sia veloce, come un navigatore con informazioni sul traffico di ieri. E certe richieste, scritte in modo contorto, lo mettono in difficoltà. Ecco perché, quando qualcosa va lento, il primo gesto di chi sa è chiedere a Postgres di mostrare il piano che ha scelto: leggere quel piano, capire perché ha deciso così, è una delle abilità più utili che esistano. Non puoi migliorare ciò che non capisci.

Voglio collegarlo alla tesi di sempre, perché chiude un cerchio. È il solito filo di questo podcast: la magia è comoda finché funziona, ma quando si inceppa devi poter guardare sotto. Il pianificatore ti regala di non pensare al come, ed è meraviglioso. Ma il giorno in cui una richiesta diventa lenta, la differenza tra chi resta impotente e chi risolve in dieci minuti è tutta lì: aver capito che sotto il dichiarativo c'è un motore che decide, e saper leggere le sue decisioni. Capire il modello sotto la magia non serve tutti i giorni, ma il giorno che serve, vale tutto.

Voglio trarre la lezione generale, perché va oltre i database. La lezione è che dietro ogni sistema dichiarativo, dietro ogni tu dici cosa e io faccio il come, c'è sempre un pezzo che prende quelle decisioni al posto tuo. Finché sceglie bene, non ci pensi. Ma quel pezzo esiste, ha una logica, si basa su informazioni che possono essere giuste o sbagliate. Fidarsi della magia va benissimo. Sapere che sotto c'è un motore che ragiona, e come ragiona, è ciò che ti rende capace di aggiustarla quando serve.

Per oggi ci fermiamo qui. Abbiamo visto il pianificatore. Tu descrivi il cosa, ma per ogni domanda ci sono tanti modi di trovare la risposta, con velocità diversissime, e qualcuno deve scegliere: quel qualcuno è il pianificatore. Immagina i piani possibili, ne stima il costo, ed esegue solo il più economico, come un navigatore che calcola la strada migliore verso la meta che gli dai. Si basa su statistiche sui tuoi dati, che Postgres aggiorna da solo. Ma non è infallibile: con statistiche vecchie sbaglia, e allora bisogna leggere il piano che ha scelto, perché non puoi migliorare ciò che non capisci. La lezione: dietro ogni sistema dichiarativo c'è un motore che decide, e sapere come ragiona ti fa padrone della magia. Nella prossima puntata: trovare senza leggere tutto, gli indici. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.