shared_buffers - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

shared_buffers

Il shared_buffers parametro controlla la quantità di memoria utilizzata da PostgreSQL per memorizzare nella cache i dati in memoria. L'impostazione di questo parametro su un valore appropriato può aiutare a migliorare le prestazioni delle query.

Per Amazon RDS, il valore predefinito per shared_buffers è impostato su {DBInstanceClassMemory/32768} byte, in base alla memoria disponibile per l'istanza DB. Per Aurora, il valore predefinito è impostato su{DBInstanceClassMemory/12038,-50003}, in base alla memoria disponibile per l'istanza DB. Il valore ottimale per questo parametro dipende da diversi fattori, tra cui la dimensione del database, il numero di connessioni simultanee e la memoria di istanza disponibile.

AWS CLI sintassi

Il comando seguente viene modificato shared_buffers per uno specifico gruppo di parametri DB. Questa modifica si applica a tutte le istanze o i cluster che utilizzano il gruppo di parametri.

# Modify shared_buffers on a DB parameter group aws rds modify-db-parameter-group \ --db-parameter-group-name <parameter_group_name> \ --parameters "ParameterName=shared_buffers,ParameterValue=<new_value>,ApplyMethod=immediate" # Modify shared_buffers on a DB cluster parameter group aws rds modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name <parameter_group_name> \ --parameters "ParameterName=shared_buffers,ParameterValue=<new-value>,ApplyMethod=immediate"

Tipo: statico (l'applicazione delle modifiche richiede il riavvio)

Valore predefinito: {DBInstanceClassMemory/32768} byte in Amazon RDS for PostgreSQL, compatibile con Aurora {DBInstanceClassMemory/12038,-50003} PostgreSQL. Nella maggior parte dei casi, questa equazione risulta essere circa il 25 percento della memoria del sistema. Seguendo questa linea guida, l'shared_buffersimpostazione nel gruppo di parametri viene configurata utilizzando le unità predefinite di buffer da 8K di PostgreSQL anziché byte o kilobyte.

L'impostazione shared_buffers dei parametri può avere un impatto significativo sulle prestazioni, quindi ti consigliamo di testare accuratamente le modifiche per assicurarti che il valore sia appropriato per il tuo carico di lavoro.

Esempio

Supponiamo che tu abbia un'applicazione di servizi finanziari che esegue un database PostgreSQL su Amazon RDS o Aurora. Questo database viene utilizzato per archiviare i dati delle transazioni dei clienti. Ha un gran numero di tabelle ed è accessibile da più applicazioni su un gran numero di server. L'applicazione presenta prestazioni di query lente e un utilizzo elevato della CPU. L'utente ritiene che l'ottimizzazione del shared_buffers parametro possa contribuire a migliorare le prestazioni.

In Amazon RDS for PostgreSQL, il valore shared_buffers predefinito di {DBInstanceClassMemory/32768} è impostato su byte di memoria db.r5.xlarge disponibile in (ad esempio, 3 GB). Per determinare il valore appropriato pershared_buffers, esegui una serie di test con valori diversi dishared_buffers, iniziando dal valore predefinito della memoria disponibile e aumentando gradualmente il valore. Per ogni test, si misurano le prestazioni delle query e l'utilizzo della CPU del database.

In base ai risultati del test, si determina che impostando il valore shared_buffers fino a 8 GB si ottengono le migliori prestazioni complessive delle query e l'utilizzo della CPU per il carico di lavoro. Il valore viene determinato mediante una combinazione di test e analisi delle caratteristiche del carico di lavoro, tra cui la dimensione del database, il numero e la complessità delle query, il numero di utenti simultanei e le risorse di sistema disponibili. Dopo aver apportato la modifica, i sistemi di monitoraggio controllano le prestazioni del database per assicurarsi che il nuovo valore sia appropriato per il carico di lavoro. È quindi possibile ottimizzare i parametri aggiuntivi, se necessario, per migliorare ulteriormente le prestazioni.