AnalyticDB for PostgreSQL adalah layanan siap pakai yang cocok untuk berbagai skenario. Anda juga dapat mengonfigurasi parameter database untuk meningkatkan kinerja AnalyticDB for PostgreSQL dan memenuhi kebutuhan bisnis tertentu.
Tingkat parameter
AnalyticDB for PostgreSQL menyediakan empat tingkat parameter. Beberapa parameter hanya dapat diatur pada tingkat tertentu.
Tingkat | Ruang lingkup efektif | Metode pengaturan |
Tingkat sistem | Semua pengguna dari semua database dalam suatu instans | Ajukan tiket untuk menghubungi staf O&M. |
Tingkat database | Semua sesi dalam database yang ditentukan | Jalankan pernyataan berikut: |
Tingkat peran | Semua sesi dari pengguna yang ditentukan | Jalankan pernyataan berikut: |
Tingkat sesi | Sesi saat ini | Jalankan pernyataan berikut: |
Tabel berikut mencantumkan parameter tingkat sistem yang dapat dimodifikasi dengan mengajukan tiket.
Parameter | Nilai default | Tipe data/Satuan | Nilai valid |
gp_autostats_mode | ON_NO_STATS | STRING | NONE, ON_CHANGE, dan ON_NO_STATS |
gp_autostats_mode_in_functions | NONE | STRING | NONE, ON_CHANGE, dan ON_NO_STATS |
gp_max_slices | 50 | INT | 0 hingga 1000 |
log_rotation_size | 102400 | KB | 0 hingga 4194304 |
master.rds_enable_vmem_protect | on | STRING | on dan off |
master.rds_max_non_super_conns | 500 | INT | 10 hingga 1000 |
max_stack_depth | 2048 | KB | 100 hingga 2048000 |
max_statement_mem | 2048000 | KB | 32768 hingga 2147483647 |
optimizer | on | STRING | on dan off |
random_page_cost | 4 | DOUBLE | 0 hingga 1000 |
rds.rds_enable_aliyun_oss_endpoint | on | STRING | on dan off |
rds.rds_enable_oss_endpoint_whitelist_check | on | STRING | on dan off |
rds_max_super_conns | 50 | INT | 10 hingga 100 |
segment.rds_enable_vmem_proctect | off | STRING | on dan off |
segment.rds_max_non_super_conns | 1000 | INT | 10 hingga 3000 |
statement_mem | 2047000 | KB | 50 hingga 2147483647 |
statement_timeout | 10800000 | INT | 0 hingga 2147483647 |
Untuk informasi lebih lanjut tentang parameter tersebut, lihat Parameter Konfigurasi.
Kami menyarankan Anda memprioritaskan penggunaan parameter pada tingkat sesi, dan hanya memodifikasi parameter pada tingkat yang lebih tinggi jika yakin bahwa perubahan tersebut tidak akan memengaruhi pengguna lain.
Deskripsi parameter
Tabel berikut menjelaskan parameter terkait kinerja dari AnalyticDB for PostgreSQL.
Parameter Terkait Koneksi
Parameter
Kondisi untuk berlaku
Ketergantungan
Deskripsi
max_connections
Restart instans
Nilai parameter ini pada node komputasi harus tiga hingga lima kali nilai parameter ini pada node koordinator.
Jumlah maksimum koneksi bersamaan antara node dan server database. Parameter ini harus diatur secara terpisah untuk masing-masing node koordinator dan komputasi. Kami menyarankan Anda menyesuaikan nilai rds_max_non_super_conns alih-alih nilai max_connections. Dalam skenario dengan koneksi singkat yang sangat konkuren, Anda dapat memodifikasi parameter rds_max_non_super_conns menjadi nilai antara 500 dan nilai max_connections. Parameter rds_max_super_conns terkait dengan superuser dan biasanya tidak perlu disesuaikan.
max_prepared_transactions
Restart instans
Kami menyarankan Anda mengatur parameter ini ke nilai yang sama dengan nilai max_connections.
Dua kali nilai max_prepared_transactions harus lebih besar dari nilai rds_max_non_super_conns ditambah nilai rds_max_super_conns.
Jumlah transaksi dalam status commit dua fase (2PC). Kami menyarankan Anda mengatur parameter ini ke nilai yang sama dengan nilai max_connections. Jika terjadi kesalahan dalam skenario dengan konkurensi tinggi, Anda harus meningkatkan nilai ini.
rds_max_non_super_conns
Muat ulang konfigurasi
Nilai ini harus kurang dari nilai max_connections.
Nilai rds_max_non_super_conns ditambah nilai rds_max_super_conns harus kurang dari atau sama dengan nilai max_connections.
Nilai parameter ini pada node komputasi harus tiga hingga lima kali nilai parameter ini pada node koordinator.
Jumlah maksimum koneksi yang dapat digunakan oleh non-superuser.
rds_max_super_conns
Muat ulang konfigurasi
Nilai ini harus kurang dari nilai max_connections.
Nilai rds_max_non_super_conns ditambah nilai rds_max_super_conns harus kurang dari atau sama dengan nilai max_connections.
Nilai parameter ini pada node komputasi harus tiga hingga lima kali nilai parameter ini pada node koordinator.
Jumlah maksimum koneksi yang dapat digunakan oleh superuser.
Parameter Kontrol Memori
Parameter
Nilai valid/Satuan
Kondisi untuk berlaku
Ketergantungan
Deskripsi
shared_buffers
KB
Restart instans
Jika sebagian besar data disimpan dalam tabel berorientasi baris, kami menyarankan Anda mengatur nilai ini menjadi 25% dari ukuran memori instans atau sedikit lebih tinggi untuk node komputasi.
Ukuran buffer bersama. Parameter ini harus diatur secara terpisah untuk masing-masing node koordinator dan komputasi. Halaman cache pada node koordinator berisi tabel kamus data, dan halaman cache pada node komputasi berisi tabel berorientasi baris. Tabel kolom dioptimalkan-append (AOCO) tidak dipengaruhi oleh ukuran buffer bersama. Dalam kebanyakan kasus, parameter ini tidak perlu dimodifikasi. Jika lebih dari 100.000 tabel dibuat, kami menyarankan Anda meningkatkan nilai ini untuk node koordinator dan komputasi. Jika sebagian besar data disimpan dalam tabel berorientasi baris, kami menyarankan Anda meningkatkan nilai ini untuk node komputasi.
temp_buffers
KB
Muat ulang konfigurasi
Tidak ada
Ukuran buffer sementara. Buffer sementara digunakan untuk sesi database mengakses tabel sementara. Nilai default parameter ini adalah 8 MB. Untuk meningkatkan kinerja akses ke tabel sementara yang besar, Anda dapat memodifikasi parameter ini untuk sesi tertentu.
gp_vmem_protect_limit
KB
Restart instans
gp_vmem_protect_limit = gp_vmem/acting_primary_segments
Jumlah maksimum memori yang dapat digunakan oleh semua proses postgres pada node komputasi. Satuan: MB. Kueri gagal jika ukuran memori yang lebih besar dari nilai ini diperlukan. Parameter ini harus diatur secara terpisah untuk masing-masing node komputasi utama dan sekunder.
Anda dapat memperkirakan nilai yang sesuai untuk parameter ini berdasarkan rumus berikut:
gp_vmem = ((SWAP + RAM) - (7.5 GB + 0.05 × RAM))/1.7 gp_vmem_protect_limit = gp_vmem/acting_primary_segmentsNilai acting_primary_segment bisa berupa jumlah node komputasi utama atau gabungan node komputasi utama dan sekunder. Jika kueri Anda gagal, Anda harus meningkatkan nilai ini.
CatatanJika Anda ingin menetapkan batas memori untuk antrian sumber daya, kami menyarankan Anda memodifikasi parameter antrian sumber daya. Untuk informasi lebih lanjut, lihat Gunakan antrian sumber daya untuk manajemen beban kerja.
gp_vmem_protect_segworker_cache_limit
KB
Restart instans
Tidak ada
Cache maksimum proses eksekusi kueri. Jika Anda memiliki sejumlah besar koneksi atau proses idle, Anda mungkin perlu menurunkan nilai ini untuk melepaskan lebih banyak memori dari node komputasi. Parameter ini harus diatur secara terpisah untuk masing-masing node komputasi.
gp_resqueue_memory_policy
none, auto, dan eager_free
Muat ulang konfigurasi
Tidak ada
Kebijakan manajemen memori yang digunakan dalam AnalyticDB for PostgreSQL. Rencana kueri berisi beberapa tahap. Jika parameter ini diatur ke eager_free, AnalyticDB for PostgreSQL melepaskan memori yang dialokasikan untuk tahap tersebut di akhir tahap, dan mengalokasikan memori ke tahap berikutnya. Nilai eager_free mengurangi kemungkinan kekurangan memori tetapi menimbulkan overhead kinerja tambahan. Jika parameter ini diatur ke auto, penggunaan memori kueri dikontrol berdasarkan statement_mem dan batas memori antrian sumber daya.
statement_mem
KB
Muat ulang konfigurasi
Parameter ini valid ketika gp_resqueue_memory_policy diatur ke auto.
Nilai ini tidak boleh lebih besar dari nilai max_statement_mem.
Memori host yang dialokasikan untuk setiap kueri. Jumlah memori yang dialokasikan berdasarkan parameter ini tidak boleh melebihi max_statement_mem atau batas memori pada antrian sumber daya yang digunakan untuk mengirimkan kueri. Jika gp_resqueue_memory_policy diatur ke auto, penggunaan memori kueri dikontrol berdasarkan statement_mem dan batas memori antrian sumber daya.
Jika lebih banyak memori diperlukan untuk kueri, file spill sementara pada disk digunakan.
Anda dapat memperkirakan nilai yang sesuai untuk parameter ini berdasarkan rumus berikut:
(gp_vmem_protect_limit GB × 0.9)/max_expected_concurrent_queriesJika gp_vmem_protect_limit diatur ke 8192 MB (8 GB) dan maksimum 40 kueri bersamaan dengan buffer 10% diasumsikan, nilai berikut dapat dihitung:
(8GB × 0.9)/40 = 184 MB
max_statement_mem
KB
Muat ulang konfigurasi
(seghost_physical_memory)/(average_number_concurrent_queries)
Jumlah maksimum memori yang dapat dialokasikan untuk kueri. Parameter ini membantu menghindari kesalahan kehabisan memori pada node komputasi selama pemrosesan kueri jika statement_mem diatur ke nilai tinggi. Jika gp_resqueue_memory_policy diatur ke auto, penggunaan memori kueri dikontrol berdasarkan statement_mem dan batas memori antrian sumber daya. Nilai ini dapat dihitung berdasarkan rumus berikut dengan mempertimbangkan konfigurasi host node komputasi tunggal:
(seghost_physical_memory)/(average_number_concurrent_queries)
Parameter Terkait Beban Kerja
Parameter
Nilai valid/Tipe data
Kondisi untuk berlaku
Ketergantungan
Deskripsi
gp_resqueue_priority
BOOLEAN
Restart instans
Tidak ada
Menentukan apakah akan mengaktifkan atau menonaktifkan prioritas kueri. Jika prioritas kueri dinonaktifkan, pengaturan prioritas yang ada tidak dievaluasi saat runtime kueri. Kami menyarankan Anda menonaktifkan antrian prioritas dalam skenario yang memerlukan kinerja kueri tinggi.
gp_resqueue_priority_cpucores_per_segment
0.1 hingga 512.0
Restart instans
Tidak ada
Jumlah core CPU yang dialokasikan untuk setiap node komputasi dari suatu instans, yang ditentukan saat Anda membuat instans. Jika parameter ini dikonfigurasi secara tidak tepat, CPU mungkin kurang dimanfaatkan, dan prioritas kueri mungkin tidak berfungsi dengan baik.
gp_resqueue_priority_sweeper_interval
500 ms hingga 15000 ms
Restart instans
gp_resqueue_priority
Interval penghitungan ulang pemanfaatan CPU untuk semua pernyataan. Saat pernyataan sedang dieksekusi, bagian CPU-nya dihitung berdasarkan prioritas dan gp_resqueue_priority_cpucores_per_segment. Semakin kecil interval dan semakin sering perhitungan, semakin baik hasil yang dicapai oleh pengaturan prioritas tetapi semakin besar overhead.