

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

# Manajemen rencana kueri Aurora PostgreSQL
<a name="AuroraPostgreSQL.Optimize.Start"></a>

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 mengueri 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\$1plan\$1mgmt.dba\$1plans untuk Aurora PostgreSQL Compatible Edition](AuroraPostgreSQL.Optimize.dba_plans_view_Reference.md). 

## Normalisasi dan hash SQL
<a name="AuroraPostgreSQL.Optimize.Start.hash-and-normalization"></a>

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; 
```

Manajemen rencana kueri menormalkan pernyataan ini seperti yang ditunjukkan:

```
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](AuroraPostgreSQL.Optimize.UsePlans.md). 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](AuroraPostgreSQL.Optimize.UsePlans.md#AuroraPostgreSQL.Optimize.UsePlans.AnalyzePlans). Untuk gambar yang menguraikan proses untuk memilih rencana, lihat [Bagaimana cara pengoptimisasi memilih rencana yang akan dijalankan](AuroraPostgreSQL.Optimize.UsePlans.md#AuroraPostgreSQL.Optimize.UsePlans.ChoosePlans). 