Bagikan melalui


Skenario penggunaan untuk Query Store

BERLAKU UNTUK: Azure Database for PostgreSQL - Server Tunggal

Penting

Azure Database for PostgreSQL - Server Tunggal berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke Azure Database for PostgreSQL - Server Fleksibel. Untuk informasi selengkapnya tentang migrasi ke Azure Database for PostgreSQL - Server Fleksibel, lihat Apa yang terjadi pada Server Tunggal Azure Database for PostgreSQL?.

Anda dapat menggunakan Query Store dalam berbagai skenario yang sangat mementingkan melacak dan mempertahankan performa beban kerja yang dapat diprediksi. Perhatikan contoh berikut:

  • Mengidentifikasi dan menyetel kueri mahal teratas
  • Pengujian A/B
  • Menjaga performa tetap stabil selama peningkatan
  • Mengidentifikasi dan meningkatkan beban kerja ad hoc

Mengidentifikasi dan menyetel kueri mahal

Mengidentifikasi kueri yang sudah berjalan lama

Gunakan tampilan Wawasan Performa Kueri di portal Microsoft Azure untuk mengidentifikasi dengan cepat kueri yang sudah berjalan paling lama. Kueri ini biasanya cenderung mengonsumsi sumber daya dalam jumlah yang signifikan. Mengoptimalkan pertanyaan yang sudah berjalan paling lama Anda dapat meningkatkan performa dengan membebaskan sumber daya untuk digunakan oleh kueri lain yang berjalan di sistem Anda.

Kueri target dengan delta performa

Query Store memotong data performa ke dalam jendela waktu, sehingga Anda bisa melacak performa kueri dari waktu ke waktu. Ini membantu Anda mengidentifikasi dengan tepat kueri mana yang berkontribusi pada peningkatan waktu keseluruhan yang dihabiskan. Sebagai hasilnya, Anda dapat melakukan pemecahan masalah beban kerja yang ditargetkan.

Menyetel kueri mahal

Saat Anda mengidentifikasi kueri dengan performa suboptimal, tindakan yang Anda ambil bergantung pada sifat masalahnya:

  • Gunakan Rekomendasi Performa untuk menentukan apakah ada indeks yang disarankan. Jika ya, buat indeks lalu gunakan Query Store untuk mengevaluasi performa kueri setelah membuat indeks.
  • Pastikan bahwa statistik sudah diperbarui untuk tabel yang mendasari yang digunakan oleh kueri.
  • Pertimbangkan untuk menulis ulang kueri mahal. Misalnya, manfaatkan parameterisasi kueri dan kurangi penggunaan SQL dinamis. Terapkan logika optimal saat membaca data seperti menerapkan pemfilteran data di sisi database, bukan di sisi aplikasi.

Pengujian A/B

Gunakan Query Store untuk membandingkan performa beban kerja sebelum dan sesudah perubahan aplikasi yang akan Anda perkenalkan. Contoh skenario untuk menggunakan Query Store untuk menilai dampak perubahan aplikasi atau lingkungan terhadap performa beban kerja:

  • Meluncurkan versi baru aplikasi.
  • Menambahkan sumber daya tambahan ke server.
  • Membuat indeks yang tidak ada di tabel yang direferensikan oleh kueri mahal.

Dalam salah satu skenario ini, terapkan alur kerja berikut:

  1. Jalankan beban kerja Anda dengan Query Store sebelum perubahan yang direncanakan untuk menghasilkan garis besar performa.
  2. Terapkan perubahan aplikasi pada momen yang dikontrol secara tepat waktu.
  3. Lanjutkan menjalankan beban kerja cukup lama untuk menghasilkan citra performa sistem setelah perubahan.
  4. Bandingkan hasil dari sebelum dan sesudah perubahan.
  5. Putuskan apakah Anda akan menyimpan perubahan atau memutar kembali.

Mengidentifikasi dan meningkatkan beban kerja ad hoc

Beberapa beban kerja tidak memiliki kueri dominan yang dapat Anda setel untuk meningkatkan performa aplikasi secara keseluruhan. Beban kerja tersebut biasanya ditandai dengan sejumlah besar kueri unik, masing-masing mengonsumsi sebagian sumber daya sistem. Setiap kueri unik jarang dijalankan, jadi konsumsi runtime-nya masing-masing tidak terlalu penting. Di sisi lain, mengingat bahwa aplikasi menghasilkan kueri baru sepanjang waktu, sebagian besar sumber daya sistem dihabiskan untuk kompilasi kueri, dan hal ini tidak optimal. Biasanya, situasi ini terjadi jika aplikasi Anda menghasilkan kueri (alih-alih menggunakan prosedur tersimpan atau kueri berparameter) atau jika aplikasi bergantung pada kerangka kerja pemetaan relasional objek yang menghasilkan kueri secara default.

Jika Anda memegang kontrol atas kode aplikasi, Anda dapat mempertimbangkan untuk menulis ulang lapisan akses data untuk menggunakan prosedur tersimpan atau kueri berparameter. Namun, situasi ini juga dapat ditingkatkan tanpa perubahan aplikasi dengan memaksa parameterisasi kueri untuk seluruh database (semua kueri) atau untuk templat kueri individual dengan hash kueri yang sama.

Langkah berikutnya