Anda dapat menentukan batas atas buffer bersama saat memulai AlloyDB Omni. Jika Anda tidak menetapkan batas atas, AlloyDB Omni akan otomatis menetapkan ukuran pencadangan buffer bersama ke 80% dari memori sistem. Ukuran pencadangan awal buffer bersama dapat berbeda dari batas atas.
AlloyDB Omni terdiri dari pekerja memori cerdas yang terus memantau status memori, dan menyesuaikan ukuran pendukung buffer bersama untuk performa terbaik saat melakukan caching data.
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, edit file konfigurasi postgresql.conf
. Misalnya, Anda dapat menyetel shared_buffers
ke 1GB
menggunakan salah satu cara berikut:
docker run --name CONTAINER_NAME -e INITDB_ARGS="-c shared_buffers=1GB" $image
docker run --name CONTAINER_NAME $image -c shared_buffers=1GB
Ganti
CONTAINER_NAME
dengan nama yang Anda tetapkan ke container AlloyDB Omni saat Anda menginstalnya.
Mengoptimalkan performa kueri
Nilai default parameter shared_buffers
berfungsi untuk skenario umum.
Namun, Anda dapat menyesuaikan nilai untuk mendapatkan 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 mesin berbasis kolom. Jika mesin columnar diaktifkan, ukuran shared_buffers
dinamis dapat diperoleh dengan mengurangi jumlah memori yang digunakan oleh mesin columnar dari 80% total memori yang tersedia untuk sistem atau cgroup.
Halaman besar
Halaman besar 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 halaman besar tidak didukung, AlloyDB Omni akan kembali ke halaman 4k, dan mencetak peringatan di log penampung Docker docker logs $container_name
dengan petunjuk khusus untuk menyiapkan halaman besar. Lihat Mulai AlloyDB Omni untuk mengetahui petunjuk cara memulai container.
Peringatan akan terlihat mirip dengan berikut ini:
HINT: Please either execute the all-in-one setup script:
docker run --rm --privileged $image setup-host
OR manually execute:
echo within_size | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled
sudo sysctl -w vm.nr_overcommit_hugepages=1048576
Pengelolaan memori otomatis saat runtime
AlloyDB Omni terus memantau beban sistem, dan menyesuaikan penggunaan memorinya untuk performa yang lebih baik. Secara khusus, Anda mungkin mengamati hal berikut:
- Perubahan ukuran
shared_buffers
dinamis - AlloyDB Omni meningkatkan ukuran
shared_buffers
dinamis saat penggunaan memori sistem rendah, dan mengurangi ukuran saat penggunaan memori sistem tinggi. Untuk memantau ukuranshared_buffers
dinamis, gunakan:CREATE EXTENSION IF NOT EXISTS g_memory; SELECT g_dynamic_shared_size();
- Penghentian koneksi PostgreSQL saat sistem kehabisan memori
- 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 hal berikut dalam log penampung Docker:
WARNING: Sending SIGTERM to pid=xxx NSpid=xxx (VA size = xxxMB) (RSS size = xxxMB)