

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

# Referensi fungsi untuk manajemen rencana kueri Aurora PostgreSQL
<a name="AuroraPostgreSQL.Optimize.Functions"></a>

Ekstensi `apg_plan_mgmt` menyediakan fungsi-fungsi berikut.

**Topics**
+ [apg\$1plan\$1mgmt.copy\$1outline](#AuroraPostgreSQL.Optimize.Functions.copy_outline)
+ [apg\$1plan\$1mgmt.delete\$1plan](#AuroraPostgreSQL.Optimize.Functions.delete_plan)
+ [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines)
+ [apg\$1plan\$1mgmt.get\$1explain\$1plan](#AuroraPostgreSQL.Optimize.Functions.get_explain_plan)
+ [apg\$1plan\$1mgmt.plan\$1last\$1used](#AuroraPostgreSQL.Optimize.Functions.plan_last_used)
+ [apg\$1plan\$1mgmt.reload](#AuroraPostgreSQL.Optimize.Functions.reload)
+ [apg\$1plan\$1mgmt.set\$1plan\$1enabled](#AuroraPostgreSQL.Optimize.Functions.set_plan_enabled)
+ [apg\$1plan\$1mgmt.set\$1plan\$1status](#AuroraPostgreSQL.Optimize.Functions.set_plan_status)
+ [apg\$1plan\$1mgmt.update\$1plans\$1last\$1used](#AuroraPostgreSQL.Optimize.Functions.update_plans_last_used)
+ [apg\$1plan\$1mgmt.validate\$1plans](#AuroraPostgreSQL.Optimize.Functions.validate_plans)

## apg\$1plan\$1mgmt.copy\$1outline
<a name="AuroraPostgreSQL.Optimize.Functions.copy_outline"></a>

Menyalin hash rencana dan outline rencana SQL tertentu ke hash rencana dan outline rencana SQL target, sehingga akan menimpa hash rencana dan outline rencana target. Fungsi ini tersedia dalam `apg_plan_mgmt` versi 2.3 dan rilis yang lebih tinggi. 

**Sintaksis**

```
apg_plan_mgmt.copy_outline(
    source_sql_hash,
    source_plan_hash,
    target_sql_hash,
    target_plan_hash,
    force_update_target_plan_hash
)
```

**Nilai yang ditampilkan**  
Menampilkan 0 ketika penyalinan berhasil. Menampilkan pengecualian untuk input yang tidak valid.

**Parameter**


****  

| Parameter | Deskripsi | 
| --- | --- | 
| source\$1sql\$1hash  | ID sql\$1hash yang terkait dengan plan\$1hash yang akan disalin ke kueri target. | 
| source\$1plan\$1hash  | ID plan\$1hash yang akan disalin ke kueri target. | 
| target\$1sql\$1hash | ID sql\$1hash kueri yang akan diperbarui dengan hash rencana dan outline rencana sumber. | 
| target\$1plan\$1hash | ID plan\$1hash kueri yang akan diperbarui dengan hash rencana dan outline rencana sumber. | 
| force\$1update\$1target\$1plan\$1hash | (Opsional) ID target\$1plan\$1hash kueri diperbarui meskipun rencana sumber tidak dapat direproduksi untuk target\$1sql\$1hash. Ketika diatur ke true, fungsi ini dapat digunakan untuk menyalin rencana ke seluruh skema yang memiliki nama dan kolom relasi yang konsisten. | 

**Catatan penggunaan**

Fungsi ini memungkinkan Anda untuk menyalin hash rencana dan outline rencana yang menggunakan petunjuk ke pernyataan lain yang serupa, sehingga Anda tidak perlu menggunakan pernyataan petunjuk inline pada setiap peristiwa dalam pernyataan target. Jika kueri target yang diperbarui menghasilkan rencana yang tidak valid, fungsi ini akan memunculkan kesalahan dan mengembalikan pembaruan yang dicoba. 

## apg\$1plan\$1mgmt.delete\$1plan
<a name="AuroraPostgreSQL.Optimize.Functions.delete_plan"></a>

Menghapus rencana terkelola. 

**Sintaksis**

```
apg_plan_mgmt.delete_plan(
    sql_hash,
    plan_hash
)
```

**Nilai yang ditampilkan**  
Menampilkan 0 jika penghapusan berhasil atau -1 jika penghapusan gagal.

**Parameter**


****  

| Parameter | Deskripsi | 
| --- | --- | 
| sql\$1hash  | ID sql\$1hash pernyataan SQL terkelola milik rencana. | 
| plan\$1hash | ID plan\$1hash rencana terkelola. | 

 

## apg\$1plan\$1mgmt.evolve\$1plan\$1baselines
<a name="AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines"></a>

Memverifikasi apakah rencana yang sudah disetujui lebih cepat atau apakah rencana yang diidentifikasi oleh pengoptimal kueri sebagai rencana berbiaya minimum yang lebih cepat.

**Sintaksis**

```
apg_plan_mgmt.evolve_plan_baselines(
    sql_hash, 
    plan_hash,
    min_speedup_factor,
    action
)
```

**Nilai yang ditampilkan**

Jumlah rencana yang tidak lebih cepat dari rencana terbaik yang disetujui. 

**Parameter**


****  

| Parameter | Deskripsi | 
| --- | --- | 
| sql\$1hash | ID sql\$1hash pernyataan SQL terkelola milik rencana. | 
| plan\$1hash | ID plan\$1hash rencana terkelola. Gunakan NULL untuk mengindikasikan semua rencana yang memiliki nilai ID sql\$1hash yang sama. | 
| min\$1speedup\$1factor |  *Faktor percepatan minimum* adalah seberapa kali lebih cepat suatu rencana daripada rencana lain yang sudah disetujui agar rencana tersebut dapat disetujui. Alternatifnya, faktor ini dapat berupa berapa kali lebih lambat agar rencana harus ditolak atau dinonaktifkan. Ini adalah nilai float positif.  | 
| action |  Tindakan yang harus dilakukan oleh fungsi tersebut. Nilai yang valid mencakup hal berikut. Huruf besar/kecil tidak berpengaruh.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html)  | 

**Catatan penggunaan**

Tetapkan rencana ke status disetujui, ditolak, atau dinonaktifkan berdasarkan apakah waktu perencanaan plus eksekusi lebih cepat daripada rencana yang disetujui berdasarkan faktor yang dapat Anda tetapkan. Parameter tindakan dapat diatur ke `'approve'` atau `'reject'` untuk secara otomatis menyetujui atau menolak rencana yang memenuhi kriteria performa. Alternatifnya, parameter dapat diatur ke '' (string kosong) untuk melakukan eksperimen performa dan membuat laporan, tetapi tidak mengambil tindakan.

Anda dapat mencegah fungsi `apg_plan_mgmt.evolve_plan_baselines` dijalankan kembali secara sia-sia untuk rencana tempat fungsi ini baru-baru ini dijalankan. Untuk melakukannya, batasi rencana hanya untuk rencana yang baru-baru ini dibuat yang belum disetujui. Alternatifnya, Anda dapat mencegah fungsi `apg_plan_mgmt.evolve_plan_baselines` dijalankan pada rencana yang disetujui yang memiliki stempel waktu `last_verified` baru-baru ini.

Lakukan eksperimen performa untuk membandingkan waktu perencanaan dan eksekusi untuk setiap rencana secara relatif terhadap rencana lain dalam acuan dasar (baseline). Dalam beberapa kasus, hanya ada satu rencana untuk satu pernyataan dan rencana ini disetujui. Dalam kasus seperti itu, bandingkan waktu perencanaan dan eksekusi rencana dengan waktu perencanaan dan eksekusi tanpa menggunakan rencana.

Keuntungan (atau kerugian) tambahan dari setiap rencana dicatat di tampilan `apg_plan_mgmt.dba_plans` dalam kolom `total_time_benefit_ms`. Jika nilainya positif, ada keuntungan performa yang dapat diukur untuk memasukkan rencana ini dalam acuan dasar.

Selain mengumpulkan waktu perencanaan dan eksekusi dari setiap rencana kandidat, kolom `last_verified` pada tampilan `apg_plan_mgmt.dba_plans` diperbarui dengan `current_timestamp`. Stempel waktu `last_verified` dapat digunakan agar fungsi ini tidak lagi dijalankan pada rencana yang performanya baru-baru ini diverifikasi.

## apg\$1plan\$1mgmt.get\$1explain\$1plan
<a name="AuroraPostgreSQL.Optimize.Functions.get_explain_plan"></a>

Menghasilkan teks dari pernyataan `EXPLAIN` untuk pernyataan SQL yang ditentukan. 

**Sintaksis**

```
apg_plan_mgmt.get_explain_plan(
    sql_hash,
    plan_hash,
    [explainOptionList]
)
```

**Nilai yang ditampilkan**  
Menampilkan statistik runtime untuk pernyataan SQL yang ditentukan. Gunakan tanpa `explainOptionList` untuk menampilkan rencana `EXPLAIN` sederhana.

**Parameter**


****  

| Parameter | Deskripsi | 
| --- | --- | 
| sql\$1hash  | ID sql\$1hash pernyataan SQL terkelola milik rencana. | 
| plan\$1hash | ID plan\$1hash rencana terkelola. | 
| explainOptionList | Daftar opsi penjelasan yang dipisahkan dengan koma. Nilai yang valid termasuk `'analyze'`, `'verbose'`, `'buffers'`, `'hashes'`, dan `'format json'`. Jika `explainOptionList` adalah NULL atau string kosong (''), fungsi ini menghasilkan pernyataan `EXPLAIN`, tanpa statistik.  | 

 

**Catatan penggunaan**

Untuk `explainOptionList`, Anda dapat menggunakan salah satu dari opsi yang sama yang akan Anda gunakan dengan pernyataan `EXPLAIN`. Pengoptimal Aurora PostgreSQL menggabungkan daftar opsi yang Anda berikan ke pernyataan `EXPLAIN`.

## apg\$1plan\$1mgmt.plan\$1last\$1used
<a name="AuroraPostgreSQL.Optimize.Functions.plan_last_used"></a>

Menampilkan tanggal `last_used` untuk rencana yang ditetapkan dari memori bersama. 

**catatan**  
Nilai dalam memori bersama selalu terbaru pada instans DB primer dalam klaster DB. Nilai hanya secara berkala di-flush ke kolom `last_used` dalam tampilan `apg_plan_mgmt.dba_plans`.

**Sintaksis**

```
apg_plan_mgmt.plan_last_used(
    sql_hash,
    plan_hash
)
```

**Nilai yang ditampilkan**  
Menampilkan tanggal `last_used`.

**Parameter**


****  

| Parameter | Deskripsi | 
| --- | --- | 
| sql\$1hash  | ID sql\$1hash pernyataan SQL terkelola milik rencana. | 
| plan\$1hash | ID plan\$1hash rencana terkelola. | 

 

## apg\$1plan\$1mgmt.reload
<a name="AuroraPostgreSQL.Optimize.Functions.reload"></a>

Memuat ulang rencana ke dalam memori bersama dari tampilan `apg_plan_mgmt.dba_plans`. 

**Sintaksis**

```
apg_plan_mgmt.reload()
```

**Nilai yang ditampilkan**

Tidak ada.

**Parameter**

Tidak ada.

**Catatan penggunaan**

Memanggil `reload` untuk situasi-situasi berikut:
+ Gunakan untuk me-refresh memori bersama replika hanya baca, dan bukan menunggu adanya rencana baru untuk disebarkan ke replika.
+ Gunakan setelah mengimpor rencana terkelola.



## apg\$1plan\$1mgmt.set\$1plan\$1enabled
<a name="AuroraPostgreSQL.Optimize.Functions.set_plan_enabled"></a>

Mengaktifkan atau menonaktifkan rencana terkelola.

**Sintaksis**

```
apg_plan_mgmt.set_plan_enabled(
    sql_hash, 
    plan_hash, 
    [true | false]
)
```

**Nilai yang ditampilkan**

Menampilkan 0 jika pengaturan berhasil atau -1 jika pengaturan gagal.

**Parameter**


****  

| Parameter | Deskripsi | 
| --- | --- | 
| sql\$1hash | ID sql\$1hash pernyataan SQL terkelola milik rencana. | 
| plan\$1hash | ID plan\$1hash rencana terkelola. | 
| enabled |  Nilai Boolean benar atau salah: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html)  | 

 

## apg\$1plan\$1mgmt.set\$1plan\$1status
<a name="AuroraPostgreSQL.Optimize.Functions.set_plan_status"></a>

Mengatur status rencana terkelola ke `Approved`, `Unapproved`, `Rejected`, atau `Preferred`.

**Sintaksis**

```
apg_plan_mgmt.set_plan_status(
    sql_hash, 
    plan_hash, 
    status
)
```

**Nilai yang ditampilkan**

Menampilkan 0 jika pengaturan berhasil atau -1 jika pengaturan gagal.

**Parameter**


****  

| Parameter | Deskripsi | 
| --- | --- | 
| sql\$1hash | ID sql\$1hash pernyataan SQL terkelola milik rencana. | 
| plan\$1hash | ID plan\$1hash rencana terkelola. | 
| status |  String dengan salah satu nilai berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html) Huruf besar/kecil yang Anda gunakan tidak berpengaruh, tetapi nilai status menggunakan huruf besar di awal dalam tampilan `apg_plan_mgmt.dba_plans`. Untuk informasi selengkapnya tentang nilai-nilai tersebut, lihat `status` dalam [Referensi untuk tampilan apg\$1plan\$1mgmt.dba\$1plans untuk Aurora PostgreSQL Compatible Edition](AuroraPostgreSQL.Optimize.dba_plans_view_Reference.md).   | 

 

## apg\$1plan\$1mgmt.update\$1plans\$1last\$1used
<a name="AuroraPostgreSQL.Optimize.Functions.update_plans_last_used"></a>

Segera memperbarui tabel rencana dengan tanggal `last_used` yang disimpan dalam memori bersama.

**Sintaksis**

```
apg_plan_mgmt.update_plans_last_used()
```

**Nilai yang ditampilkan**

Tidak ada.

**Parameter**

Tidak ada.

**Catatan penggunaan**

Panggil `update_plans_last_used` untuk memastikan kueri terhadap kolom `dba_plans.last_used` menggunakan informasi terbaru. Jika tanggal `last_used` tidak segera diperbarui, proses latar belakang akan memperbarui tabel rencana dengan tanggal `last_used` sekali setiap jam (secara default).

Misalnya, jika pernyataan dengan `sql_hash` tertentu mulai berjalan lambat, Anda dapat menentukan rencana mana yang dieksekusi untuk pernyataan tersebut sejak regresi performa dimulai. Untuk melakukannya, pertama-tama lakukan flushing data dalam memori bersama ke disk sehingga tanggal `last_used` menjadi terkini, lalu jalankan kueri untuk semua rencana `sql_hash` dari pernyataan yang memiliki regresi performa. Dalam kueri, pastikan tanggal `last_used` lebih besar dari atau sama dengan tanggal saat regresi performa dimulai. Kueri tersebut mengidentifikasi rencana atau kumpulan rencana yang mungkin bertanggung jawab atas regresi performa. Anda dapat menggunakan `apg_plan_mgmt.get_explain_plan` dengan `explainOptionList` yang diatur ke `verbose, hashes`. Anda juga dapat menggunakan `apg_plan_mgmt.evolve_plan_baselines` untuk menganalisis rencana dan rencana alternatif apa pun yang mungkin beperforma lebih baik.

Fungsi `update_plans_last_used` hanya berpengaruh pada instans DB primer klaster DB.

## apg\$1plan\$1mgmt.validate\$1plans
<a name="AuroraPostgreSQL.Optimize.Functions.validate_plans"></a>

Memvalidasi bahwa pengoptimal masih dapat membuat ulang rencana. Pengoptimal memvalidasi rencana `Approved`, `Unapproved`, dan `Preferred`, baik ketika rencana tersebut diaktifkan maupun dinonaktifkan. Rencana `Rejected` tidak divalidasi. Secara opsional, Anda dapat menggunakan fungsi `apg_plan_mgmt.validate_plans` untuk menghapus atau menonaktifkan rencana yang tidak valid.

**Sintaksis**

```
apg_plan_mgmt.validate_plans(
    sql_hash, 
    plan_hash, 
    action)
            
apg_plan_mgmt.validate_plans(
    action)
```

**Nilai yang ditampilkan**

Jumlah rencana tidak valid.

**Parameter**


****  

| Parameter | Deskripsi | 
| --- | --- | 
| sql\$1hash | ID sql\$1hash pernyataan SQL terkelola milik rencana. | 
| plan\$1hash | ID plan\$1hash rencana terkelola. Gunakan NULL untuk merujuk pada semua rencana dengan nilai ID sql\$1hash yang sama. | 
| action |  Tindakan yang harus dilakukan fungsi untuk rencana yang tidak valid. Nilai string yang valid mencakup hal berikut. Huruf besar/kecil tidak berpengaruh. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html) Nilai lainnya diperlakukan seperti string kosong.  | 

**Catatan penggunaan**

Gunakan form `validate_plans(action)` untuk memvalidasi semua rencana terkelola untuk semua pernyataan terkelola dalam tampilan `apg_plan_mgmt.dba_plans` secara keseluruhan.

Gunakan form `validate_plans(sql_hash, plan_hash, action)` untuk memvalidasi rencana terkelola yang ditentukan dengan `plan_hash`, untuk pernyataan terkelola yang ditentukan dengan `sql_hash`. 

Gunakan form `validate_plans(sql_hash, NULL, action)` untuk memvalidasi semua rencana terkelola untuk laporan terkelola yang ditentukan dengan `sql_hash`.