

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\_plan\_mgmt.copy\_outline](#AuroraPostgreSQL.Optimize.Functions.copy_outline)
+ [apg\_plan\_mgmt.delete\_plan](#AuroraPostgreSQL.Optimize.Functions.delete_plan)
+ [apg\_plan\_mgmt.evolve\_plan\_baselines](#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines)
+ [apg\_plan\_mgmt.get\_explain\_plan](#AuroraPostgreSQL.Optimize.Functions.get_explain_plan)
+ [apg\_plan\_mgmt.plan\_last\_used](#AuroraPostgreSQL.Optimize.Functions.plan_last_used)
+ [apg\_plan\_mgmt.reload](#AuroraPostgreSQL.Optimize.Functions.reload)
+ [apg\_plan\_mgmt.set\_plan\_enabled](#AuroraPostgreSQL.Optimize.Functions.set_plan_enabled)
+ [apg\_plan\_mgmt.set\_plan\_status](#AuroraPostgreSQL.Optimize.Functions.set_plan_status)
+ [apg\_plan\_mgmt.update\_plans\_last\_used](#AuroraPostgreSQL.Optimize.Functions.update_plans_last_used)
+ [apg\_plan\_mgmt.validate\_plans](#AuroraPostgreSQL.Optimize.Functions.validate_plans)

## apg\_plan\_mgmt.copy\_outline
<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\_sql\_hash  | ID sql\_hash yang terkait dengan plan\_hash yang akan disalin ke kueri target. | 
| source\_plan\_hash  | ID plan\_hash yang akan disalin ke kueri target. | 
| target\_sql\_hash | ID sql\_hash kueri yang akan diperbarui dengan hash rencana dan outline rencana sumber. | 
| target\_plan\_hash | ID plan\_hash kueri yang akan diperbarui dengan hash rencana dan outline rencana sumber. | 
| force\_update\_target\_plan\_hash | (Opsional) ID target\_plan\_hash kueri diperbarui meskipun rencana sumber tidak dapat direproduksi untuk target\_sql\_hash. 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\_plan\_mgmt.delete\_plan
<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\_hash  | ID sql\_hash pernyataan SQL terkelola milik rencana. | 
| plan\_hash | ID plan\_hash rencana terkelola. | 

 

## apg\_plan\_mgmt.evolve\_plan\_baselines
<a name="AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines"></a>

Mengeksekusi kueri yang ditangkap dan membandingkan kinerjanya dengan approved/preferred paket terbaik yang diaktifkan, atau rencana pengoptimal. Berdasarkan hasil, menerapkan tindakan input pengguna.

**Sintaks**

```
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\_hash | ID sql\_hash pernyataan SQL terkelola milik rencana. | 
| plan\_hash | ID plan\_hash rencana terkelola. Gunakan NULL untuk mengindikasikan semua rencana yang memiliki nilai ID sql\_hash yang sama. | 
| min\_speedup\_factor | *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.<br />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.

Untuk mengumpulkan waktu perencanaan dan eksekusi, `apg_plan_mgmt.evolve_plan_baselines()` jalankan `EXPLAIN ANALYZE` pada kueri yang ditangkap. Kueri yang ditangkap dijalankan dengan hak istimewa pengguna yang menelepon`apg_plan_mgmt.evolve_plan_baselines()`.

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 kinerja dengan mengeksekusi kueri yang ditangkap untuk membandingkan perencanaan ditambah waktu pelaksanaan setiap rencana relatif terhadap rencana lain di 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\_plan\_mgmt.get\_explain\_plan
<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\_hash  | ID sql\_hash pernyataan SQL terkelola milik rencana. | 
| plan\_hash | ID plan\_hash 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\_plan\_mgmt.plan\_last\_used
<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\_hash  | ID sql\_hash pernyataan SQL terkelola milik rencana. | 
| plan\_hash | ID plan\_hash rencana terkelola. | 

 

## apg\_plan\_mgmt.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\_plan\_mgmt.set\_plan\_enabled
<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\_hash | ID sql\_hash pernyataan SQL terkelola milik rencana. | 
| plan\_hash | ID plan\_hash 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\_plan\_mgmt.set\_plan\_status
<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\_hash | ID sql\_hash pernyataan SQL terkelola milik rencana. | 
| plan\_hash | ID plan\_hash 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)<br />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\_plan\_mgmt.dba\_plans untuk Aurora Edition PostgreSQL-Compatible](AuroraPostgreSQL.Optimize.dba_plans_view_Reference.md).  | 

 

## apg\_plan\_mgmt.update\_plans\_last\_used
<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\_plan\_mgmt.validate\_plans
<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\_hash | ID sql\_hash pernyataan SQL terkelola milik rencana. | 
| plan\_hash | ID plan\_hash rencana terkelola. Gunakan NULL untuk merujuk pada semua rencana dengan nilai ID sql\_hash 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)<br />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`.