Memahami manajemen rencana kueri Aurora PostgreSQL - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memahami manajemen rencana kueri Aurora PostgreSQL

Dengan manajemen rencana kueri diaktifkan untuk klaster DB Aurora PostgreSQL Anda, pengoptimisasi akan menghasilkan dan menyimpan rencana eksekusi kueri untuk pernyataan SQL apa pun yang diproses lebih dari sekali. Pengoptimisasi selalu mengatur status rencana yang pertama kali dibuat dari suatu pernyataan terkelola ke Approved, dan menyimpannya di tampilan dba_plans.

Rangkaian rencana yang disetujui yang disimpan untuk suatu pernyataan terkelola disebut sebagai acuan dasar rencana. Saat aplikasi berjalan, pengoptimisasi dapat membuat rencana tambahan untuk pernyataan terkelola. Pengoptimisasi mengatur rencana tambahan yang diambil ke status Unapproved.

Kemudian, Anda dapat memutuskan apakah rencana Unapproved berjalan dengan baik dan mengubahnya menjadi Approved, Rejected, atau Preferred. Untuk melakukannya, Anda menggunakan fungsi apg_plan_mgmt.evolve_plan_baselines atau fungsi apg_plan_mgmt.set_plan_status.

Ketika pengoptimisasi menghasilkan rencana untuk pernyataan SQL, manajemen rencana kueri menyimpan rencana ini dalam tabel apg_plan_mgmt.plans. Pengguna basis data yang telah diberi peran apg_plan_mgmt dapat melihat detail rencana dengan mengkueri tampilan apg_plan_mgmt.dba_plans. Misalnya, kueri berikut menampilkan daftar detail untuk rencana yang saat ini ada dalam tampilan untuk klaster DB PostgreSQL Aurora non-produksi.

  • sql_hash – Pengidentifikasi untuk pernyataan SQL yang merupakan nilai hash untuk teks yang dinormalisasi dari pernyataan SQL.

  • plan_hash – Pengidentifikasi unik untuk rencana yang merupakan kombinasi dari sql_hash dan hash rencana.

  • status – Status rencana. Pengoptimisasi dapat menjalankan rencana yang disetujui.

  • enabled – Menunjukkan apakah rencana siap digunakan (true) atau tidak (false).

  • plan_outline – Representasi rencana yang digunakan untuk membuat ulang rencana eksekusi sebenarnya. Operator dalam struktur pohon akan dipetakan ke operator dalam output EXPLAIN.

Tampilan apg_plan_mgmt.dba_plans memiliki lebih banyak kolom yang berisi semua detail rencana, misalnya, waktu rencana terakhir digunakan. Untuk detail lengkap, lihat Referensi untuk tampilan apg_plan_mgmt.dba_plans.

Normalisasi dan hash SQL

Dalam tampilan apg_plan_mgmt.dba_plans, Anda dapat mengidentifikasi pernyataan terkelola dengan nilai hash SQL. Hash SQL dihitung pada representasi ternormalisasi dari pernyataan SQL yang menghilangkan beberapa perbedaan, seperti nilai-nilai literal.

Proses normalisasi untuk setiap pernyataan SQL mempertahankan spasi dan huruf besar/kecil, sehingga Anda masih dapat membaca dan memahami inti dari pernyataan SQL tersebut. Normalisasi akan menghapus atau mengganti item berikut.

  • Komentar blok di depan

  • Kata kunci EXPLAIN dan opsi EXPLAIN, serta EXPLAIN ANALYZE

  • Spasi di belakang

  • Semua literal

Sebagai contoh, amati pernyataan berikut.

/*Leading comment*/ EXPLAIN SELECT /* Query 1 */ * FROM t WHERE x > 7 AND y = 1;

Pengoptimisasi menormalkan pernyataan ini seperti yang ditunjukkan berikut.

SELECT /* Query 1 */ * FROM t WHERE x > CONST AND y = CONST;

Normalisasi memungkinkan hash SQL yang sama digunakan untuk pernyataan SQL serupa yang mungkin hanya berbeda dalam hal nilai literal atau parameternya. Dengan kata lain, bisa ada lebih dari satu rencana untuk hash SQL yang sama, dengan sebuah rencana berbeda yang optimal dalam kondisi yang berbeda-beda.

catatan

Pernyataan SQL tunggal yang digunakan dengan berbagai skema akan memiliki rencana yang berbeda-beda karena terikat pada skema tertentu saat runtime. Perencana menggunakan statistik untuk pengikatan skema untuk memilih rencana yang optimal.

Untuk mempelajari selengkapnya tentang cara pengoptimisasi memilih rencana, lihat Menggunakan rencana terkelola Aurora PostgreSQL. Di bagian tersebut, Anda dapat mempelajari cara menggunakan EXPLAIN dan EXPLAIN ANALYZE untuk melihat pratinjau rencana sebelum benar-benar digunakan. Untuk detailnya, lihat Menganalisis rencana yang dipilih pengoptimisasi. Untuk gambar yang menguraikan proses untuk memilih rencana, lihat Bagaimana cara pengoptimisasi memilih rencana yang akan dijalankan.