PostgreSQL, il quarto database e DBMS più popolare dell'anno nel 2017, è esploso in popolarità tra le comunità di sviluppo e database di tutto il mondo. Rubando quote di mercato ai leader Oracle, MySQL e Microsoft SQL Server, l'hosting PostgreSQL è anche ampiamente sfruttato da nuove aziende in spazi interessanti come IoT, e-commerce, SaaS, analisi e altro ancora.
Quali sono le tendenze nella gestione di PostgreSQL?
Abbiamo partecipato a PostgresOpen a San Francisco il mese scorso per scoprire le ultime tendenze dagli stessi esperti.
Attività di gestione di PostgreSQL che richiedono più tempo
Allora, cosa ti sta consumando tempo sul fronte della gestione di PostgreSQL? Sebbene ci siano migliaia di attività coinvolte nella gestione delle distribuzioni di produzione PostgreSQL, la gestione delle query è stata il leader forte con oltre il 30% di intervistati.
La gestione dello spazio è stata un secondo lontano con il 15% degli utenti di PostgreSQL che lo ha trovato il compito più difficile, seguito da replica, aggiornamenti e monitoraggio. Il 23% degli utenti di PostgreSQL rientra nella categoria "Tutti gli altri", composta da attività come patch, ripristini, partizionamento e migrazioni.
Gestione della ripartizione delle query PostgreSQL
Con il vantaggio nella gestione delle query PostgreSQL, ci siamo tuffati più a fondo per vedere quali attività specifiche stavano consumando il loro tempo. I risultati si sono diffusi nell'intero processo di gestione delle query, dalla strutturazione all'impostazione all'ottimizzazione dopo l'analisi.
Per spiegarlo ulteriormente, iniziamo dall'inizio del processo di gestione delle query:
Struttura della query
Il segmento più piccolo, che gestisce le strutture delle query, ha rappresentato il 22% delle risposte degli utenti PostgreSQL che hanno selezionato le query come attività di gestione più dispendiosa in termini di tempo.
Prima di iniziare, devi creare un piano di query PostgreSQL attorno ai tuoi cluster in modo che corrisponda alla struttura della query con le proprietà dei dati. Questi sono costituiti da nodi, che vanno dai nodi di scansione al livello inferiore per i ritorni di tabelle di righe non elaborate, insieme a righe non di tabella come i valori.
Analisi lenta delle query
Dopo aver stabilito la struttura, il passaggio successivo consiste nell'analizzare le query per identificare le query a esecuzione lenta che possono influire sulle prestazioni della tua applicazione. Per impostazione predefinita, le "query lente" sono definite come query che richiedono più di 100 ms.
Ottimizzazione delle query
Ora che hai identificato le tue query lente, inizia il vero lavoro:ottimizzare le tue query PostgreSQL. L'ottimizzazione delle prestazioni di Postgres può essere un compito raccapricciante, ma con un'identificazione e un'analisi adeguate, puoi affinare i colli di bottiglia e apportare le modifiche necessarie alle query e aggiungere indici dove necessario per migliorare l'esecuzione. Ecco un ottimo articolo sulle query di ottimizzazione delle prestazioni in PostgreSQL.
Ultime tendenze PostgreSQL:attività che richiedono più tempo e metriche importanti da tenere traccia dei clic per twittare
Metriche più importanti da monitorare per le prestazioni di PostgreSQL
Ora che abbiamo identificato l'attività di gestione di PostgreSQL più dispendiosa in termini di tempo, diamo uno sguardo più approfondito alle metriche importanti che gli utenti di PostgreSQL monitorano per ottimizzare le proprie prestazioni.
I risultati delle metriche PostgreSQL più importanti sono stati significativamente più uniformi rispetto alle attività di gestione, risultando in un legame a quattro vie tra statistiche di replica, utilizzo di CPU e RAM, transazioni al secondo (TPS) e query lente:
Statistiche di replica
Il monitoraggio dello stato di replica di PostgreSQL è un'attività cruciale per garantire che le repliche vengano eseguite correttamente e che le distribuzioni di produzione rimangano altamente disponibili. Il processo di replica deve essere personalizzato per soddisfare al meglio le esigenze della tua applicazione e il monitoraggio continuo degli endpoint è il modo migliore per garantire che i tuoi dati siano protetti e pronti per il ripristino.
È importante tenere traccia delle metriche sia sui server di standby che sui server primari. I server di standby devono essere monitorati per la replica in entrata e lo stato di ripristino e i server primari devono essere monitorati per la replica in uscita e gli slot di replica. Se utilizzi la replica in streaming di PostgreSQL, gli slot di replica non sono sempre necessari. La replica in streaming garantisce la disponibilità immediata dei dati sui server in standby ed è ideale per i server con TPS basso.
Utilizzo CPU e RAM
Il monitoraggio dell'utilizzo della CPU e della RAM (memoria) è una metrica fondamentale da monitorare per garantire la salute dei tuoi server PostgreSQL. Se l'utilizzo della CPU è troppo elevato, la tua applicazione subirà dei rallentamenti che faranno soffrire i tuoi utenti. È spesso il risultato di query scarsamente ottimizzate o persino di parallelismi di query elevati. Il monitoraggio della RAM è molto importante per assicurarti di avere spazio su disco sufficiente e per capire esattamente per cosa viene utilizzata la tua RAM. Si consiglia di avere circa il 25% della memoria allocata per shared_buffers. PostgreSQL inoltre imposta automaticamente la dimensione del buffer di memoria di lavoro a 4 MB, che spesso è troppo piccola e si traduce in tempi di esecuzione elevati.
Transazioni al secondo
Il monitoraggio del numero di transazioni al secondo consente di determinare il carico sul sistema e il throughput corrente. Analizzando questa metrica, si può decidere di ridimensionare il sistema di conseguenza per ottenere il throughput desiderato. Puoi anche determinare in che modo una modifica alle impostazioni di configurazione o alle risorse di sistema influisca sulla velocità effettiva.
Query lente
Le query inefficienti possono rallentare le prestazioni di PostgreSQL anche se il sistema è configurato con risorse adeguate. È sempre buona norma analizzare queste query inefficienti e risolverle. PostgreSQL fornisce un parametro chiamato log_min_duration_statement . Quando è impostato, viene registrata la durata di ogni istruzione completata se l'istruzione è stata eseguita per almeno il numero specificato di millisecondi. Una volta ottenute le query lente, è possibile eseguire EXPLAIN ANALYZE per comprendere il piano di esecuzione. Ciò ti consentirà di tenere traccia del problema e ottimizzare la query di conseguenza. Pertanto, il monitoraggio regolare delle query lente eviterà la lentezza delle prestazioni.
Ci trovi la prossima settimana all'evento PostgresConf Silicon Valley 2018 dove speriamo di scoprire ulteriori approfondimenti su ciò che è di tendenza nello spazio di gestione di PostgreSQL. Se hai domande o commenti, sentiti libero di condividerli con noi qui nei nostri commenti o su Twitter all'indirizzo @scalegridio.