PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Piani del negozio a colonne

A pgsql-general, Bráulio Bhavamitra chiede:

Questa è una domanda piuttosto interessante. Sostituire completamente l'attuale archivio basato su righe non sarebbe una buona idea:ci ha servito molto bene e sono abbastanza sicuro che sostituirlo interamente con un archivio a colonne sarebbe disastroso dal punto di vista delle prestazioni per i casi d'uso OLTP.

Alcune colonne. Immagine per gentile concessione di Yiming Sun su Flickr

Ciò non significa che i negozi a colonna siano una cattiva idea in generale, perché non lo sono. Hanno solo un caso d'uso più limitato rispetto a "l'intero database". Per le query analitiche su dati principalmente aggiunti, un archivio a colonne è una rappresentazione molto più appropriata rispetto al normale archivio basato su righe, ma non tutti i database sono analitici.

Tuttavia, per ottenere interessanti guadagni in termini di prestazioni, è necessario fare molto di più che modificare semplicemente lo storage sottostante:è necessario assicurarsi che il resto del sistema possa trarre vantaggio dalla rappresentazione modificata, in modo che possa eseguire query in modo ottimale; ad esempio, potresti volere aggregati che operano in modalità SIMD piuttosto che un valore alla volta come è oggi. Questa, di per sé, è una grande impresa e ci sono anche altre sfide.

A quanto pare, c'è un team in 2ndQuadrant che lavora proprio su queste questioni. Abbiamo pubblicato una patch l'anno scorso, ma non è stata particolarmente interessante:ha apportato solo un miglioramento percentuale di una cifra nei punteggi TPC-H; non abbastanza per disturbare la comunità di sviluppo (era una patch abbastanza invasiva). Vogliamo di più.

Nel nostro design, colonnare o meno sarà un'opzione:potrai dire Gentile server, per questo tavolo, gentilmente, hai impostato un archivio colonnare per me, vero? Grazie mille . E poi otterrai una tabella che potrebbe essere più lenta per l'uso regolare ma che risalterà per l'analisi. Per la maggior parte delle tue tabelle l'attuale archivio basato su righe sarà probabilmente l'opzione migliore, perché l'archivio basato su righe è molto più adatto ai casi più generali.

Non abbiamo ancora una tempistica. Resta sintonizzato.