Meningkatkan performa kueri menggunakan Query Insights yang Ditingkatkan untuk AlloyDB

Halaman ini menjelaskan cara menggunakan Insight Kueri yang ditingkatkan untuk membantu Anda mendeteksi dan menganalisis masalah performa kueri secara hampir real time untuk instance kumpulan utama dan kumpulan baca. Untuk ringkasan Query Insight yang ditingkatkan, lihat Ringkasan Query Insight yang ditingkatkan.

Untuk mempelajari cara menggunakan Query Insights standar, lihat Meningkatkan performa kueri menggunakan Query Insights.

Anda dapat menggunakan bantuan Gemini di Database untuk membantu memantau dan memecahkan masalah resource AlloyDB. Untuk mengetahui informasi selengkapnya, lihat Memantau dan memecahkan masalah dengan bantuan Gemini.

Sebelum memulai

Untuk mengakses dasbor Insight Kueri, aktifkan akses ke AlloyDB untuk PostgreSQL di project Google Cloud Anda.

Peran yang diperlukan

Untuk menggunakan Insight Kueri yang ditingkatkan, Anda memerlukan izin untuk melakukan hal berikut:

  • Untuk mengakses Query Insights yang ditingkatkan, Anda memerlukan izin untuk mengakses dasbor Query Insights AlloyDB.
  • Untuk mengedit setelan Query Insights yang ditingkatkan, Anda memerlukan izin untuk memperbarui instance AlloyDB.

Untuk mendapatkan izin ini, minta administrator untuk memberi Anda salah satu peran berikut:

  • Pelihat dasar (roles/viewer)
  • Penampil Insight Database (roles/databaseinsights.viewer)

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Mengaktifkan Insight Kueri yang ditingkatkan

  1. Menyiapkan Gemini di Database.

  2. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  3. Dari daftar cluster dan instance, klik instance.

  4. Klik Query Insight.

  5. Pilih database dan pengguna.

  6. Klik Edit Settings.

  7. Aktifkan Enhanced Query Insights.

  8. Jika Anda mengamankan project Google Cloud dengan Kontrol Layanan VPC, tambahkan databaseinsights.googleapis.com API ke perimeter layanan sebagai layanan yang dibatasi.

  9. Simpan perubahan Anda. Tindakan ini akan memulai ulang instance Anda.

Setelah Insight Kueri yang disempurnakan diaktifkan, Anda dapat mengedit setelan Insight Kueri yang disempurnakan.

Mengedit setelan Insight Kueri yang ditingkatkan

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Dari daftar cluster dan instance, klik instance.

  3. Klik Query Insight.

  4. Pilih database dan pengguna.

  5. Klik Edit Settings, lalu pilih atau batalkan pilihan salah satu setelan berikut:

    • Aktifkan analisis peristiwa tunggu. Analisis peristiwa tunggu dapat membantu Anda mengidentifikasi dan menyelesaikan masalah performa di database. Peristiwa tunggu adalah komponen yang menyebabkan penundaan dalam memproses operasi terkait kueri.
    • Menyimpan komentar kueri. Pelajari konteks kueri dengan melihat komentar yang terkait dengan kueri yang Anda selidiki, sebagai bagian dari panjang kueri. Tidak diperlukan memori tambahan. Jika komentar Anda berisi informasi sensitif, perhatikan akses pengguna.
    • Simpan tag aplikasi. Memungkinkan untuk mempelajari API dan rute pengontrol tampilan model mana yang membuat permintaan, dan mengelompokkan data tersebut untuk menjalankan metrik pada API dan rute tersebut.
    • Sesuaikan panjang kueri. Anda dapat mengubah batas default untuk panjang kueri, dari 256 byte hingga 100 KB. Panjang kueri yang lebih tinggi memerlukan lebih banyak memori. Jika panjang kueri diubah, instance harus dimulai ulang.
    • Aktifkan rencana kueri dan konfigurasikan frekuensi sampling. Rencana kueri memvisualisasikan operasi yang digunakan untuk menyelesaikan sampel kueri. Frekuensi sampling menentukan jumlah sampel kueri yang dapat diambil per menit di seluruh database Anda. Kecepatan yang lebih tinggi memerlukan lebih banyak memori.
    • Aktifkan rekomendasi. Menampilkan rekomendasi pembuatan indeks di halaman Query Insights cluster.
  6. Simpan perubahan Anda.

Mendeteksi dan mendiagnosis masalah performa kueri

Anda dapat menggunakan Query Insight yang ditingkatkan untuk mendeteksi dan mendiagnosis masalah performa. Dasbor Query Insights yang ditingkatkan menampilkan pemuatan database, yang merupakan ukuran pekerjaan (dalam detik CPU) yang dilakukan kueri yang dieksekusi di database yang dipilih dari waktu ke waktu. Setiap kueri yang berjalan menggunakan atau menunggu resource. Beban database adalah rasio jumlah waktu yang dibutuhkan oleh semua kueri yang diselesaikan dalam jangka waktu tertentu, dalam waktu nyata yang berlalu.

Melihat ukuran pekerjaan yang dilakukan oleh kueri yang dijalankan

Grafik pemuatan database memberikan ukuran pekerjaan yang dilakukan (dalam detik CPU) oleh semua kueri yang dieksekusi di database Anda, yang dikelompokkan menurut dimensi yang dipilih. Beban database dibagi menjadi data distribusi yang Anda pilih dari drop-down diagram.

Anda dapat mengelompokkan beban database menurut salah satu dimensi berikut:

  • Kueri
  • Jenis peristiwa tunggu
  • Peristiwa tunggu
  • Database
  • Pengguna

Untuk melihat pekerjaan yang diselesaikan oleh kueri yang dieksekusi di database, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Dari daftar cluster dan instance, klik instance.

  3. Klik Query Insight.

  4. Pilih database dan pengguna.

  5. Pilih total waktu eksekusi yang datanya ingin Anda tampilkan, misalnya, 1 atau 6 jam, atau waktu kustom.

  6. Di drop-down Database Load by execution time, pilih dimensi yang ingin Anda selidiki. Bergantung pada dimensi yang Anda pilih, grafik akan menampilkan kontribusi dimensi yang dipilih terhadap beban database keseluruhan. Misalnya, jika Anda memilih dimensi Peristiwa tunggu dari dropdown diagram pemuatan database, perincian semua peristiwa tunggu yang terjadi selama rentang waktu yang dipilih untuk database dan pengguna yang dipilih akan ditampilkan di diagram pemuatan database.

    Diagram beban database menampilkan data untuk sembilan jenis peristiwa tunggu dan peristiwa tunggu yang didukung di PostgreSQL. Bergantung pada jumlah peristiwa dan jenis tunggu, sepuluh peristiwa dan jenis tunggu berkontribusi teratas akan ditampilkan. Jika ada lebih dari sepuluh peristiwa tunggu, sembilan peristiwa tunggu teratas akan ditampilkan, dan sisanya akan dikelompokkan ke dalam kategori Lainnya. Pendekatan ini juga berlaku untuk dimensi lain seperti Kueri, Database, dan Pengguna.

Melihat kontributor utama pemuatan database

Dengan menggunakan tabel Dimensi teratas menurut pemuatan database, Anda dapat melihat kontributor utama pemuatan database untuk rentang waktu yang dipilih dan dimensi yang dipilih di diagram Pemuatan Database. Bergantung pada dimensi yang Anda pilih di tabel Dimensi teratas menurut beban database, Anda dapat menemukan nilai teratas untuk periode waktu yang dipilih.

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Dari daftar cluster dan instance, klik instance.

  3. Klik Query Insight.

  4. Pilih database dan pengguna.

  5. Pilih total waktu eksekusi yang datanya ingin Anda tampilkan, misalnya, 1 atau 6 jam, atau waktu kustom.

  6. Di tabel Dimensi teratas menurut pemuatan database, Anda dapat mengklik salah satu dari hal berikut:

    Dimensi Deskripsi
    Kueri Tabel menampilkan kueri normalisasi teratas berdasarkan total waktu eksekusi. Untuk setiap kueri, data yang ditampilkan dalam kolom dicantumkan sebagai berikut:
    • Rata2 Waktu Eksekusi (milidetik). Waktu rata-rata untuk mengeksekusi kueri.
    • Total waktu eksekusi (md). Total waktu eksekusi yang diperlukan oleh kueri tertentu.
    • Baris yang Ditampilkan. Jumlah rata-rata baris yang diambil untuk kueri.
    • Times Called. Frekuensi kueri dipanggil oleh aplikasi.
    • %muat menurut dimensi diagram. Diagram pil menggambarkan cara dimensi diagram didistribusikan untuk kueri tertentu.
    Jenis peristiwa tunggu Tabel menampilkan daftar jenis peristiwa tunggu teratas yang terjadi selama rentang waktu yang dipilih.
    • Rata-rata waktu yang dihabiskan dalam waktu tunggu (md). Waktu rata-rata yang dihabiskan kueri dalam jenis peristiwa tunggu tertentu.
    • Total waktu yang dihabiskan dalam waktu tunggu (milidetik). Total waktu eksekusi yang dihabiskan kueri dalam jenis peristiwa tunggu tertentu.
    • Jumlah jenis peristiwa tunggu. Frekuensi jenis peristiwa tunggu tertentu terjadi dalam rentang waktu yang dipilih.
    • %muat menurut dimensi diagram. Diagram pil menggambarkan cara dimensi diagram yang dipilih di drop-down diagram beban database didistribusikan di seluruh jenis peristiwa tunggu tertentu.
    Peristiwa tunggu Tabel menampilkan daftar peristiwa tunggu teratas yang terjadi selama rentang waktu yang dipilih.
    • Rata-rata waktu yang dihabiskan dalam waktu tunggu (md). Waktu rata-rata yang dihabiskan kueri dalam peristiwa tunggu tertentu.
    • Total waktu yang dihabiskan dalam waktu tunggu (milidetik). Total waktu eksekusi yang dihabiskan kueri dalam peristiwa tunggu tertentu.
    • Jumlah peristiwa tunggu. Frekuensi peristiwa tunggu tertentu terjadi dalam rentang waktu yang dipilih.
    • %muat menurut dimensi diagram. Diagram pil menggambarkan cara dimensi diagram yang dipilih di drop-down diagram beban database didistribusikan di seluruh peristiwa tunggu tertentu.
    Database Tabel ini menampilkan daftar database teratas yang berkontribusi pada beban selama rentang waktu yang dipilih di semua kueri yang dijalankan.
    • Rata-rata waktu yang dihabiskan di database (md). Rata-rata waktu yang dihabiskan kueri di database tertentu.
    • Total waktu yang dihabiskan di database (mdtk). Total waktu eksekusi yang dihabiskan kueri di database tertentu.
    • %muat menurut dimensi diagram. Diagram pil menggambarkan cara dimensi diagram yang dipilih di drop-down diagram pemuatan database didistribusikan di seluruh database tertentu.
    Pengguna Tabel menampilkan daftar pengguna teratas untuk rentang waktu yang dipilih di semua kueri yang dieksekusi.
    • Rata-rata waktu yang dihabiskan di pengguna (milidetik). Waktu rata-rata yang dihabiskan kueri untuk pengguna tertentu.
    • Total waktu yang dihabiskan di pengguna (milidetik). Total waktu eksekusi yang dihabiskan kueri di pengguna tertentu.
    • %muat menurut dimensi diagram. Diagram pil menggambarkan cara dimensi diagram yang dipilih di drop-down diagram beban database didistribusikan di seluruh pengguna tertentu.

Melihat waktu eksekusi kueri

Insight Kueri yang Ditingkatkan menampilkan sepuluh kueri teratas yang berkontribusi pada pemuatan database di tabel Dimensi teratas menurut pemuatan database. Kueri teratas adalah kueri yang memiliki kontribusi terbesar pada pemuatan database untuk rentang waktu yang dipilih. Kueri berikutnya adalah persentase dari waktu eksekusi terpanjang.

Untuk mempelajari pengaruh nilai yang berbeda dari dimensi diagram yang dipilih (kueri, jenis peristiwa tunggu, peristiwa tunggu, database, dan pengguna) terhadap waktu eksekusi parameter di Dimensi teratas menurut beban database, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Dari daftar cluster dan instance, klik instance.

  3. Klik Query Insight.

  4. Pilih database dan pengguna.

  5. Lihat % pemuatan menurut dimensi diagram di tabel Dimensi teratas menurut pemuatan database untuk mempelajari pengaruh parameter dalam tabel terhadap parameter dalam diagram Pemuatan Database.

    Misalnya, saat Anda memilih Semua Kueri pada diagram Pemuatan Database dan mengklik tab Kueri di tabel Dimensi teratas menurut pemuatan database, % pemuatan menurut Kueri akan menampilkan daftar kueri yang berkontribusi paling banyak pada pemuatan database di database yang dipilih selama jangka waktu tertentu.

Melihat detail tentang waktu eksekusi kueri

Anda dapat melihat detail tentang waktu eksekusi kueri di Detail selengkapnya, termasuk dimensi yang Anda pilih di diagram dan tabel pemuatan database, definisi setiap peristiwa tunggu, dan data yang dienkapsulasi dalam kategori Lainnya.

Detail selengkapnya juga menampilkan detail informasi kompleks yang tidak ditampilkan di tempat lain di layar detail kueri. Informasi ini mencakup definisi setiap peristiwa tunggu.

Untuk melihat detail tentang waktu eksekusi kueri, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Dari daftar cluster dan instance, klik instance.

  3. Klik Query Insight.

  4. Pilih database dan pengguna.

  5. Di tabel Dimensi teratas menurut pemuatan database, klik Detail selengkapnya untuk kueri.

Query Insights yang Ditingkatkan menampilkan kueri yang dinormalisasi ($1, $2, dan seterusnya) untuk mengganti nilai konstanta literal. Contoh:

UPDATE
  "demo_customer"
SET
  "customer_id" = $1::uuid,
  "name" = $2,
  "address" = $3,
  "rating" = $4,
  "balance" = $5,
  "current_city" = $6,
  "current_location" = $7
WHERE
  "demo_customer"."id" = $8

Nilai konstanta diabaikan sehingga Insight Kueri yang ditingkatkan dapat menggabungkan kueri serupa dan menghapus informasi Informasi Identitas Pribadi (PII) yang mungkin ditampilkan konstanta tersebut.

Menentukan beban database untuk kueri normal

Untuk menampilkan ukuran waktu dan penggunaan resource berdasarkan eksekusi kueri (dalam detik CPU) yang dilakukan kueri yang dinormalisasi dan dipilih di database yang dipilih dari waktu ke waktu, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Dari daftar cluster dan instance, klik instance.

  3. Klik Query Insight.

  4. Pilih database dan pengguna.

  5. Klik Kueri di diagram Beban Database. Untuk menghitung beban database, diagram Beban Database menggunakan jumlah waktu yang dibutuhkan oleh kueri yang dinormalisasi dan diselesaikan dalam batas menit hingga waktu berlalu aktual.

Di bagian atas diagram Beban Database, 10 KB karakter pertama kueri yang dinormalisasi akan ditampilkan, dengan literal dihapus karena alasan agregasi dan informasi identitas pribadi (PII).

Untuk membantu menentukan distribusi waktu yang dihabiskan di setiap status ini, Insight Kueri yang ditingkatkan mendistribusikan per pemuatan kueri yang dinormalisasi ke dalam peristiwa tunggu dan jenis peristiwa tunggu.

Anda dapat mempelajari latensi kueri menggunakan diagram Latensi. Latensi adalah waktu yang dibutuhkan oleh kueri yang dinormalkan untuk menyelesaikan proses dalam waktu real time yang telah berlalu. Latensi kueri paralel diukur dalam waktu nyata yang berlalu meskipun beban database dapat lebih tinggi untuk kueri tersebut karena beberapa core digunakan untuk menjalankan bagian dari kueri.

Anda dapat memfilter berdasarkan persentil untuk melihat persentil ke-50, 95, atau 99 untuk mendeteksi kueri yang tidak mematuhi waktu eksekusi yang diharapkan. Untuk menganalisis latensi historis untuk kueri yang dinormalisasi, ubah periode waktu.

Menganalisis kueri yang dinormalisasi

Paket kueri membantu Anda memahami dan menganalisis kueri yang dinormalisasi dengan memberikan perincian berbagai operasi dalam contoh kueri Anda.

Contoh paket kueri memberikan tampilan EXPLAIN ANALYZE untuk contoh paket kueri yang terkait dengan kueri yang dinormalisasi. Ini adalah rencana kueri yang dijalankan yang memberikan perincian waktu aktif yang digunakan oleh setiap operasi dalam rencana kueri.

Untuk melihat contoh rencana kueri, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Dari daftar cluster dan instance, klik instance.

  3. Klik Query Insight.

  4. Pilih database dan pengguna.

  5. Pilih total waktu eksekusi yang datanya ingin Anda tampilkan, misalnya, 1 atau 6 jam, atau waktu kustom.

  6. Di tabel Dimensi teratas menurut pemuatan database, klik kueri.

  7. Di Contoh paket kueri, klik salah satu titik pada diagram untuk melihat paket kueri untuk kueri tersebut.

Memantau dan memecahkan masalah performa aplikasi menggunakan tag

Insight Kueri yang Ditingkatkan menyediakan pemantauan yang berfokus pada aplikasi dan menyederhanakan diagnosis performa aplikasi yang dibuat dengan pemetaan relasional objek (ORM). Pemberian tag kueri membantu Anda menemukan masalah pada konstruksi tingkat yang lebih tinggi, seperti menggunakan logika bisnis, microservice, atau beberapa konstruksi lainnya. Anda dapat menggunakan tag di aplikasi untuk membantu melakukan hal berikut:

  • Memantau performa database.
  • Gunakan Sqlcommenter untuk mengidentifikasi masalah performa yang disebabkan oleh kode aplikasi.
  • Menganalisis beban database.
  • Lihat pemuatan per tag.

Untuk mempelajari cara menggunakan tag di Query Insights, lihat Meningkatkan performa kueri menggunakan Query Insights.

Memecahkan masalah aplikasi di lapisan database

Enhanced Query Insights menyediakan tampilan rekaman aktivitas menyeluruh dalam konteks untuk membantu Anda memahami masalah pada aplikasi di lapisan database untuk permintaan tertentu. Rekaman aktivitas aplikasi menyeluruh dalam konteks membantu Anda menentukan sumber kueri yang bermasalah, misalnya, berdasarkan model, tampilan, pengontrol, dan rute.

Saat Anda mengaktifkan OpenTelemetry, informasi span akan dikirim ke database bersama dengan informasi tag di dalam komentar SQL. Trace dari aplikasi ke Cloud Logging ditautkan dengan trace paket kueri database untuk mengidentifikasi sumber masalah.

Untuk melihat rekaman aktivitas dalam konteks, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Clusters.

    Buka Cluster

  2. Dari daftar cluster dan instance, klik instance.

  3. Klik Query Insight.

  4. Pilih database dan pengguna.

  5. Klik entri apa pun dalam tabel Dimensi teratas menurut beban database.

  6. Di halaman Detail Insight Kueri, klik AKHIR ke AKHIR.

Anda juga dapat menggunakan Cloud Trace untuk melihat pelacakan menyeluruh untuk setiap langkah dalam paket kueri. Untuk mengakses Cloud Trace, pilih Operations > Trace.

Pertanyaan Umum

Bagian ini memberikan jawaban atas pertanyaan umum (FAQ) tentang Insight Kueri yang ditingkatkan.

Mengapa string kueri terpotong?

Secara default, Query Insights yang ditingkatkan menampilkan 10 KB dalam string kueri. Anda dapat meningkatkan tampilan hingga 100 KB.

Mengapa beban CPU saya berada di atas garis inti maksimum pada diagram Beban Database?

Muatan CPU memperhitungkan waktu proses berjalan dan waktu menunggu penjadwal Linux menjadwalkan proses server yang berjalan, sehingga beban CPU dapat melampaui garis inti maksimum.

Dapatkah saya menggunakan metrik Query Insights standar?

Ya. Analisis Kueri Standar menghasilkan penghitung yang dapat diakses melalui stackdriver. Saat Query Insights yang ditingkatkan masih dalam Pratinjau, metrik ini tersedia menggunakan Cloud Monitoring API dengan Query Insights yang ditingkatkan. Untuk mengetahui informasi selengkapnya, lihat metrikGoogle Cloud .

Berapa panjang string kueri maksimum?

Untuk plugin Query Insight standar, panjang string kueri maksimum dibatasi ke 4,5 KB karakter. Untuk Insight Kueri yang ditingkatkan, panjang string default adalah 10 KB dan panjang maksimum dibatasi hingga 100 KB.

Dapatkah saya menggunakan Query Insights yang ditingkatkan dalam replikasi lintas-region?

Anda tidak dapat mengaktifkan Insight Kueri yang ditingkatkan di cluster dengan instance sekunder. Sebelum membuat instance sekunder di cluster, Anda harus menonaktifkan Insight kueri yang ditingkatkan di semua instance dalam cluster jika Insight Kueri yang ditingkatkan sudah diaktifkan.

Langkah selanjutnya