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.
Fungsi
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_hash ID 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_hash ID 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.
|
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_hash ID dari SQL pernyataan terkelola rencana. |
plan_hash |
ID plan_hash rencana terkelola. |
explainOptionList |
Daftar opsi penjelasan yang dipisahkan dengan koma. Nilai yang valid termasuk |
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_hash ID 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_hash ID dari SQL pernyataan terkelola rencana. |
plan_hash |
ID plan_hash rencana terkelola. |
enabled |
Nilai Boolean benar atau salah:
|
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_hash ID dari SQL pernyataan terkelola rencana. |
plan_hash |
ID plan_hash rencana terkelola. |
status |
String dengan salah satu nilai berikut:
Huruf besar/kecil yang Anda gunakan tidak berpengaruh, tetapi nilai status menggunakan huruf besar di awal dalam tampilan |
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_hash ID 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.
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
.