Memantau cache write-through dan slot logis untuk replikasi logis Aurora PostgreSQL - 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 PostgreSQL

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

Memantau cache tulis-melalui replikasi logis Aurora PostgreSQL

Secara default, Aurora PostgreSQL versi 14.5, 13.8, 12.12, dan 11.17 serta yang lebih tinggi menggunakan cache write-through untuk meningkatkan performa replikasi logis. Tanpa cache write-through, Aurora PostgreSQL menggunakan lapisan penyimpanan Aurora dalam implementasi proses replikasi logis PostgreSQL asli. Aurora PostgreSQL melakukannya dengan menulis data WAL 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 klaster DB Aurora PostgreSQL.

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

Saat Anda menggunakan replikasi logis dengan klaster DB Aurora PostgreSQL Anda (untuk versi yang mendukung cache write-through), Anda dapat memantau rasio hit cache untuk melihat seberapa baik kerjanya untuk kasus penggunaan. Untuk melakukannya, hubungkan ke instans tulis klaster DB Aurora PostgreSQL Anda menggunakan psql, lalu gunakan fungsi Aurora aurora_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 PostgreSQL menyediakan dua fungsi berikut untuk memantau cache write-through.

Jika Anda menemukan bahwa ukuran cache WAL 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 PostgreSQL

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 kueri SQL 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');