Modifica della configurazione Databases for PostgreSQL

IBM Cloud® Databases for PostgreSQL ti consente di modificare alcune delle impostazioni di configurazione di PostgreSQL in modo da poter ottimizzare i database PostgreSQL per il tuo caso d'uso. Per apportare modifiche permanenti alla configurazione del database, utilizza Cloud Databases CLI plug-in o API per scrivere le modifiche nel file di configurazione per la tua distribuzione.

La configurazione è definita in un schema. Per apportare una modifica, invii un oggetto JSON con le impostazioni e i relativi nuovi valori all'API o alla CLI. Ad esempio, per impostare l'impostazione max_connections su 150, è necessario fornire:

{"configuration":{"max_connections":150}}

alla CLI o all'API.

Per ulteriori informazioni, vedere Gestione delle connessioni PostgreSQL.

Utilizzo della CLI con Databases for PostgreSQL

Puoi verificare la configurazione predefinita della tua distribuzione con il comando deployment-configuration-schema. Il risultato del deployment-configuration-schema comando mostra solo la configurazione predefinita, anche dopo aver modificato la configurazione. Per visualizzare le modifiche specifiche del database, eseguire una query direttamente sul database.

ibmcloud cdb deployment-configuration-schema <INSTANCE_NAME_OR_CRN>

Allo stesso modo, modificare la propria configurazione con il comando deployment-configuration.

ibmcloud cdb deployment-configuration <INSTANCE_NAME_OR_CRN> [@JSON_FILE | JSON_STRING]

Il comando legge le modifiche che si desidera apportare dall'oggetto JSON o da un file. Per ulteriori informazioni, consultare la pagina di riferimento.

Utilizzo dell'API con IBM Cloud® Databases for PostgreSQL

I due endpoint di configurazione della distribuzione consentono di visualizzare lo schema di configurazione e modificare la configurazione. Per visualizzare lo schema di configurazione, inviare una richiesta GET a /deployments/{id}/configuration/schema.

Per modificare la configurazione, inviare le impostazioni che si desidera modificare come un oggetto JSON nel corpo della richiesta di una richiesta PATCH a /deployments/{id}/configuration.

Per ulteriori informazioni, consultare il riferimento all'API.

Impostazioni di configurazione disponibili IBM Cloud® Databases for PostgreSQL

Questa sezione fornisce informazioni sulle impostazioni di configurazione disponibili per l' IBM Cloud Databases for PostgreSQL. Per suggerire un'impostazione di configurazione non elencata qui come miglioramento del prodotto, invia un'idea al portale delle idee dell' IBM. Se preferisci, puoi limitare la visualizzazione solo ai miglioramenti di IBM Cloud su IBM Cloud Ideas.

IBM Cloud® Databases for PostgreSQL impostazioni del fuso orario

Il fuso orario per le distribuzioni IBM Cloud® Databases for PostgreSQL è sempre UTC (Coordinated Universal Time). Questa impostazione non è configurabile dai client.

IBM Cloud® Databases for PostgreSQL impostazioni di memoria

shared_buffers

  • Valore predefinito - 32000 (numero di buffer da 8 KiB o circa 262 MB)
  • Valore massimo consigliato: 25% della RAM disponibile
  • Riavvia il database? -

L'allocazione di memoria consigliata per shared_buffers è il 25% della RAM della distribuzione. L'impostazione di shared_buffers su un valore più alto può causare problemi di memoria che causano l'arresto anomalo del database e potrebbero ridurre le prestazioni del tuo database poiché i dati sono probabilmente già memorizzati nel buffer dal sistema operativo. L'impostazione di shared_buffers su uguale, quasi uguale o superiore alla quantità di memoria assegnata impedisce l'avvio del database. L'impostazione specifica il numero di 8 buffer di KiB memoria condivisa.

Ad esempio, 1 GB di spazio shared_buffers è 1048576 KiB e (1048576 KiB / 8 KiB) è 131072 buffer. La tua distribuzione può utilizzare una RAM aggiuntiva per la memorizzazione nella cache e le prestazioni, anche senza assegnarla a shared_buffers. Non devi configurare il database per utilizzare tutta la RAM assegnata affinché la tua distribuzione possa utilizzarla.

Per i carichi di lavoro esistenti o quando si ridimensiona la RAM, l'aumento della memoria nei buffer condivisi potrebbe non essere la soluzione migliore. Invece, tenere traccia della tabella e dei rapporti di riscontri della cache dell'indice. Se i tassi di utilizzo della cache sono negli anni ' 90, lasciare che il sistema operativo utilizzi la memoria in altre aree invece di aumentare shared_buffers.

È possibile utilizzare queste query come utente admin o qualsiasi utente con il ruolo pg_monitor per tenere traccia del tasso di riscontri nella cache:

tables

SELECT
  sum(heap_blks_read) as heap_read,
  sum(heap_blks_hit)  as heap_hit,
  sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) as table_hit_ratio
FROM
  pg_statio_user_tables;

Indici

SELECT
  sum(idx_blks_read) as idx_read,
  sum(idx_blks_hit)  as idx_hit,
  (sum(idx_blks_hit) - sum(idx_blks_read)) / sum(idx_blks_hit) as index_hit_ratio
FROM
pg_statio_user_indexes;

Il valore work_mem viene automaticamente regolato in relazione ai valori di configurazione shared_buffer e max_connection.

IBM Cloud® Databases for PostgreSQL impostazioni generali

max_connections

max_locks_per_transaction

  • Predefinito - 64
  • Opzioni - Valore minimo di 10
  • Riavvia il database? -

max_prepared_transactions

  • Predefinito - 50
  • Riavvia il database? -
  • Note - L'impostazione del valore su 0 disabilita l'uso delle transazioni preparate ed è consigliata a meno che non sia necessario utilizzarle.

synchronous_commit

  • Predefinito - local
  • Riavvia database - No
  • Opzioni - local, on o off
  • Note - L'impostazione di synchronous_commit su off aumenta il tasso di commit della transazione a scapito di una perdita di transazioni sottoposte a commit se si verifica una chiusura non pulita. Con synchronous_commit impostato su on, viene eseguito il commit di una transazione solo quando viene scritto sul leader e almeno una replica. Pertanto, l'impostazione on è disponibile solo per le formazioni che sono state scalate orizzontalmente ad almeno tre membri. Prima di implementare questa modifica, vedere Alta disponibilità.

effective_io_concurrency

  • Predefinito - 12
  • Riavvia database - No
  • Note - Si consiglia di lasciare questa impostazione come predefinita. Aumentarlo solo se sono state eseguite query SQL e sono state osservate scansioni di heap bitmap inefficienti. Poiché IOPS è legato alla dimensione del disco, non è consigliabile aumentare questa impostazione su dischi predefiniti o di dimensioni inferiori.

deadlock_timeout

  • Predefinito - 10000
  • Riavvia database - No
  • Opzioni - Valore minimo di 100
  • Note - Il numero di millisecondi da attendere prima di controllare il deadlock e la durata in cui vengono registrate le attese di blocco. Log disponibili tramite l'integrazione della registrazione. L'impostazione di questo valore troppo basso influisce negativamente sulle prestazioni.

log_connections

  • Predefinito - off
  • Riavvia database - No
  • Opzioni - Valori di on o off
  • Note - L'impostazione di questo valore su on rende i log dettagliati. Mostra inoltre le connessioni dello strumento di monitoraggio quando estrae le metriche ogni 60 secondi. Quando questo è impostato su on, si consiglia di impostare il nome_applicazione nell'URI della connessione per mantenere una panoramica nei log, poiché gli indirizzi IP mostrati sono gli IP interni Kubernetes. I dettagli sulla modifica dell'URI di collegamento sono disponibili nella documentazionePostgreSQL. Quando è impostato su off, non vi è alcuna modifica nel comportamento all'impostazione predefinita e non viene registrata alcuna connessione. I log sono disponibili tramite l'integrazione della registrazione. Se on è impostato, i log mostrano righe simili a questo esempio, in cui il nome dell'applicazione è impostato come test-app:
2021-03-01 10:27:56 UTC [[unknown]] [00000] [708]: [2-1] user=admin,db=ibmclouddb,client=127.0.0.1 LOG:  connection authorized: user=admin database=ibmclouddb application_name=test-app SSL enabled (protocol=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384, bits=256, compression=off)

log_disconnections

  • Predefinito - off
  • Riavvia database - No
  • Opzioni - Valori di on o off
  • Note - L'impostazione di questo valore su on rende i log dettagliati. Mostrerà anche le disconnessioni degli strumenti di controllo quando estrae le metriche ogni 60 secondi. Quando questo è impostato su on, si consiglia di impostare il nome_applicazione nell'URI della connessione per mantenere una panoramica nei log, poiché gli indirizzi IP mostrati sono gli IP interni Kubernetes. I dettagli sulla modifica dell'URI di collegamento sono disponibili nella documentazionePostgreSQL. Se impostato su off, non vi è alcuna modifica nel comportamento rispetto all'impostazione predefinita e non viene registrata alcuna disconnessione. I log sono disponibili tramite l'integrazione della registrazione. Se on è impostato, i log mostrano righe simili a questo esempio in cui il nome dell'applicazione è impostato come test-app:
2021-03-01 10:27:56 UTC [test-app] [00000] [708]: [3-1] user=admin,db=ibmclouddb,client=127.0.0.1 LOG:  disconnection: session time: 0:00:00.793 user=admin database=ibmclouddb host=127.0.0.1 port=50638

log_min_duration_statement

  • Predefinito - 100
  • Riavvia database - No
  • Opzioni - Valore minimo di 100
  • Note - Le istruzioni che impiegano più tempo del numero specificato di millisecondi vengono registrate.

tcp_keepalives_idle

  • Predefinito - 111
  • Riavvia database - No

tcp_keepalives_interval

  • Predefinito - 15
  • Riavvia database - No

tcp_keepalives_count

  • Predefinito - 6
  • Riavvia database - No

IBM Cloud® Databases for PostgreSQL Impostazioni WAL

archive_timeout

  • Predefinito - 1800
  • Riavvia database - No
  • Opzioni - Valore minimo di 300
  • Note - Il numero di secondi da attendere prima di forzare un passaggio al successivo file WAL. Se il numero di secondi è trascorso e se si è verificata un'attività del database, il server passa a un nuovo segmento. Limita efficacemente la quantità di tempo in cui i dati possono rimanere non archiviati.

Le tre impostazioni successive wal_level, max_replication_slots e max_wal_senders consentono l'utilizzo del plug-in di decodifica logica wal2json. Se non si utilizza questo plug - in, lasciare queste impostazioni predefinite.

wal_level

  • Predefinito - replica
  • Riavvia database - YES
  • Note - Controlla il livello WAL. I valori consentiti sono replica o logical. Impostare su logical per utilizzare la decodifica logica. Se non si utilizza la decodifica logica, l'uso di logical aumenta la dimensione del WAL, con diversi svantaggi e nessun vantaggio reale.

max_replication_slots

  • Predefinito - 10
  • Riavvia database - YES
  • Note - Il numero massimo di slot di replica definiti simultaneamente. Il numero minimo e predefinito di slot è 10. Venti slot sono riservati per uso interno dalla tua distribuzione per scopi HA (High - Availability). Per utilizzare gli slot, è necessario impostare il valore superiore a 20 e disporre di uno slot per consumer. Aggiungere un ulteriore slot rispetto al minimo per il consumer previsto. L'utilizzo di wal2json e non l'aumento di max_replication_slots può influire sulla HA e sulle replica di sola lettura. Se non si utilizza wal2json, lasciare questa impostazione sul valore predefinito.

max_wal_senders

  • Predefinito - 12
  • Riavvia database - YES
  • Note - Il numero massimo di processi mittente WAL in esecuzione simultaneamente. Il valore predefinito e minimo è 12. È necessario un wal_sender per consumer. Venti slot sono riservati per uso interno dalla tua distribuzione per scopi HA (High - Availability). È necessario impostare il valore su 20 e si consiglia di aggiungere un altro wal_sender rispetto al valore minimo per consumer previsto. L'utilizzo di wal2json e non l'aumento di max_wal_senders può influire sulla HA e sulle replica di sola lettura. Se non si utilizza wal2json, lasciare questa impostazione sul valore predefinito.