Mengambil rencana eksekusi Aurora PostgreSQL - Amazon Aurora

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

Mengambil rencana eksekusi Aurora PostgreSQL

Manajemen rencana kueri Aurora PostgreSQL menawarkan dua mode berbeda untuk mengambil rencana eksekusi kueri, yaitu otomatis atau manual. Anda memilih mode dengan mengatur nilai apg_plan_mgmt.capture_plans_baselines ke automatic atau ke manual. Anda dapat mengambil rencana eksekusi untuk pernyataan SQL tertentu menggunakan pengambilan rencana manual. Alternatifnya, Anda dapat mengambil semua rencana (atau rencana yang paling lambat) yang dijalankan dua kali atau lebih saat aplikasi Anda berjalan menggunakan pengambilan rencana otomatis.

Saat mengambil rencana, pengoptimisasi selalu mengatur status rencana yang pertama kali diambil untuk suatu pernyataan terkelola menjadi approved. Pengoptimisasi selalu mengatur status setiap rencana tambahan yang diambil untuk suatu pernyataan terkelola menjadi unapproved. Namun, kadang-kadang lebih dari satu rencana dapat disimpan dengan status approved. Hal ini dapat terjadi ketika beberapa rencana dibuat untuk sebuah pernyataan secara paralel dan sebelum rencana pertama untuk pernyataan tersebut ditetapkan.

Untuk mengontrol jumlah maksimum rencana yang dapat diambil dan disimpan di tampilan dba_plans, atur parameter apg_plan_mgmt.max_plans dalam grup parameter tingkat instans DB Anda. Perubahan pada paramater apg_plan_mgmt.max_plans mengharuskan instans DB di-boot ulang agar nilai baru dapat diterapkan. Untuk informasi selengkapnya, lihat parameter apg_plan_mgmt.max_plans.

Mengambil rencana secara manual untuk pernyataan SQL tertentu

Jika Anda memiliki kumpulan pernyataan SQL yang diketahui untuk dikelola, masukkan pernyataan tersebut ke dalam file skrip SQL lalu ambil rencana secara manual. Hal berikut ini menunjukkan contoh psql tentang cara mengambil rencana kueri secara manual untuk kumpulan pernyataan SQL.

psql> SET apg_plan_mgmt.capture_plan_baselines = manual; psql> \i my-statements.sql psql> SET apg_plan_mgmt.capture_plan_baselines = off;

Setelah mengambil rencana untuk setiap pernyataan SQL, pengoptimisasi menambahkan baris baru ke tampilan apg_plan_mgmt.dba_plans.

Kami menyarankan Anda menggunakan pernyataan EXPLAIN atau EXPLAIN EXECUTE di file skrip SQL. Pastikan Anda memasukkan cukup variasi dalam nilai parameter untuk mengambil semua rencana yang diinginkan.

Jika Anda mengetahui rencana yang lebih baik daripada rencana berbiaya minimum dari pengoptimisasi, Anda mungkin dapat memaksa pengoptimisasi untuk menggunakan rencana yang lebih baik. Untuk melakukannya, tentukan satu atau beberapa petunjuk pengoptimal. Untuk informasi selengkapnya, lihat Memperbaiki rencana menggunakan pg_hint_plan. Untuk membandingkan performa rencana unapproved dan approved serta menyetujui, menolak, atau menghapusnya, lihat Mengevaluasi performa rencana.

Mengambil rencana secara otomatis

Gunakan pengambilan rencana otomatis untuk situasi seperti berikut ini:

  • Anda tidak mengetahui pernyataan SQL spesifik yang ingin Anda kelola.

  • Anda memiliki ratusan atau ribuan pernyataan SQL untuk dikelola.

  • Aplikasi Anda menggunakan API klien. Misalnya, JDBC menggunakan pernyataan yang disiapkan tanpa nama atau pernyataan mode massal yang tidak dapat dinyatakan dalam psql.

Untuk mengambil rencana secara otomatis
  1. Aktifkan pengambilan rencana otomatis dengan mengatur apg_plan_mgmt.capture_plan_baselines ke automatic dalam grup parameter tingkat instans DB. Untuk informasi selengkapnya, lihat Memodifikasi parameter dalam grup parameter DB.

  2. Boot ulang instans DB Anda.

  3. Saat aplikasi berjalan, pengoptimisasi mengambil rencana untuk setiap pernyataan SQL yang berjalan setidaknya dua kali.

    Saat aplikasi berjalan dengan pengaturan parameter manajemen rencana kueri default, pengoptimisasi mengambil rencana untuk setiap pernyataan SQL yang berjalan setidaknya dua kali. Dengan mengambil semua rencana saat menggunakan pengaturan default, overhead run-time yang diperlukan akan sangat kecil dan hal ini dapat dilakukan dalam produksi.

Untuk menonaktifkan pengambilan rencana otomatis
  • Tetapkan parameter apg_plan_mgmt.capture_plan_baselines ke off dari grup parameter tingkat instans DB.

Untuk mengukur performa rencana yang belum disetujui dan menyetujui, menolak, atau menghapusnya, lihat Mengevaluasi performa rencana.