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à.
Monitoraggio della cache di scrittura e degli slot logici per la replica logica di Aurora PostgreSQL
Il monitoraggio della cache di scrittura della replica logica e la gestione degli slot logici migliorano le prestazioni del cluster di database Aurora PostgreSQL. Di seguito, sono riportate ulteriori informazioni sulla cache di scrittura e sugli slot logici.
Argomenti
Monitoraggio della cache di scrittura della replica logica di Aurora PostgreSQL
Per impostazione predefinita, le versioni 14.5, 13.8, 12.12 e 11.17 e successive di Aurora PostgreSQL utilizzano una cache write-through per migliorare le prestazioni per la replica logica. Senza la cache write-through, Aurora PostgreSQL utilizza il livello di archiviazione Aurora nell'implementazione del processo di replica logica nativa di PostgreSQL. Lo fa scrivendo i dati WAL nell'archivio e quindi leggendo i dati dall'archivio per decodificarli e inviarli (replicare) alle destinazioni (sottoscrittori). Questo comportamento può causare rallentamenti durante la replica logica per i cluster database Aurora PostgreSQL.
La cache di scrittura riduce al minimo la dipendenza dal livello di archiviazione Aurora. Invece di scrivere e leggere in modo coerente da questo livello, Aurora PostgreSQL utilizza un buffer per memorizzare nella cache il flusso logico WAL da utilizzare durante il processo di replica, riducendo la necessità di accedere al disco. Questo buffer è la cache nativa di PostgreSQL utilizzata dalla replica logica, identificata nei parametri del cluster di database Aurora PostgreSQL come rds.logical_wal_cache.
Quando usi la replica logica con il cluster database Aurora PostgreSQL per le versioni che supportano la cache write-through, puoi monitorare la percentuale di riscontri della cache per vedere se funziona per il tuo caso d'uso. Per farlo, connettiti all'istanza di scrittura del cluster database Aurora PostgreSQL utilizzando psql e quindi usa la funzione Aurora aurora_stat_logical_wal_cache, come mostrato nell'esempio seguente.
SELECT * FROM aurora_stat_logical_wal_cache();
La funzione restituisce un output come il seguente:
name | active_pid | cache_hit | cache_miss | blks_read | hit_rate | last_reset_timestamp
-----------+------------+-----------+------------+-----------+----------+--------------
test_slot1 | 79183 | 24 | 0 | 24 | 100.00% | 2022-08-05 17:39...
test_slot2 | | 1 | 0 | 1 | 100.00% | 2022-08-05 17:34...
(2 rows)
I valori last_reset_timestamp sono stati abbreviati per garantire la leggibilità. Per ulteriori informazioni su questa funzione, consulta aurora_stat_logical_wal_cache.
Aurora PostgreSQL fornisce le seguenti due funzioni per il monitoraggio della cache write-through.
-
La funzione
aurora_stat_logical_wal_cache: per la documentazione di riferimento, consulta aurora_stat_logical_wal_cache. -
La funzione
aurora_stat_reset_wal_cache: per la documentazione di riferimento, consulta aurora_stat_reset_wal_cache.
Se si ritiene che la dimensione della cache WAL regolata automaticamente non sia sufficiente per i carichi di lavoro, è possibile modificare il valore di rds.logical_wal_cache manualmente. Considera i seguenti aspetti:
-
Quando il parametro
rds.logical_replicationè disabilitato,rds.logical_wal_cacheè impostato su zero (0). -
Quando il parametro
rds.logical_replicationè abilitato,rds.logical_wal_cacheha il valore predefinito 16 MB. -
Il parametro
rds.logical_wal_cacheè statico e richiede il riavvio dell’istanza database per rendere effettive le modifiche. Questo parametro è definito in termini di blocchi da 8 KB. Qualsiasi valore positivo inferiore a 32 KB viene considerato come 32 KB. Per ulteriori informazioni suwal_buffers, consultare Write Ahead Lognella documentazione PostgreSQL.
Gestione degli slot logici per Aurora PostgreSQL
L'attività di streaming viene acquisita nella vista pg_replication_origin_status. Per visualizzare il contenuto di questa vista, è possibile utilizzare la funzione pg_show_replication_origin_status(), come illustrato di seguito:
SELECT * FROM pg_show_replication_origin_status();
Puoi ottenere un elenco degli slot logici utilizzando la seguente query SQL.
SELECT * FROM pg_replication_slots;
Per eliminare uno slot logico, utilizza pg_drop_replication_slot con il nome dello slot, come illustrato nel seguente comando.
SELECT pg_drop_replication_slot('test_slot');