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
- Valore predefinito -
32000(numero di buffer da 8 KiB o circa 262 MB) - Valore massimo consigliato: 25% della RAM disponibile
- Riavvia il database? - Sì
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
- Valore predefinito - 115
- Riavvia il database? - SÌ
- Note - Potrebbe essere necessario scalare prima di aumentare il numero massimo di connessioni.
- Predefinito - 64
- Opzioni - Valore minimo di 10
- Riavvia il database? - SÌ
- Predefinito -
50 - Riavvia il database? - SÌ
- Note - L'impostazione del valore su
0disabilita l'uso delle transazioni preparate ed è consigliata a meno che non sia necessario utilizzarle.
- Predefinito -
local - Riavvia database - No
- Opzioni -
local,onooff - Note - L'impostazione di
synchronous_commitsu 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. Consynchronous_commitimpostato suon, viene eseguito il commit di una transazione solo quando viene scritto sul leader e almeno una replica. Pertanto, l'impostazioneonè disponibile solo per le formazioni che sono state scalate orizzontalmente ad almeno tre membri. Prima di implementare questa modifica, vedere Alta disponibilità.
- 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.
- 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.
- Predefinito -
off - Riavvia database - No
- Opzioni - Valori di
onooff - Note - L'impostazione di questo valore su
onrende i log dettagliati. Mostra inoltre le connessioni dello strumento di monitoraggio quando estrae le metriche ogni 60 secondi. Quando questo è impostato suon, 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 suoff, non vi è alcuna modifica nel comportamento all'impostazione predefinita e non viene registrata alcuna connessione. I log sono disponibili tramite l'integrazione della registrazione. Seonè impostato, i log mostrano righe simili a questo esempio, in cui il nome dell'applicazione è impostato cometest-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)
- Predefinito -
off - Riavvia database - No
- Opzioni - Valori di
onooff - Note - L'impostazione di questo valore su
onrende i log dettagliati. Mostrerà anche le disconnessioni degli strumenti di controllo quando estrae le metriche ogni 60 secondi. Quando questo è impostato suon, 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 suoff, 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. Seonè impostato, i log mostrano righe simili a questo esempio in cui il nome dell'applicazione è impostato cometest-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
- Predefinito -
100 - Riavvia database - No
- Opzioni - Valore minimo di 100
- Note - Le istruzioni che impiegano più tempo del numero specificato di millisecondi vengono registrate.
- Predefinito -
111 - Riavvia database - No
- Predefinito -
15 - Riavvia database - No
- Predefinito -
6 - Riavvia database - No
IBM Cloud® Databases for PostgreSQL Impostazioni WAL
- 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.
- Predefinito -
replica - Riavvia database - YES
- Note - Controlla il livello WAL. I valori consentiti sono
replicaological. Impostare sulogicalper utilizzare la decodifica logica. Se non si utilizza la decodifica logica, l'uso dilogicalaumenta la dimensione del WAL, con diversi svantaggi e nessun vantaggio reale.
- 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
wal2jsone non l'aumento dimax_replication_slotspuò influire sulla HA e sulle replica di sola lettura. Se non si utilizzawal2json, lasciare questa impostazione sul valore predefinito.
- 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_senderper 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 altrowal_senderrispetto al valore minimo per consumer previsto. L'utilizzo diwal2jsone non l'aumento dimax_wal_senderspuò influire sulla HA e sulle replica di sola lettura. Se non si utilizzawal2json, lasciare questa impostazione sul valore predefinito.