Anda dapat menentukan batas atas buffer bersama saat memulai AlloyDB Omni. Jika Anda tidak menetapkan batas atas, AlloyDB Omni akan otomatis menyetel ukuran dukungan buffer bersama ke 80% dari memori sistem. Ukuran dukungan awal buffer bersama dapat berbeda dari batas atas.
AlloyDB Omni terdiri dari pekerja memori cerdas yang terus memantau status memori, dan menyesuaikan ukuran dukungan buffer bersama untuk performa terbaik saat menyimpan data dalam cache.

Secara default, parameter shared_buffers disetel ke 0, yang merupakan nilai khusus yang menetapkan batas atas ukuran cache shared buffers menjadi 80% dari memori sistem. AlloyDB Omni dimulai dari 10% batas atas shared_buffers. Jika shared_buffers diganti dengan nilai kustom, AlloyDB Omni akan menggunakan nilai tersebut sebagai batas atas ukuran shared_buffers, dan dimulai dengan ukuran kustom yang ditentukan tersebut.
Untuk menentukan ukuran kustom, Anda dapat menyetel shared_buffers ke 1GB. Metodenya bergantung pada jenis deployment Anda:
shared_buffers menggunakan salah satu metode berikut. Setelah menerapkan perubahan, Anda harus memulai ulang layanan.
Opsi 1: Edit file konfigurasi
Buka file
postgresql.confuntuk mengedit.Tambahkan atau ubah baris berikut:
shared_buffers = 1GBSimpan file dan mulai ulang layanan AlloyDB Omni:
sudo systemctl restart alloydbomniMAJOR_VERSIONGanti
MAJOR_VERSIONdengan versi utama penginstalan AlloyDB Omni Anda, seperti18.
Opsi 2: Gunakan perintah
ALTER SYSTEMHubungkan ke instance database Anda menggunakan klien SQL.
Jalankan perintah berikut:
ALTER SYSTEM SET shared_buffers = '1GB';Mulai ulang layanan AlloyDB Omni:
sudo systemctl restart alloydbomniMAJOR_VERSIONGanti
MAJOR_VERSIONdengan versi utama penginstalan AlloyDB Omni Anda, seperti18.
Mengoptimalkan performa kueri
Nilai default parameter shared_buffers berfungsi untuk skenario umum.
Namun, Anda dapat menyesuaikan nilai untuk performa terbaik.
Jika Anda memilih untuk mengandalkan nilai default shared_buffers untuk menyimpulkan batas atas buffer bersama, gunakan nilai memory.max cgroup untuk memengaruhi komputasi.
Memori columnar engine
shared_buffers dinamis tidak bergantung pada memori columnar engine. Jika columnar engine diaktifkan, ukuran shared_buffers dinamis dapat diperoleh dengan mengurangi jumlah memori yang digunakan oleh columnar engine dari 80% total memori yang tersedia untuk sistem atau cgroup.
Huge page
Huge page meningkatkan performa database. AlloyDB Omni mengelola huge page secara eksplisit jika memungkinkan, atau mengandalkan fitur huge page transparan (THP) dari sistem operasi. Jika kedua jenis huge page tidak didukung, AlloyDB Omni akan kembali ke halaman 4k, dan mencetak peringatan di log database dengan petunjuk khusus untuk menyiapkan huge page.Peringatannya akan terlihat mirip dengan berikut ini:
HINT: Please manually execute:
echo within_size | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled
sudo sysctl -w vm.nr_overcommit_hugepages="$(/usr/bin/awk '/MemTotal/ { printf "%.0f", $2/1024 }' /proc/meminfo)"
Pengelolaan memori otomatis saat runtime
AlloyDB Omni terus memantau beban sistem, dan menyesuaikan penggunaan memorinya untuk performa yang lebih baik. Secara khusus, Anda mungkin melihat hal berikut:
- Perubahan ukuran
shared_buffersdinamis - AlloyDB Omni meningkatkan ukuran
shared_buffersdinamis saat penggunaan memori sistem rendah, dan mengurangi ukuran saat penggunaan memori sistem tinggi. Ekstensi `g_memory` disertakan dalam distribusi AlloyDB Omni. Untuk mengaktifkannya dan memantau ukuran `shared_buffers` dinamis, jalankan perintah berikut:CREATE EXTENSION IF NOT EXISTS g_memory; SELECT g_dynamic_shared_size();
- Penghentian koneksi PostgreSQL saat sistem memiliki memori yang sangat rendah
-
Jika AlloyDB Omni mendeteksi bahwa sistem memiliki memori yang sangat rendah, AlloyDB Omni akan mencoba menghapus koneksi PostgreSQL yang paling banyak menggunakan memori hingga beban kembali ke tingkat yang wajar. Saat peristiwa seperti itu terjadi, AlloyDB Omni mencatat entri yang mirip dengan contoh berikut dalam log database:
WARNING: Sending SIGTERM to pid=12345 NSpid=67890 (VA size = 1024MB) (RSS size = 512MB)