Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK: Azure Database for PostgreSQL - Server Fleksibel
Anda dapat menggunakan penyimpanan kueri dalam berbagai skenario di mana melacak dan mempertahankan performa beban kerja yang dapat diprediksi sangat penting. Perhatikan contoh berikut:
- Identifikasi dan sesuaikan kueri mahal.
- Lakukan pengujian A/B.
- Identifikasi dan tingkatkan beban kerja improvisasi.
Mengidentifikasi dan menyetel kueri mahal
Mengidentifikasi kueri yang berjalan lama
Gunakan tampilan penyimpanan kueri pada azure_sys
database server Anda, untuk mengidentifikasi kueri terlama dengan cepat. Kueri ini cenderung menggunakan sumber daya terbanyak. 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
Penyimpanan kueri mengiris data performa ke 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. Akibatnya Anda dapat melakukan pemecahan masalah terlingkup dari beban kerja Anda.
Menyetel kueri mahal
Saat Anda mengidentifikasi kueri dengan performa suboptimal, tindakan yang Anda ambil bergantung pada sifat masalahnya. Beberapa tindakan ini mungkin:
- 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 ad-hoc. Terapkan logika optimal saat membaca data, seperti menerapkan pemfilteran data di sisi database, alih-alih melakukannya di sisi aplikasi.
Melakukan pengujian A/B
Gunakan penyimpanan kueri untuk membandingkan performa beban kerja sebelum dan sesudah perubahan aplikasi yang Anda rencanakan untuk diperkenalkan, atau sebelum dan sesudah migrasi. Contoh skenario untuk menggunakan penyimpanan kueri untuk menilai dampak perubahan pada performa beban kerja:
- Migrasi antara versi utama PostgreSQL.
- Meluncurkan versi baru aplikasi.
- Mengubah jumlah sumber daya yang diberikan ke server.
- Mengubah salah satu parameter server yang memengaruhi perilaku server.
- Membuat indeks yang tidak ada di tabel yang direferensikan oleh kueri mahal.
- Migrasi dari server tunggal Azure Database for PostgreSQL ke server fleksibel Azure Database for PostgreSQL.
Dalam salah satu skenario ini, terapkan alur kerja berikut:
- Jalankan beban kerja Anda dengan penyimpanan kueri sebelum perubahan yang direncanakan, untuk menghasilkan garis besar performa.
- Terapkan perubahan yang diinginkan pada saat yang dikontrol tepat waktu.
- Lanjutkan menjalankan beban kerja selama waktu yang memadai, sehingga Anda dapat memiliki tampilan yang jelas tentang performa sistem setelah perubahan.
- Bandingkan hasil dari sebelum dan sesudah perubahan.
- Putuskan apakah akan menyimpan perubahan atau mengembalikannya.
Mengidentifikasi dan meningkatkan beban kerja improvisasi
Beberapa beban kerja tidak memiliki kueri dominan yang dapat Anda sesuaikan 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 secara individual konsumsi runtime mereka tidak penting. Di sisi lain, mengingat bahwa aplikasi menghasilkan kueri baru sepanjang waktu, sebagian besar sumber daya sistem dihabiskan untuk kompilasi kueri, yang 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 kendali atas kode aplikasi, Anda mungkin 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.