Praktik terbaik untuk manajemen rencana kueri Aurora PostgreSQL - Amazon Aurora

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

Praktik terbaik untuk manajemen rencana kueri Aurora PostgreSQL

Manajemen rencana kueri memungkinkan Anda mengendalikan cara dan waktu perubahan rencana eksekusi kueri. Sebagai DBA, tujuan utama Anda saat menggunakan QPM termasuk mencegah regresi ketika ada perubahan pada basis data Anda, dan mengontrol apakah akan mengizinkan pengoptimisasi menggunakan rencana baru. Di bagian berikut ini, Anda dapat menemukan beberapa praktik terbaik yang direkomendasikan untuk menggunakan manajemen rencana kueri. Pendekatan manajemen rencana yang proaktif dan reaktif berbeda dari segi cara dan waktu persetujuan terhadap penggunaan rencana baru.

Manajemen rencana proaktif untuk membantu mencegah regresi performa

Guna mencegah regresi performa rencana terjadi, Anda perlu mengembangkan acuan dasar rencana dengan menjalankan prosedur yang membandingkan performa rencana yang baru ditemukan dengan performa acuan dasar yang sudah ada untuk rencana yang Disetujui, lalu secara otomatis menyetujui rangkaian rencana tercepat sebagai acuan dasar baru. Dengan cara ini, acuan dasar rencana meningkat dari waktu ke waktu seiring rencana yang lebih cepat ditemukan.

  1. Di lingkungan pengembangan, temukan pernyataan SQL yang memiliki dampak terbesar pada performa atau throughput sistem. Kemudian, ambil rencana untuk pernyataan tersebut seperti yang dijelaskan dalam Mengambil rencana secara manual untuk pernyataan SQL tertentu dan Mengambil rencana secara otomatis.

  2. Ekspor rencana yang diambil dari lingkungan pengembangan lalu impor ke lingkungan produksi. Untuk informasi selengkapnya, lihat Mengekspor dan mengimpor rencana.

  3. Dalam produksi, jalankan aplikasi Anda dan terapkan penggunaan rencana terkelola yang disetujui. Untuk informasi selengkapnya, lihat Menggunakan rencana terkelola Aurora PostgreSQL. Saat aplikasi berjalan, tambahkan juga rencana baru saat pengoptimisasi menemukan rencana tersebut. Untuk informasi selengkapnya, lihat Mengambil rencana secara otomatis.

  4. Analisis rencana yang belum disetujui dan setujui rencana yang beperforma baik. Untuk informasi selengkapnya, lihat Mengevaluasi performa rencana.

  5. Saat aplikasi Anda terus berjalan, pengoptimisasi mulai menggunakan rencana baru sesuai kebutuhan.

Memastikan stabilitas rencana setelah upgrade versi mayor

Setiap versi mayor PostgreSQL menyertakan penyempurnaan dan perubahan pada pengoptimisasi kueri yang dirancang untuk menaikkan performa. Namun, rencana eksekusi kueri yang dihasilkan oleh pengoptimisasi di versi sebelumnya dapat menyebabkan regresi performa di versi yang di-upgrade yang lebih baru. Anda dapat menggunakan manajemen rencana kueri untuk mengatasi masalah performa ini dan untuk memastikan stabilitas rencana setelah upgrade versi mayor.

Pengoptimisasi selalu menggunakan rencana yang Disetujui dengan biaya minimum, meskipun ada lebih dari satu rencana yang Disetujui untuk pernyataan yang sama. Setelah upgrade, pengoptimisasi mungkin menemukan rencana baru, tetapi rencana tersebut akan disimpan sebagai rencana yang Tidak Disetujui. Rencana ini dilakukan hanya jika disetujui menggunakan gaya reaktif manajemen rencana dengan parameter unapproved_plan_execution_threshold. Anda dapat memaksimalkan stabilitas rencana menggunakan gaya proaktif manajemen rencana dengan parameter evolve_plan_baselines. Parameter ini membandingkan performa rencana baru dengan rencana lama dan menyetujui atau menolak rencana yang setidaknya 10% lebih cepat dari rencana terbaik berikutnya.

Setelah upgrade, Anda dapat menggunakan fungsi evolve_plan_baselines untuk membandingkan performa rencana sebelum dan sesudah upgrade menggunakan pengikatan parameter kueri Anda. Langkah-langkah berikut mengasumsikan bahwa Anda telah menggunakan rencana terkelola yang disetujui di lingkungan produksi Anda, seperti yang dijelaskan dalam Menggunakan rencana terkelola Aurora PostgreSQL.

  1. Sebelum upgrade, jalankan aplikasi Anda bersama pengelola rencana kueri yang berjalan. Saat aplikasi berjalan, tambahkan juga rencana baru saat pengoptimisasi menemukan rencana tersebut. Untuk informasi selengkapnya, lihat Mengambil rencana secara otomatis.

  2. Evaluasi performa setiap rencana. Untuk informasi selengkapnya, lihat Mengevaluasi performa rencana.

  3. Setelah upgrade, analisis kembali rencana Anda yang disetujui menggunakan fungsi evolve_plan_baselines. Bandingkan performa sebelum dan sesudah menggunakan pengikatan parameter kueri Anda. Jika rencana baru cepat, Anda dapat menambahkannya ke rencana yang disetujui. Jika lebih cepat dari rencana lain untuk pengikatan parameter yang sama, maka Anda dapat menandai rencana yang lebih lambat sebagai Ditolak.

    Untuk informasi selengkapnya, lihat Menyetujui rencana yang lebih baik. Untuk informasi referensi tentang fungsi ini, lihat apg_plan_mgmt.evolve_plan_baselines.

Untuk informasi selengkapnya, lihat artikel Memastikan performa yang konsisten setelah upgrade versi mayor dengan Manajemen Rencana Kueri Amazon Aurora PostgreSQL-Compatible Edition.

catatan

Saat Anda melakukan upgrade versi mayor menggunakan replikasi logis atau AWS DMS, pastikan Anda mereplikasi skema apg_plan_mgmt untuk memastikan rencana yang sudah ada disalin ke instans yang di-upgrade. Untuk informasi selengkapnya tentang replikasi logis, lihat Menggunakan replikasi logis untuk melakukan upgrade versi mayor untuk Aurora PostgreSQL.

Manajemen rencana reaktif untuk mendeteksi dan memperbaiki regresi performa

Dengan memantau aplikasi Anda saat berjalan, Anda dapat mendeteksi rencana yang menyebabkan regresi performa. Saat Anda mendeteksi regresi, Anda dapat secara manual menolak atau memperbaiki rencana yang buruk dengan mengikuti langkah-langkah berikut:

  1. Saat aplikasi Anda berjalan, terapkan penggunaan rencana terkelola dan tambahkan secara otomatis rencana yang baru ditemukan sebagai rencana yang tidak disetujui. Untuk informasi selengkapnya, lihat Menggunakan rencana terkelola Aurora PostgreSQL dan Mengambil rencana secara otomatis.

  2. Pantau regresi performa pada aplikasi Anda yang sedang berjalan.

  3. Ketika Anda menemukan regresi rencana, atur status rencana menjadi rejected. Saat pengoptimisasi kembali menjalankan pernyataan SQL, pengoptimisasi akan secara otomatis mengabaikan rencana yang ditolak dan menggunakan rencana berbeda yang telah disetujui. Untuk informasi selengkapnya, lihat Menolak atau menonaktifkan rencana yang lebih lambat.

    Dalam beberapa kasus, Anda mungkin lebih memilih untuk memperbaiki rencana yang buruk daripada menolak, menonaktifkan, atau menghapusnya. Gunakan ekstensi pg_hint_plan untuk bereksperimen dalam meningkatkan rencana. Dengan pg_hint_plan, Anda menggunakan komentar khusus untuk meminta pengoptimisasi mengganti caranya dalam membuat rencana. Untuk informasi selengkapnya, lihat Memperbaiki rencana menggunakan pg_hint_plan.