全部产品
Search
文档中心

ApsaraDB RDS:Gunakan fitur pengusiran cache

更新时间:Jul 02, 2025

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.

Catatan

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_monitor menjadi on, kinerja database akan menurun, dan durasi eksekusi setiap Pernyataan SQL akan bertambah sekitar 2 milidetik.

  • Anda hanya dapat memodifikasi parameter rds_enable_cache_monitor di 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:

  • on: memantau penggunaan cache setiap proses.

  • off: tidak memantau penggunaan cache setiap proses. Ini adalah nilai default.

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.

  • Anda perlu mengonfigurasi parameter ini berdasarkan kebutuhan bisnis Anda. Jika sejumlah besar tabel digunakan untuk beban kerja Anda, Anda perlu menyetel parameter ini ke nilai besar.

  • Jika tabel partisi digunakan atau ekstensi timescaledb digunakan, kami sarankan Anda menyetel parameter ini ke -1 atau nilai besar.

  • Jika Anda menyetel parameter ini ke nilai kecil, kinerja database mungkin menurun. Kami sarankan Anda menyetel parameter ini ke nilai yang lebih besar atau sama dengan 1000.

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.

  • Anda perlu mengonfigurasi parameter ini berdasarkan kebutuhan bisnis Anda. Jika sejumlah besar tabel dan bidang digunakan untuk beban kerja Anda, Anda perlu menyetel parameter ini ke nilai besar.

  • Jika tabel partisi digunakan atau ekstensi timescaledb digunakan, kami sarankan Anda menyetel parameter ini ke -1 atau nilai besar.

  • Jika Anda menyetel parameter ini ke nilai kecil, kinerja database mungkin menurun. Kami sarankan Anda menyetel parameter ini ke nilai yang lebih besar atau sama dengan 5000.