Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memori RDS for PostgreSQL
Memori RDS for PostgreSQL dibagi menjadi bersama dan lokal.
Memori bersama dalam RDS for PostgreSQL
RDS for PostgreSQL mengalokasikan memori bersama saat instans dimulai. Memori bersama dibagi menjadi beberapa sub-area. Bagian berikut memberikan deskripsi yang paling penting.
Buffer bersama
Kumpulan buffer bersama adalah area memori RDS for PostgreSQL yang menampung semua halaman yang sedang atau telah digunakan oleh koneksi aplikasi. Halaman adalah versi memori dari blok disk. Kumpulan buffer bersama menyimpan blok data yang dibaca dari disk. Kumpulan tersebut mengurangi kebutuhan untuk membaca ulang data dari disk, sehingga membuat basis data beroperasi lebih efisien.
Setiap tabel dan indeks disimpan sebagai array halaman dengan ukuran tetap. Setiap blok berisi beberapa tuple, yang sesuai dengan baris. Tuple dapat disimpan di halaman mana pun.
Kumpulan buffer bersama memiliki memori terbatas. Jika permintaan baru memerlukan halaman yang tidak ada dalam memori, dan memori sudah tidak ada lagi, RDS for PostgreSQL mengosongkan halaman yang jarang digunakan untuk mengakomodasi permintaan tersebut. Kebijakan pengosongan diimplementasikan oleh algoritma clock sweep.
Parameter shared_buffers
menentukan berapa banyak memori server dikhususkan untuk menyimpan data dalam cache. Nilai default diatur ke {DBInstanceClassMemory/32768}
byte, berdasarkan memori yang tersedia untuk instans DB.
Buffer log write ahead (WAL)
Buffer log write-ahead (WAL) menyimpan data transaksi yang kemudian ditulis RDS for PostgreSQL ke penyimpanan persisten. Menggunakan mekanisme WAL, RDS for PostgreSQL dapat melakukan hal berikut:
-
Memulihkan data setelah kegagalan
-
Mengurangi disk I/O dengan menghindari penulisan ke disk yang sering
Ketika klien mengubah data, RDS for PostgreSQL menulis perubahan ke buffer WAL. Ketika klien mengeluarkan COMMIT
, proses penulis WAL menulis data transaksi ke file WAL.
wal_level
Parameter menentukan berapa banyak informasi yang ditulis ke WAL, dengan nilai yang mungkin sepertiminimal
,replica
, danlogical
.
Memori lokal dalam RDS for PostgreSQL
Setiap proses backend mengalokasikan memori lokal untuk pemrosesan kueri.
Area memori kerja
Area memori kerja menyimpan data sementara untuk kueri yang melakukan pengurutan dan hash. Misalnya, kueri dengan klausa ORDER BY
melakukan pengurutan. Kueri menggunakan tabel hash dalam gabungan dan agregasi hash.
work_mem
Parameter jumlah memori yang akan digunakan oleh operasi pengurutan internal dan tabel hash sebelum menulis ke file disk sementara, diukur dalam megabyte. Nilai default-nya adalah 4 MB. Beberapa sesi dapat berjalan secara bersamaan, dan setiap sesi dapat menjalankan operasi pemeliharaan secara paralel. Karena alasan ini, total memori kerja yang digunakan dapat menjadi kelipatan dari pengaturan work_mem
.
Area memori kerja pemeliharaan
Area memori kerja pemeliharaan menyimpan data untuk operasi pemeliharaan. Operasi ini termasuk memvakum, membuat indeks, dan menambahkan kunci asing.
maintenance_work_mem
Parameter menentukan jumlah maksimum memori yang akan digunakan oleh operasi pemeliharaan, diukur dalam megabyte. Nilai default-nya adalah 64 MB. Sebuah sesi basis data hanya dapat menjalankan satu operasi pemeliharaan dalam satu waktu.
Area buffer sementara
Area buffer sementara menyimpan tabel sementara untuk setiap sesi basis data.
Setiap sesi mengalokasikan buffer sementara sesuai kebutuhan hingga batas yang Anda tentukan. Saat sesi berakhir, server menghapus buffer.
temp_buffers
Parameter menetapkan jumlah maksimum buffer sementara yang digunakan oleh setiap sesi, diukur dalam megabyte. Nilai defaultnya adalah 8 MB. Sebelum penggunaan pertama tabel sementara dalam sesi, Anda dapat mengubah nilai temp_buffers
.