Referensi fungsi untuk manajemen rencana kueri Aurora Postgre SQL - Amazon Aurora:

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 Postgre SQL

Ekstensi apg_plan_mgmt menyediakan fungsi-fungsi berikut.

apg_plan_mgmt.copy_outline

Salin hash SQL rencana yang diberikan dan rencanakan garis besar ke hash dan garis besar SQL rencana target, sehingga menimpa hash dan garis besar 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

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 sql_hashID dari SQL pernyataan terkelola rencana.
plan_hash ID plan_hash rencana terkelola.

apg_plan_mgmt.evolve_plan_baselines

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_hash sql_hashID dari SQL pernyataan terkelola rencana.
plan_hash ID plan_hash rencana terkelola. Gunakan NULL untuk berarti semua paket yang memiliki nilai sql_hash ID 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.

Ini adalah nilai float positif.

action

Tindakan yang harus dilakukan oleh fungsi tersebut. Nilai yang valid mencakup hal berikut. Huruf besar/kecil tidak berpengaruh.

  • 'disable' – Menonaktifkan setiap rencana yang tidak memenuhi faktor percepatan minimum.

  • 'approve' – Mengaktifkan setiap rencana yang memenuhi faktor percepatan minimum dan menetapkan statusnya menjadi approved.

  • 'reject' – Untuk setiap rencana yang tidak memenuhi faktor percepatan minimum, menetapkan statusnya menjadi rejected.

  • NULLFungsi hanya mengembalikan jumlah rencana yang tidak memiliki manfaat kinerja karena mereka tidak memenuhi faktor percepatan minimum.

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_plan_mgmt.get_explain_plan

Menghasilkan teks EXPLAIN pernyataan untuk pernyataan yang ditentukanSQL.

Sintaks

apg_plan_mgmt.get_explain_plan( sql_hash, plan_hash, [explainOptionList] )
Nilai yang ditampilkan

Mengembalikan statistik runtime untuk SQL pernyataan tertentu. Gunakan tanpa explainOptionList untuk menampilkan rencana EXPLAIN sederhana.

Parameter

Parameter Deskripsi
sql_hash sql_hashID dari SQL pernyataan terkelola 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 EXPLAIN pernyataan, tanpa statistik apapun.

Catatan penggunaan

Untuk explainOptionList, Anda dapat menggunakan salah satu dari opsi yang sama yang akan Anda gunakan dengan pernyataan EXPLAIN. SQLPengoptimal Aurora Postgre menggabungkan daftar opsi yang Anda berikan pada pernyataan tersebut. EXPLAIN

apg_plan_mgmt.plan_last_used

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 sql_hashID dari SQL pernyataan terkelola rencana.
plan_hash ID plan_hash rencana terkelola.

apg_plan_mgmt.reload

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

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 sql_hashID dari SQL pernyataan terkelola rencana.
plan_hash ID plan_hash rencana terkelola.
enabled

Nilai Boolean benar atau salah:

  • Nilai true mengaktifkan rencana.

  • Nilai false menonaktifkan rencana.

apg_plan_mgmt.set_plan_status

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 sql_hashID dari SQL pernyataan terkelola rencana.
plan_hash ID plan_hash rencana terkelola.
status

String dengan salah satu nilai berikut:

  • 'Approved'

  • 'Unapproved'

  • 'Rejected'

  • 'Preferred'

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 Postgre -Compatible Edition SQL.

apg_plan_mgmt.update_plans_last_used

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

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 sql_hashID dari SQL pernyataan terkelola rencana.
plan_hash ID plan_hash rencana terkelola. Gunakan NULL untuk berarti semua paket untuk nilai sql_hash ID 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.

  • 'disable' – Setiap rencana yang tidak valid dinonaktifkan.

  • 'delete' – Setiap rencana yang tidak valid dihapus.

  • 'update_plan_hash' – Memperbarui ID plan_hash untuk rencana yang tidak dapat direproduksi dengan tepat. Ini juga memungkinkan Anda untuk memperbaiki rencana dengan menulis ulang. SQL Anda kemudian dapat mendaftarkan rencana yang baik sebagai Approved rencana untuk yang asliSQL.

  • NULL— Fungsi hanya mengembalikan jumlah rencana yang tidak valid. Tidak ada tindakan lain yang dilakukan.

  • '' – String kosong menghasilkan pesan yang menunjukkan jumlah rencana yang valid dan tidak valid.

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.