Memantau cache write-through dan slot logis untuk replikasi logis Aurora Postgre SQL - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memantau cache write-through dan slot logis untuk replikasi logis Aurora Postgre SQL

Pantau cache penulisan replikasi logis dan kelola slot logis untuk meningkatkan kinerja cluster Aurora Postgre DB Anda. SQL Berikut, temukan informasi lebih lanjut tentang cache tulis dan slot logis.

Memantau cache penulisan replikasi logis Aurora Postgre SQL

Secara default, Aurora Postgre SQL versi 14.5, 13.8, 12.12, dan 11.17 dan yang lebih tinggi menggunakan cache write-through untuk meningkatkan kinerja replikasi logis. Tanpa cache write-through, Aurora Postgre SQL menggunakan lapisan penyimpanan Aurora dalam implementasi proses replikasi logis Postgre asli. SQL Ia melakukannya dengan menulis WAL data ke penyimpanan dan kemudian membaca data kembali dari penyimpanan untuk memecahkan kode dan mengirim (mereplikasi) ke targetnya (pelanggan). Hal ini dapat mengakibatkan kemacetan selama replikasi logis untuk cluster Aurora Postgre DB. SQL

Cache write-through meminimalkan ketergantungan pada lapisan penyimpanan Aurora. Alih-alih secara konsisten menulis ke dan membaca dari lapisan ini, Aurora Postgre SQL menggunakan buffer untuk menyimpan WAL aliran logis untuk digunakan selama proses replikasi, mengurangi kebutuhan untuk mengakses disk. Buffer ini adalah SQL cache Postgre asli yang digunakan dalam replikasi logis dan diidentifikasi dalam parameter cluster Aurora Postgre DB sebagai. SQL rds.logical_wal_cache

Saat Anda menggunakan replikasi logis dengan cluster Aurora SQL Postgre DB Anda (untuk versi yang mendukung cache write-through), Anda dapat memantau rasio hit cache untuk melihat seberapa baik kerjanya untuk kasus penggunaan Anda. Untuk melakukannya, sambungkan ke instance tulis cluster Aurora Postgre SQL DB Anda menggunakan psql dan kemudian gunakan fungsi Auroraaurora_stat_logical_wal_cache, seperti yang ditunjukkan pada contoh berikut.

SELECT * FROM aurora_stat_logical_wal_cache();

Fungsi mengembalikan output seperti berikut ini.

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)

Nilai-nilai last_reset_timestamp telah dipersingkat untuk keterbacaan. Untuk informasi selengkapnya tentang fungsi ini, lihat aurora_stat_logical_wal_cache.

Aurora Postgre SQL menyediakan dua fungsi berikut untuk memantau cache write-through.

Jika Anda menemukan bahwa ukuran WAL cache yang disesuaikan secara otomatis tidak cukup untuk beban kerja Anda, Anda dapat mengubah nilai secara rds.logical_wal_cache manual. Pertimbangkan hal berikut:

  • Ketika rds.logical_replication parameter dinonaktifkan, rds.logical_wal_cache diatur ke nol (0).

  • Ketika rds.logical_replication parameter diaktifkan, rds.logical_wal_cache memiliki nilai default 16 MB.

  • rds.logical_wal_cacheParameternya statis dan memerlukan reboot instance database agar perubahan diterapkan. Parameter ini didefinisikan dalam hal blok 8 Kb. Perhatikan bahwa setiap nilai positif kurang dari 32 Kb diperlakukan sebagai 32 Kb. Untuk informasi selengkapnya, wal_buffers lihat Menulis Ahead Log di dokumentasi PostgreSQL.

Mengelola slot logis untuk Aurora Postgre SQL

Aktivitas streaming ditangkap dalam tampilan pg_replication_origin_status. Untuk melihat konten tampilan ini, Anda dapat menggunakan fungsi pg_show_replication_origin_status(), seperti yang ditunjukkan berikut:

SELECT * FROM pg_show_replication_origin_status();

Anda bisa mendapatkan daftar slot logis Anda dengan menggunakan SQL kueri berikut.

SELECT * FROM pg_replication_slots;

Untuk meletakkan slot logis, gunakan pg_drop_replication_slot dengan nama slot, seperti yang ditunjukkan dalam perintah berikut.

SELECT pg_drop_replication_slot('test_slot');