Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Ikhtisar manajemen rencana kueri Aurora Postgre SQL
Manajemen rencana SQL kueri Aurora Postgre dirancang untuk memastikan stabilitas rencana terlepas dari perubahan pada database yang dapat menyebabkan regresi rencana kueri. Regresi rencana kueri terjadi ketika pengoptimal memilih rencana sub-optimal untuk SQL pernyataan yang diberikan setelah perubahan sistem atau database. Perubahan statistik, kendala, pengaturan lingkungan, pengikatan parameter kueri, dan peningkatan ke mesin database Postgre SQL semuanya dapat menyebabkan regresi rencana.
Dengan manajemen rencana SQL kueri Aurora Postgre, Anda dapat mengontrol bagaimana dan kapan rencana eksekusi kueri berubah. Manfaat manajemen rencana SQL kueri Aurora Postgre meliputi yang berikut ini.
Meningkatkan stabilitas rencana dengan memaksa pengoptimal untuk memilih dari sejumlah kecil rencana yang sudah diketahui bagus.
Mengoptimalkan rencana secara terpusat lalu mendistribusikan rencana terbaik secara global.
Mengidentifikasi indeks yang tidak digunakan dan menilai dampak dari membuat atau menghapus indeks.
Secara otomatis mendeteksi rencana biaya minimum baru yang ditemukan oleh pengoptimal.
Mencoba fitur-fitur pengoptimal baru dengan risiko lebih rendah karena Anda dapat memilih untuk hanya menyetujui perubahan rencana yang meningkatkan performa.
Anda dapat menggunakan alat yang disediakan oleh manajemen rencana kueri secara proaktif untuk menentukan rencana terbaik untuk kueri tertentu. Atau, Anda dapat menggunakan manajemen rencana kueri untuk bereaksi terhadap perubahan keadaan dan menghindari regresi rencana. Untuk informasi selengkapnya, lihat Praktik terbaik untuk manajemen rencana kueri Aurora PostgreSQL.
Topik
- SQLPernyataan yang didukung
- Batasan manajemen rencana kueri
- Terminologi manajemen rencana kueri
- Versi manajemen rencana kueri Aurora Postgre SQL
- Mengaktifkan manajemen rencana kueri Aurora Postgre SQL
- Meningkatkan manajemen rencana kueri Aurora SQL Postgre
- Mematikan manajemen rencana kueri Aurora Postgre SQL
SQLPernyataan yang didukung
Manajemen rencana kueri mendukung jenis SQL pernyataan berikut.
SetiapSELECT,, INSERTUPDATE, atau DELETE pernyataan, terlepas dari kompleksitasnya.
Pernyataan yang disiapkan. Untuk informasi lebih lanjut, lihat PREPARE
di dokumentasi PostgreSQL. Pernyataan dinamis, termasuk yang dijalankan dalam mode segera. Untuk informasi selengkapnya, lihat Dynamic SQL
dan EXECUTEIMMEDIATE dalam dokumentasi PostgreSQL. SQLPerintah dan pernyataan tertanam. Untuk informasi selengkapnya, lihat SQLPerintah Tertanam
dalam dokumentasi PostgreSQL. Pernyataan di dalam fungsi bernama. Untuk informasi lebih lanjut, lihat CREATEFUNCTION
di dokumentasi PostgreSQL. Pernyataan yang berisi tabel temp.
Pernyataan di dalam prosedur dan DO-block.
Anda dapat menggunakan manajemen rencana kueri dengan EXPLAIN
dalam mode manual untuk menangkap rencana tanpa benar-benar menjalankannya. Untuk informasi selengkapnya, lihat Menganalisis rencana yang dipilih pengoptimisasi. Untuk mempelajari selengkapnya tentang mode manajemen rencana kueri (manual, otomatis), lihat Mengambil rencana eksekusi Aurora PostgreSQL.
Manajemen rencana SQL kueri Aurora Postgre mendukung semua fitur SQL bahasa Postgre, termasuk tabel yang dipartisi, pewarisan, keamanan tingkat baris, dan ekspresi tabel umum rekursif (). CTEs Untuk mempelajari lebih lanjut tentang fitur SQL bahasa Postgre ini, lihat Partisi Tabel, Kebijakan Keamanan Baris
Untuk informasi tentang berbagai versi fitur manajemen paket SQL kueri Aurora Postgre, lihat Aurora Postgre versi ekstensi SQLapg_plan_mgmt di Catatan Rilis untuk Aurora Postgre. SQL
Batasan manajemen rencana kueri
Rilis manajemen rencana SQL kueri Aurora Postgre saat ini memiliki batasan berikut.
Rencana tidak ditangkap untuk pernyataan yang mereferensikan relasi sistem – Pernyataan yang mereferensikan relasi sistem, seperti
pg_class
, tidak ditangkap. Hal ini berlaku berdasarkan desain untuk mencegah sejumlah besar rencana yang dihasilkan sistem yang digunakan secara internal agar tidak ditangkap. Hal ini juga berlaku untuk tabel sistem dalam tampilan.Kelas instans DB yang lebih besar mungkin diperlukan untuk cluster SQL DB Aurora Postgre Anda — Tergantung pada beban kerja, manajemen rencana kueri mungkin memerlukan kelas instans DB yang memiliki lebih dari 2. vCPUs Jumlah
max_worker_processes
dibatasi oleh ukuran kelas instans DB. Jumlah yangmax_worker_processes
disediakan oleh kelas instance CPU DB 2-v (db.t3.medium, misalnya) mungkin tidak cukup untuk beban kerja tertentu. Kami menyarankan Anda memilih kelas instans DB dengan lebih dari 2 vCPUs untuk klaster SQL DB Aurora Postgre Anda jika Anda menggunakan manajemen rencana kueri.Ketika kelas instans DB tidak dapat mendukung beban kerja, manajemen rencana kueri memunculkan pesan kesalahan seperti berikut ini.
WARNING: could not register plan insert background process HINT: You may need to increase max_worker_processes.
Dalam hal ini, Anda harus meningkatkan cluster Aurora Postgre SQL DB Anda ke ukuran kelas instans DB dengan lebih banyak memori. Untuk informasi selengkapnya, lihat Mesin DB yang didukung untuk kelas instans DB.
-
Rencana yang sudah disimpan dalam sesi tidak terpengaruh – Manajemen rencana kueri menyediakan cara untuk memengaruhi rencana kueri tanpa mengubah kode aplikasi. Namun, ketika rencana generik sudah disimpan dalam sesi yang ada dan jika Anda ingin mengubah rencana kueri, maka Anda harus terlebih dahulu mengatur
plan_cache_mode
keforce_custom_plan
dalam grup parameter klaster DB. -
queryid
diapg_plan_mgmt.dba_plans
danpg_stat_statements
dapat menyimpang ketika:Objek dihapus dan dibuat ulang setelah disimpan dalam apg_plan_mgmt.dba_plans.
Tabel
apg_plan_mgmt.plans
diimpor dari klaster lain.
Untuk informasi tentang berbagai versi fitur manajemen paket SQL kueri Aurora Postgre, lihat Aurora Postgre versi ekstensi SQLapg_plan_mgmt di Catatan Rilis untuk Aurora Postgre. SQL
Terminologi manajemen rencana kueri
Istilah berikut digunakan di seluruh topik ini:
- pernyataan terkelola
-
SQLPernyataan yang ditangkap oleh pengoptimal di bawah manajemen rencana kueri. Pernyataan terkelola memiliki satu atau beberapa rencana eksekusi kueri yang disimpan dalam tampilan
apg_plan_mgmt.dba_plans
. - acuan dasar rencana
-
Kumpulan rencana yang disetujui untuk pernyataan terkelola tertentu. Artinya, semua rencana untuk pernyataan terkelola yang telah “Disetujui” untuk kolom
status
-nya dalam tampilandba_plan
. - riwayat rencana
-
Kumpulan semua rencana yang ditangkap untuk suatu pernyataan terkelola tertentu. Riwayat rencana berisi semua rencana yang ditangkap untuk pernyataan tersebut, terlepas dari statusnya.
- regresi rencana kueri
-
Kasus ketika pengoptimal memilih rencana yang kurang optimal daripada sebelum perubahan yang diberikan ke lingkungan database, seperti SQL versi Postgre baru atau perubahan statistik.
Versi manajemen rencana kueri Aurora Postgre SQL
Manajemen rencana kueri didukung oleh semua rilis Aurora SQL Postgre yang tersedia saat ini. Untuk informasi selengkapnya, lihat daftar SQLpembaruan Amazon Aurora Postgre di Catatan Rilis untuk Aurora Postgre. SQL
Fungsionalitas manajemen rencana kueri ditambahkan ke cluster SQL DB Aurora Postgre Anda saat Anda menginstal ekstensi. apg_plan_mgmt
Versi Aurora Postgre yang berbeda SQL mendukung versi ekstensi yang berbeda. apg_plan_mgmt
Kami menyarankan Anda meningkatkan ekstensi manajemen paket kueri ke rilis terbaru untuk versi Aurora Postgre Anda. SQL
catatan
Untuk catatan rilis untuk setiap versi apg_plan_mgmt
ekstensi, lihat Aurora Postgre SQL apg_plan_mgmt versi ekstensi di Catatan Rilis untuk Aurora Postgre. SQL
Anda dapat mengidentifikasi versi yang berjalan di klaster Anda dengan menghubungkan ke instans menggunakan psql
lalu menggunakan perintah meta \dx untuk menampilkan daftar ekstensi seperti yang ditunjukkan berikut.
labdb=>
\dxList of installed extensions Name | Version | Schema | Description ---------------+---------+---------------+------------------------------------------------------------------- apg_plan_mgmt | 1.0 | apg_plan_mgmt | Amazon Aurora with PostgreSQL compatibility Query Plan Management plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (2 rows)
Output menunjukkan bahwa klaster ini menggunakan ekstensi versi 1.0. Hanya apg_plan_mgmt
versi tertentu yang tersedia untuk versi Aurora SQL Postgre tertentu. Dalam beberapa kasus, Anda mungkin perlu memutakhirkan cluster Aurora Postgre SQL DB ke rilis minor baru atau menerapkan tambalan sehingga Anda dapat meningkatkan ke versi terbaru dari manajemen rencana kueri. apg_plan_mgmt
Versi 1.0 yang ditampilkan dalam output berasal dari cluster Aurora Postgre SQL versi 10.17 DB, yang tidak memiliki versi yang lebih baru yang tersedia. apg_plan_mgmt
Dalam hal ini, cluster Aurora Postgre SQL DB harus ditingkatkan ke versi Postgre yang lebih baru. SQL
Untuk informasi lebih lanjut tentang meningkatkan klaster Aurora SQL Postgre DB Anda ke versi baru Postgre, lihat. SQL Pembaruan Amazon Aurora Postgre SQL
Untuk mempelajari cara meningkatkan ekstensi apg_plan_mgmt
, lihat Meningkatkan manajemen rencana kueri Aurora SQL Postgre.
Mengaktifkan manajemen rencana kueri Aurora Postgre SQL
Menyiapkan manajemen rencana kueri untuk cluster SQL DB Aurora Postgre Anda melibatkan pemasangan ekstensi dan mengubah beberapa pengaturan parameter cluster DB. Anda memerlukan rds_superuser
izin untuk menginstal apg_plan_mgmt
ekstensi dan mengaktifkan fitur untuk cluster Aurora SQL Postgre DB.
Saat ekstensi ini diinstal, sebuah peran baru, apg_plan_mgmt
, akan dibuat. Peran ini memungkinkan pengguna basis data melihat, mengelola, dan memelihara rencana kueri. Sebagai administrator dengan hak akses rds_superuser
, pastikan untuk memberikan peran apg_plan_mgmt
kepada pengguna basis data sesuai kebutuhan.
Hanya pengguna dengan peran rds_superuser
yang dapat menyelesaikan prosedur berikut. rds_superuser
diperlukan untuk membuat ekstensi apg_plan_mgmt
dan peran apg_plan_mgmt
. Pengguna harus diberi peran apg_plan_mgmt
untuk mengelola ekstensi apg_plan_mgmt
.
Untuk mengaktifkan manajemen rencana kueri untuk cluster DB Aurora SQL Postgre Anda
Langkah-langkah berikut mengaktifkan manajemen rencana kueri untuk semua SQL pernyataan yang dikirimkan ke cluster Aurora SQL Postgre DB. Hal ini dikenal sebagai mode otomatis. Untuk mempelajari selengkapnya tentang perbedaan di antara mode, lihat Mengambil rencana eksekusi Aurora PostgreSQL.
Buka RDS konsol Amazon di https://console.aws.amazon.com/rds/
. -
Buat grup parameter cluster DB khusus untuk cluster Aurora SQL Postgre DB Anda. Anda perlu mengubah parameter tertentu untuk mengaktifkan manajemen rencana kueri dan mengatur perilakunya. Untuk informasi selengkapnya, lihat Membuat grup parameter DB di Aurora.
Buka grup parameter klaster DB kustom dan atur parameter
rds.enable_plan_management
ke1
, seperti yang ditunjukkan pada gambar berikut ini.Untuk informasi selengkapnya, lihat Memodifikasi parameter dalam grup parameter cluster DB di Amazon Aurora.
Buat grup parameter DB kustom yang dapat Anda gunakan untuk mengatur parameter rencana kueri di tingkat instans. Untuk informasi selengkapnya, lihat Membuat grup parameter cluster DB di Amazon Aurora.
Ubah instance penulis cluster Aurora Postgre SQL DB untuk menggunakan grup parameter DB kustom. Untuk informasi selengkapnya, lihat Memodifikasi instans DB dalam klaster DB.
Ubah cluster Aurora Postgre SQL DB untuk menggunakan grup parameter cluster DB kustom. Untuk informasi selengkapnya, lihat Memodifikasi cluster DB dengan menggunakan konsol,CLI, dan API.
Boot ulang instans DB Anda untuk mengaktifkan pengaturan grup parameter kustom.
Hubungkan ke titik akhir instans SQL DB cluster Aurora Postgre DB Anda menggunakan atau.
psql
pgAdmin
Contoh berikut menggunakan akunpostgres
default untuk peranrds_superuser
.psql --host=
cluster-instance-1.111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=my-db
Buat ekstensi
apg_plan_mgmt
untuk instans DB Anda, seperti yang ditunjukkan berikut ini.labdb=>
CREATE EXTENSION apg_plan_mgmt;CREATE EXTENSION
Tip
Instal ekstensi
apg_plan_mgmt
dalam basis data templat untuk aplikasi Anda. Basis data templat default diberi namatemplate1
. Untuk mempelajari lebih lanjut, lihat Database Templatedalam dokumentasi SQL Postgre. Ubah parameter
apg_plan_mgmt.capture_plan_baselines
keautomatic
. Pengaturan ini menyebabkan pengoptimal menghasilkan rencana untuk setiap SQL pernyataan yang direncanakan atau dijalankan dua kali atau lebih.catatan
Manajemen rencana kueri juga memiliki mode manual yang dapat Anda gunakan untuk SQL pernyataan tertentu. Untuk mempelajari selengkapnya, lihat Mengambil rencana eksekusi Aurora PostgreSQL.
-
Ubah nilai parameter
apg_plan_mgmt.use_plan_baselines
menjadi "on". Parameter ini menyebabkan pengoptimal memilih rencana untuk pernyataan dari acuan dasar rencananya. Untuk mempelajari selengkapnya, lihat Menggunakan rencana terkelola Aurora PostgreSQL.catatan
Anda dapat mengubah nilai salah satu parameter dinamis ini untuk sesi tanpa perlu mem-boot ulang instans.
Ketika pengaturan manajemen rencana kueri Anda selesai, pastikan untuk memberikan peran apg_plan_mgmt
kepada setiap pengguna basis data yang perlu melihat, mengelola, atau memelihara rencana kueri.
Meningkatkan manajemen rencana kueri Aurora SQL Postgre
Kami menyarankan Anda meningkatkan ekstensi manajemen paket kueri ke rilis terbaru untuk versi Aurora Postgre Anda. SQL
Connect ke instance penulis cluster Aurora Postgre SQL DB Anda sebagai pengguna yang memiliki hak istimewa.
rds_superuser
Jika Anda menyimpan nama default ketika Anda mengatur instance Anda, Anda terhubung sebagai Contohpostgres
ini menunjukkan cara menggunakanpsql
, tetapi Anda juga dapat menggunakan pgAdmin jika Anda mau.psql --host=
111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --passwordJalankan kueri berikut untuk meningkatkan ekstensi.
ALTER EXTENSION apg_plan_mgmt UPDATE TO '2.1';
Gunakan fungsi apg_plan_mgmt.validate_plans untuk memperbarui hash semua rencana. Pengoptimal akan memvalidasi semua rencana yang Disetujui, Tidak Disetujui, dan Ditolak untuk memastikan bahwa rencana tersebut masih layak untuk ekstensi versi baru.
SELECT apg_plan_mgmt.validate_plans('update_plan_hash');
Untuk mempelajari selengkapnya tentang penggunaan fungsi ini, lihat Memvalidasi rencana.
Gunakan fungsi apg_plan_mgmt.reload untuk me-refresh rencana apa pun di memori bersama dengan rencana yang divalidasi dari tampilan dba_plans.
SELECT apg_plan_mgmt.reload();
Untuk mempelajari selengkapnya tentang semua fungsi yang tersedia untuk manajemen rencana kueri, lihat Referensi fungsi untuk manajemen rencana kueri Aurora Postgre SQL.
Mematikan manajemen rencana kueri Aurora Postgre SQL
Anda dapat menonaktifkan manajemen rencana kueri setiap saat dengan menonaktifkan apg_plan_mgmt.use_plan_baselines
dan apg_plan_mgmt.capture_plan_baselines
.
labdb=>
SET apg_plan_mgmt.use_plan_baselines = off;labdb=>
SET apg_plan_mgmt.capture_plan_baselines = off;