Fitur pengusiran cache pada tingkat proses didukung untuk mengurangi penggunaan memori oleh koneksi persisten dan mencegah kehabisan memori akibat terlalu banyak koneksi persisten. Fitur ini menggunakan kebijakan Least Recently Used (LRU) untuk melepaskan cache yang jarang digunakan, mengurangi penggunaan memori oleh koneksi, serta meningkatkan stabilitas instance ApsaraDB RDS for PostgreSQL.
Prasyarat
Instance RDS menjalankan PostgreSQL 11 atau versi lebih baru. Jika fitur ini belum didukung, Anda harus memperbarui versi mesin minor dari instance RDS. Untuk informasi lebih lanjut, lihat Perbarui versi mesin minor.
Informasi latar belakang
Setiap kali proses backend di PostgreSQL mengakses tabel, metadata tabel tersebut disimpan dalam cache perangkat lokal Anda, dan cache tersebut tidak dilepaskan secara proaktif. Hal ini mengurangi akses disk berikutnya. Namun, koneksi persisten dapat menghasilkan sejumlah besar cache dan menyebabkan kesalahan kehabisan memori (OOM). Untuk menyelesaikan masalah ini, fitur pengusiran cache diperkenalkan untuk melepaskan cache yang jarang digunakan sesegera mungkin.
Skenario
Skema Software as a Service (SaaS) dengan sejumlah besar koneksi persisten.
Dampak
Modifikasi parameter yang terlibat dalam topik ini tidak memicu restart instance.
Catatan penggunaan
Untuk memastikan bahwa instance RDS Anda berjalan seperti yang diharapkan, beberapa cache tidak dapat diusir. Dalam kasus ekstrem, batas atas yang ditentukan untuk cache mungkin tidak sepenuhnya tercapai.
Prosedur
Cache koneksi ApsaraDB RDS for PostgreSQL terdiri dari cache berikut: relcache, syscache, dan plancache. relcache digunakan untuk menyimpan metadata tabel pengguna. syscache digunakan untuk menyimpan tuple tabel sistem. plancache digunakan untuk menyimpan rencana eksekusi yang ditentukan pengguna. ApsaraDB RDS for PostgreSQL memungkinkan Anda menyesuaikan jumlah objek yang dapat disimpan dalam relcache dan syscache. Jumlah objek yang dapat disimpan dalam plancache tidak dapat dibatasi.
Jika Anda ingin memantau penggunaan cache setiap proses, Anda harus mengeksekusi pernyataan CREATE EXTENSION rdsutils untuk menginstal ekstensi dependen dan mengatur nilai parameter rds_enable_cache_monitor menjadi on.
Jika Anda mengatur parameter
rds_enable_cache_monitormenjadion, kinerja database akan menurun, dan durasi eksekusi setiap Pernyataan SQL akan bertambah sekitar 2 milidetik.Anda hanya dapat memodifikasi parameter
rds_enable_cache_monitordi konsol ApsaraDB RDS. Untuk informasi lebih lanjut, lihat Ubah parameter instance ApsaraDB RDS for PostgreSQL.
Ubah pengaturan fitur pengusiran cache untuk koneksi saat ini
-- Aktifkan fitur pengusiran untuk relcache koneksi saat ini untuk menyimpan maksimal 1.000 tabel pengguna.
SET rds_relcache_max_cached_relations = 1000;
-- Nonaktifkan fitur pengusiran untuk relcache koneksi saat ini.
SET rds_relcache_max_cached_relations = -1;
-- Aktifkan fitur pengusiran untuk syscache koneksi saat ini untuk menyimpan tuple maksimal 10.000 tabel sistem.
set rds_syscache_max_cached_tuples = 10000;
-- Nonaktifkan fitur pengusiran untuk syscache koneksi saat ini.
set rds_syscache_max_cached_tuples = -1;Konfigurasikan fitur pengusiran cache untuk semua koneksi
Masuk ke konsol ApsaraDB RDS dan konfigurasikan parameter rds_relcache_max_cached_relations dan rds_syscache_max_cached_tuples. Untuk informasi lebih lanjut, lihat Ubah parameter instance ApsaraDB RDS for PostgreSQL.
Parameter
Parameter | Deskripsi | Pengaturan |
rds_enable_cache_monitor | Menentukan apakah akan memantau penggunaan cache setiap proses. Nilai valid:
| Anda perlu mengonfigurasi parameter ini berdasarkan kebutuhan bisnis Anda. |
rds_relcache_max_cached_relations | Jumlah maksimum tabel pengguna yang dapat disimpan untuk satu koneksi. Nilai valid: [-1, INT_MAX]. Nilai default: -1, yang menunjukkan bahwa jumlahnya tidak dibatasi. |
|
rds_syscache_max_cached_tuples | Jumlah maksimum tuple tabel sistem yang dapat disimpan untuk satu koneksi. Nilai valid: [-1, INT_MAX]. Nilai default: -1, yang menunjukkan bahwa jumlahnya tidak dibatasi. |
|