Topik ini menjelaskan fitur global plan cache (GPC) dari PolarDB for PostgreSQL.
Informasi latar belakang
Pada versi sebelumnya PolarDB, cache rencana terikat pada prepared statements. Pendekatan ini memiliki dua kelemahan:
Cache rencana terisolasi pada masing-masing koneksi dan tidak dapat dibagikan.
Setiap koneksi mempertahankan cache rencananya sendiri, yang mengakibatkan penggunaan memori tinggi.
PolarDB for PostgreSQL memperkenalkan fitur GPC untuk mengatasi masalah tersebut dengan memungkinkan koneksi berbeda berbagi cache rencana yang sama.
Rencana dapat dibagikan antara prepared statements dan koneksi yang berbeda. Untuk aplikasi dengan banyak pernyataan SQL yang berbeda, GPC secara signifikan mengurangi penggunaan memori dan menurunkan risiko error out-of-memory (OOM). Mekanisme caching rencana yang efisien ini juga mengurangi biaya pembuatan execution plan, sehingga meningkatkan performa.
Rencana hanya dapat dibagikan jika kunci kuerinya sama. Kunci kueri terdiri atas komponen-komponen berikut:
Teks kueri.
ID database.
Jalur pencarian objek (object search path).
ID pengguna.
Penerapan
Fitur ini tersedia untuk versi-versi berikut PolarDB for PostgreSQL:
PostgreSQL 18 (versi mesin minor 2.0.18.0.1.0 atau lebih baru)
PostgreSQL 17 (versi mesin minor 2.0.17.2.1.0 atau lebih baru)
PostgreSQL 16 (versi mesin minor 2.0.16.3.1.1 atau lebih baru)
PostgreSQL 15 (versi mesin minor 2.0.15.7.1.1 atau lebih baru)
PostgreSQL 14 (versi mesin minor 2.0.14.9.15.0 atau lebih baru)
PostgreSQL 11 (versi mesin minor 2.0.11.9.28.0 atau lebih baru)
CatatanAnda dapat melihat nomor versi mesin minor di Konsol atau menjalankan pernyataan
SHOW polardb_version;. Jika kluster Anda tidak memenuhi persyaratan versi mesin minor, upgrade versi mesin minor.Fitur GPC diaktifkan secara default pada kluster yang memenuhi persyaratan versi.
Batasan
GPC hanya mendukung prepared statements. Caching rencana tidak didukung dalam skenario PL/SQL.
Hanya pernyataan
SELECT,INSERT,UPDATE, danDELETEyang didukung.Tabel temporary tidak didukung.
Parameter
Parameter | Deskripsi |
polar_gpc_mem | Mengatur ukuran memori untuk GPC. Satuan: MB. Nilai default adalah 30 MB. Nilainya tidak boleh melebihi ukuran Catatan
|
polar_enable_gpc_level | Tingkat penerapan fitur GPC. Parameter ini dapat dimodifikasi secara dinamis. Nilai yang valid:
Catatan
|
polar_gpc_clean_timeout | Interval waktu untuk membersihkan entri GPC yang jarang digunakan. Parameter ini dapat dimodifikasi secara dinamis. Satuan: detik. Nilai default adalah 1800 detik. Nilainya berkisar antara 0 detik hingga 24 jam. |
polar_worker.gpc_clear_interval | Interval waktu untuk membersihkan entri GPC yang tidak valid. Parameter ini dapat dimodifikasi secara dinamis. Satuan: detik. Nilai default adalah 60 detik. Nilai maksimum adalah (2^32 - 1)/1000. |
polar_gpc_clean_max | Jumlah entri GPC yang dibersihkan dalam satu waktu. Parameter ini dapat dimodifikasi secara dinamis. Nilai default adalah 100. Rentang nilainya adalah 10 hingga 10000. |
polar_gpc_partitions | Jumlah tabel hash yang digunakan untuk menyimpan entri GPC. Nilai default adalah 32. Rentang nilainya adalah 1 hingga 1024. Catatan Lakukan restart kluster agar modifikasi parameter berlaku. |
polar_gpc_entries | Jumlah maksimum entri dalam setiap tabel hash. Nilai default adalah 1024. Rentang nilainya adalah 1 hingga 10000. Catatan Lakukan restart kluster agar modifikasi parameter berlaku. |
Panduan penggunaan
Tampilan dan fungsi pemantauan untuk fitur GPC termasuk dalam ekstensi polar_gpc. Anda dapat menjalankan perintah berikut untuk membuat ekstensi ini.
CREATE EXTENSION IF NOT EXISTS polar_gpc;