Halaman ini menjelaskan cara menggunakan dasbor insight kueri untuk mendeteksi dan menganalisis masalah performa. Untuk ringkasan fitur ini, lihat Ringkasan insight kueri.
Anda dapat menggunakan Gemini Cloud Assist untuk membantu Anda memantau dan memecahkan masalah resource AlloyDB. Untuk mengetahui informasi selengkapnya, lihat Memantau dan memecahkan masalah dengan bantuan Gemini.
Sebelum memulai
Jika Anda atau pengguna lain perlu melihat rencana kueri atau melakukan pelacakan menyeluruh, Anda memerlukan izin Identity and Access Management (IAM) tertentu untuk melakukannya. Anda dapat membuat peran khusus dan menambahkan izin IAM yang diperlukan ke peran tersebut. Kemudian, Anda dapat menambahkan peran ini ke setiap akun pengguna yang menggunakan insight kueri untuk memecahkan masalah. Lihat Membuat peran khusus.
Peran kustom harus memiliki izin IAM berikut: cloudtrace.traces.get
.
Membuka dasbor insight kueri
Untuk membuka dasbor insight kueri, lakukan langkah-langkah berikut:
- Dari daftar cluster dan instance, klik instance.
- Klik Buka Insight kueri untuk mengetahui info selengkapnya tentang kueri dan performa di bawah grafik metrik di halaman Ringkasan cluster atau pilih tab Insight kueri di panel navigasi sebelah kiri.
Di halaman berikutnya, Anda dapat menggunakan opsi berikut untuk memfilter hasil:
- Pemilih instance. Memungkinkan Anda memilih instance utama atau instance kumpulan baca di cluster. Secara default, instance utama dipilih. Detail yang ditampilkan digabungkan untuk semua instance kumpulan baca yang terhubung dan nodenya.
- Database. Memfilter pemuatan kueri di database tertentu atau semua database.
- Pengguna. Memfilter pemuatan kueri dari akun pengguna tertentu.
- Alamat klien. Memfilter pemuatan kueri dari alamat IP tertentu.
- Rentang waktu. Memfilter pemuatan kueri berdasarkan rentang waktu, seperti jam, hari, minggu, atau rentang kustom.

Mengedit konfigurasi insight kueri
Insight kueri diaktifkan secara default di instance AlloyDB. Anda dapat mengedit konfigurasi insight kueri default.
Untuk mengedit konfigurasi insight kueri untuk instance AlloyDB, ikuti langkah-langkah berikut:
Konsol
Di konsol Google Cloud , buka halaman Clusters.
Klik cluster di kolom Nama Resource.
Klik Insight kueri di panel navigasi sebelah kiri.
Pilih Primary atau Read pool dari daftar Query insights, lalu klik Edit.
Edit kolom Query Insight:
Untuk mengubah batas default 1024 byte pada panjang kueri yang akan dianalisis AlloyDB, di kolom Panjang kueri, masukkan angka dari 256 hingga 4500.
Instance dimulai ulang setelah Anda mengedit kolom ini.
Catatan: Batas panjang kueri yang lebih tinggi memerlukan lebih banyak memori.
Untuk menyesuaikan set fitur insight kueri, sesuaikan opsi berikut:
Sampling paket kueri: Centang kotak ini untuk memvisualisasikan operasi yang digunakan untuk menyelesaikan sampel kueri. Frekuensi sampling menentukan jumlah maksimum kueri yang dapat disampel AlloyDB per menit untuk instance per node.
Di kolom Maximum sampling rate, masukkan angka dari satu hingga 20. Secara default, rasio pengambilan sampel ditetapkan ke 5. Untuk menonaktifkan pengambilan sampel, hapus centang pada kotak Pengambilan sampel rencana kueri.
Simpan alamat IP klien: Centang kotak ini untuk mengetahui asal kueri Anda, dan untuk mengelompokkan informasi tersebut guna menjalankan metrik.
Simpan tag aplikasi: Centang kotak ini untuk mengetahui aplikasi yang diberi tag mana yang membuat permintaan, dan untuk mengelompokkan informasi tersebut guna menjalankan metrik. Untuk mengetahui informasi selengkapnya tentang tag aplikasi, lihat spesifikasi.
Klik Update instance.
gcloud
Untuk mengaktifkan insight kueri untuk instance AlloyDB menggunakan perintah Google Cloud CLI, lakukan hal berikut:
- Menginstal Google Cloud CLI.
- Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Berikut contohnya:
gcloud alloydb instances update INSTANCE \
--cluster=CLUSTER \
--project=PROJECT \
--region=REGION \
--insights-config-query-string-length=QUERY_LENGTH \
--insights-config-query-plans-per-minute=QUERY_PLANS \
--insights-config-record-application-tags \
--insights-config-record-client-address
Ganti kode berikut:
INSTANCE
: ID instance yang akan diupdateCLUSTER
: ID cluster instancePROJECT
: ID project clusterREGION
: region cluster—misalnya,us-central1
QUERY_LENGTH
: panjang kueri yang berkisar dari 256 hingga 4.500QUERY_PLANS
: jumlah rencana kueri yang akan dikonfigurasi per menit.
Selain itu, gunakan satu atau beberapa flag opsional berikut:
--insights-config-query-string-length
: Menyetel batas panjang kueri default ke nilai yang ditentukan dari 256 hingga 4500 byte. Panjang kueri default adalah 1024 byte. Panjang kueri yang lebih tinggi lebih berguna untuk kueri analitis, tetapi juga memerlukan lebih banyak memori. Jika panjang kueri diubah, Anda harus memulai ulang instance. Anda masih dapat menambahkan tag ke kueri yang melebihi batas panjang.--insights-config-query-plans-per-minute
: Secara default, maksimum lima sampel paket kueri yang dijalankan diambil per menit di semua database pada instance. Ubah nilai ini menjadi angka dari 1 hingga 20. Untuk menonaktifkan pengambilan sampel, masukkan 0. Meningkatkan frekuensi sampling kemungkinan akan memberi Anda lebih banyak titik data, tetapi dapat menambah overhead performa.--insights-config-record-client-address
: Menyimpan alamat IP klien tempat kueri berasal dan membantu Anda mengelompokkan data tersebut untuk menjalankan metrik pada kueri tersebut. Kueri berasal dari lebih dari satu host. Meninjau grafik kueri dari alamat IP klien dapat membantu mengidentifikasi sumber masalah. Jika Anda tidak ingin menyimpan alamat IP klien, gunakan--no-insights-config-record-client-address
.--insights-config-record-application-tags
: Menyimpan tag aplikasi yang membantu Anda menentukan API dan rute pengontrol tampilan model (MVC) yang membuat permintaan dan mengelompokkan data untuk menjalankan metrik pada tag tersebut. Opsi ini mengharuskan Anda mengomentari kueri dengan sekumpulan tag tertentu. Jika Anda tidak ingin menyimpan tag aplikasi, gunakan--no-insights-config-record-application-tags
.
Terraform
Untuk menggunakan Terraform guna mengonfigurasi insight kueri, gunakan resource google_alloydb_instance
.
Berikut contohnya:
query_insights_config { query_string_length = QUERY_STRING_LENGTH_VALUE record_application_tags = RECORD_APPLICATION_TAG_VALUE record_client_address = RECORD_CLIENT_ADDRESS_VALUE query_plans_per_minute = QUERY_PLANS_PER_MINUTE_VALUE5 }
Ganti kode berikut:
QUERY_STRING_LENGTH_VALUE
: panjang string kueri. Nilai defaultnya adalah1024
. Semua bilangan bulat antara 256 dan 4.500 valid.RECORD_APPLICATION_TAG_VALUE
: merekam tag aplikasi untuk instance. Nilai defaultnya adalahtrue
.RECORD_CLIENT_ADDRESS_VALUE
: mencatat alamat klien untuk instance. Nilai defaultnya adalahtrue
.QUERY_PLANS_PER_MINUTE_VALUE
: jumlah paket eksekusi kueri yang diambil oleh Insights per menit untuk semua kueri yang digabungkan. Nilai defaultnya adalah5
. Semua bilangan bulat antara 0 dan 20 valid.Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Contoh konfigurasi instance dengan konfigurasi insight kueri yang ditambahkan akan muncul sebagai berikut:
resource "google_alloydb_instance" "instance_name" { provider = "google-beta" cluster = google_alloydb_cluster.default.name instance_id = "instance_id" instance_type = "PRIMARY" machine_config { cpu_count = 8 } query_insights_config { query_string_length = 1024 record_application_tags = false record_client_address = false query_plans_per_minute = 5 } depends_on = [google_alloydb_instance.default] }
REST v1
Contoh ini mengonfigurasi setelan kemampuan observasi pada instance AlloyDB Anda. Untuk mengetahui daftar lengkap parameter panggilan ini, lihat Metode: projects.locations.clusters.instances.patch.
Untuk mengonfigurasi setelan insight kueri, ubah kolom opsional sesuai kebutuhan. Untuk mengetahui daftar lengkap kolom untuk panggilan ini, lihat QueryInsightsInstanceConfig.
Sebelum menggunakan data permintaan apa pun, lakukan penggantian berikut:
CLUSTER_ID
: ID cluster yang Anda buat. Nama harus diawali dengan huruf kecil dan dapat berisi huruf kecil, angka, dan tanda hubung.PROJECT_ID
: ID project tempat Anda ingin menempatkan cluster.LOCATION_ID
: ID region cluster.INSTANCE_ID
: nama instance utama yang ingin Anda buat.
Untuk mengubah konfigurasi instance, gunakan permintaan PATCH
berikut:
PATCH https://alloydb.googleapis.com/v1beta/{instance.name=projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?updateMask=observabilityConfig.enabled}
Isi JSON permintaan yang mengonfigurasi semua kolom kemampuan pengamatan terlihat sebagai berikut:
{
"queryStringLength": integer,
"recordApplicationTags": boolean,
"recordClientAddress": boolean,
"queryPlansPerMinute": integer
}
Meningkatkan performa kueri
Insight kueri memecahkan masalah kueri AlloyDB untuk mencari masalah performa. Dasbor Query Insight menampilkan pemuatan kueri berdasarkan faktor yang Anda pilih. Pemuatan kueri adalah pengukuran total pekerjaan untuk semua kueri dalam instance dalam rentang waktu yang dipilih.
Insight kueri membantu Anda mendeteksi dan menganalisis masalah performa kueri. Untuk memecahkan masalah kueri dengan insight kueri, ikuti langkah-langkah berikut:
- Lihat pemuatan database untuk semua kueri.
- Identifikasi kueri atau tag yang bermasalah.
- Periksa kueri atau tag untuk mengidentifikasi masalah.
- Periksa rekaman aktivitas yang dihasilkan oleh contoh kueri.
Melihat muatan database untuk semua kueri
Dasbor Query Insights tingkat atas menampilkan grafik Pemuatan database — semua kueri teratas menggunakan data yang difilter. Pemuatan kueri database adalah ukuran pekerjaan (dalam detik CPU) yang dilakukan oleh kueri yang dieksekusi di database yang dipilih dari waktu ke waktu. Setiap kueri yang berjalan menggunakan atau menunggu resource CPU, resource IO, atau resource kunci. Pemuatan kueri database adalah rasio jumlah waktu yang dibutuhkan oleh semua kueri yang diselesaikan dalam jangka waktu tertentu dibandingkan dengan waktu aktual.

Garis berwarna dalam grafik menunjukkan pemuatan kueri, yang dibagi menjadi empat kategori:
- Kapasitas CPU: Jumlah CPU yang tersedia pada instance.
CPU dan Waktu Tunggu CPU: Rasio waktu yang dibutuhkan oleh kueri dalam status aktif terhadap waktu aktual. Waktu tunggu IO dan Kunci tidak memblokir kueri yang dalam status aktif. Metrik ini dapat berarti bahwa kueri menggunakan CPU atau menunggu penjadwal Linux untuk menjadwalkan proses server yang menjalankan kueri saat proses lain sedang menggunakan CPU.
Catatan: Muatan CPU memperhitungkan runtime dan waktu menunggu penjadwal Linux menjadwalkan proses server yang sedang berjalan. Akibatnya, muatan CPU dapat melampaui garis inti maksimum.
Waktu Tunggu IO: Rasio waktu yang dibutuhkan oleh kueri yang menunggu IO dibandingkan waktu aktual. Waktu Tunggu IO mencakup Waktu Tunggu IO Baca dan Waktu Tunggu IO Tulis. Lihat tabel peristiwa PostgreSQL. Jika Anda ingin perincian informasi untuk waktu tunggu IO, Anda dapat melihatnya di Cloud Monitoring. Untuk mengetahui informasi selengkapnya, lihat diagram metrik.
Waktu Tunggu Kunci: Rasio waktu yang dibutuhkan oleh kueri yang menunggu kunci dibandingkan waktu aktual. Waktu Tunggu ini mencakup Waktu tunggu Kunci, LwLock, dan Buffer Pin Lock. Jika Anda ingin perincian informasi untuk waktu tunggu kunci, Anda dapat melihatnya di Cloud Monitoring. Untuk mengetahui informasi selengkapnya, lihat diagram metrik.
Selanjutnya, tinjau grafik tersebut dan gunakan opsi pemfilteran untuk menjawab pertanyaan-pertanyaan ini:
- Apakah pemuatan kuerinya tinggi? Apakah grafiknya melonjak atau meningkat seiring waktu? Jika Anda tidak melihat muatan yang tinggi, berarti masalahnya tidak ada pada kueri.
- Berapa lama muatannya telah tinggi? Apakah sekarang hanya tingginya? Atau sudah tinggi sejak lama? Gunakan pilihan rentang untuk memilih berbagai jangka waktu guna mengetahui berapa lama masalah terjadi. Atau, Anda dapat memperbesar untuk melihat periode waktu saat lonjakan muatan kueri diamati. Anda dapat memperkecil untuk melihat rentang waktu hingga satu minggu.
- Apa yang menyebabkan muatan tinggi? Anda dapat memilih opsi untuk melihat kapasitas CPU, waktu tunggu CPU dan CPU, waktu tunggu kunci, atau waktu tunggu IO. Grafik untuk setiap opsi ini memiliki warna yang berbeda, sehingga Anda dapat melihat opsi mana yang memiliki muatan tertinggi. Garis biru tua pada grafik menunjukkan kapasitas CPU maksimum sistem. Hal ini memungkinkan Anda membandingkan muatan kueri dengan kapasitas sistem CPU maksimum. Perbandingan ini membantu Anda mengetahui apakah instance kehabisan resource CPU.
- Database mana yang mengalami pemuatan? Pilih berbagai database dari menu drop-down Databases untuk menemukan database yang memiliki muatan tertinggi.
- Apakah pengguna atau alamat IP tertentu menyebabkan pemuatan yang lebih tinggi? Pilih pengguna dan alamat yang berbeda dari menu drop-down untuk membandingkan mana yang menyebabkan pemuatan yang lebih tinggi.
Memfilter muatan database
Bagian Kueri dan tag memungkinkan Anda memfilter atau mengurutkan beban kueri untuk kueri yang dipilih atau tag kueri SQL.
Memfilter berdasarkan kueri
Tabel QUERIES memberikan ringkasan kueri yang menyebabkan pemuatan kueri terbanyak. Tabel ini menampilkan semua kueri yang dinormalkan untuk jangka waktu dan opsi yang dipilih di dasbor insight kueri.
Secara default, tabel mengurutkan kueri berdasarkan total waktu eksekusi dalam jangka waktu yang Anda pilih.

Untuk memfilter tabel, pilih properti dari Filter kueri. Untuk mengurutkan tabel, pilih judul kolom. Tabel menampilkan properti berikut:
String kueri. String kueri yang dinormalisasi. Query Insight hanya menampilkan 1024 karakter dalam string kueri secara default.
Kueri berlabel
UTILITY COMMAND
biasanya menyertakan perintahBEGIN
,COMMIT
, danEXPLAIN
atau perintah wrapper.Database. Database tempat kueri dijalankan.
Load by total time/Load by CPU/Load by IO wait/Load by lock wait. Opsi ini memungkinkan Anda memfilter kueri tertentu untuk menemukan muatan terbesar untuk setiap opsi.
Waktu eksekusi rata-rata (md). Total waktu yang dibutuhkan semua sub-tugas di semua pekerja paralel untuk menyelesaikan kueri. Untuk mengetahui informasi selengkapnya, lihat Waktu dan durasi eksekusi rata-rata.
Waktu panggilan. Frekuensi kueri dipanggil oleh aplikasi.
Rata-rata baris yang diambil. Jumlah rata-rata baris yang diambil untuk kueri.
Query Insight menampilkan kueri yang dinormalkan, yaitu, $1, $2, dan seterusnya menggantikan 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 dapat menggabungkan kueri serupa dan menghapus informasi PII yang mungkin ditampilkan konstanta tersebut.
Memfilter berdasarkan tag kueri
Untuk memecahkan masalah aplikasi, Anda harus menambahkan tag ke kueri SQL terlebih dahulu.
Insight kueri menyediakan pemantauan yang berfokus pada aplikasi untuk mendiagnosis masalah performa untuk aplikasi yang di-build menggunakan ORM.
Jika Anda bertanggung jawab atas seluruh stack aplikasi, Query Insight menyediakan pemantauan kueri dari tampilan aplikasi. Pemberian tag kueri membantu Anda menemukan masalah pada konstruksi tingkat yang lebih tinggi, seperti menggunakan logika bisnis, microservice, atau konstruksi lainnya. Anda dapat memberi tag pada kueri berdasarkan logika bisnis, misalnya, menggunakan tag pembayaran, inventaris, analisis bisnis, atau pengiriman. Kemudian, Anda dapat menemukan pemuatan kueri yang dibuat oleh berbagai jenis logika bisnis. Misalnya, Anda mungkin menemukan peristiwa tak terduga, seperti lonjakan tag analisis bisnis pada pukul 13.00. Atau, Anda mungkin melihat pertumbuhan yang tidak terduga untuk tren layanan pembayaran selama seminggu sebelumnya.
Tag pemuatan kueri memberikan rincian pemuatan kueri untuk tag yang dipilih dari waktu ke waktu.
Untuk menghitung Pemuatan Database untuk Tag, insight kueri menggunakan jumlah waktu yang dibutuhkan oleh setiap kueri yang menggunakan tag yang Anda pilih. Insight kueri menghitung waktu penyelesaian pada batas menit menggunakan waktu dinding.
Di dasbor insight kueri, pilih TAG untuk melihat tabel tag. Tabel TAGS mengurutkan tag berdasarkan total pemuatannya berdasarkan total waktu.

Anda dapat mengurutkan tabel dengan memilih properti dari Filter kueri, atau dengan mengklik judul kolom. Tabel menampilkan properti berikut:
- Tindakan, Pengontrol, Framework, Rute, Aplikasi, Driver DB. Setiap properti yang Anda tambahkan ke kueri akan ditampilkan sebagai kolom. Setidaknya salah satu dari properti ini harus ditambahkan jika Anda ingin memfilter menurut tag.
- Load by total time/Load by CPU/Load by IO wait/Load by lock wait. Opsi ini memungkinkan Anda memfilter kueri tertentu untuk menemukan muatan terbesar untuk setiap opsi.
- Waktu eksekusi rata-rata (md). Total waktu yang dibutuhkan semua sub-tugas di semua pekerja paralel untuk menyelesaikan kueri. Untuk mengetahui informasi selengkapnya, lihat Waktu dan durasi eksekusi rata-rata.
- Waktu panggilan. Frekuensi kueri dipanggil oleh aplikasi.
- Rata-rata baris yang diambil. Jumlah rata-rata baris yang diambil untuk kueri.
- Database. Database tempat kueri dijalankan.
Memeriksa kueri atau tag tertentu
Untuk menentukan apakah kueri atau tag adalah akar penyebab masalah, lakukan hal berikut dari tab Kueri atau tab Tag:
- Klik header Muat menurut total waktu untuk mengurutkan daftar dalam urutan menurun.
- Klik kueri atau tag yang tampaknya memiliki muatan tertinggi dan memerlukan waktu lebih lama daripada yang lain.
Dasbor akan terbuka dan menampilkan detail kueri atau tag yang dipilih.
Jika Anda memilih kueri, ringkasan kueri yang dipilih akan ditampilkan:

Jika Anda memilih tag, ringkasan tag yang dipilih akan ditampilkan.
Memeriksa beban untuk kueri atau tag tertentu
Grafik Pemuatan database — kueri spesifik menunjukkan ukuran pekerjaan (dalam detik CPU) yang telah dilakukan kueri yang dinormalkan dan dipilih dalam kueri yang dipilih dari waktu ke waktu. Untuk menghitung muatan, metode ini menggunakan jumlah waktu yang dibutuhkan oleh kueri yang dinormalisasi dan diselesaikan pada batas menit hingga waktu dinding. Di bagian atas tabel, 1024 karakter pertama dari kueri yang dinormalisasi (dengan literal yang dihapus karena alasan agregasi dan PII) akan ditampilkan. Seperti grafik kueri total, Anda dapat memfilter muatan untuk kueri tertentu berdasarkan Database, Pengguna, dan Alamat Klien. Muatan kueri dibagi menjadi Kapasitas CPU, Waktu Tunggu CPU dan CPU, Waktu Tunggu IO, dan Waktu Tunggu Kunci.

Grafik Pemuatan database — tag spesifik menunjukkan ukuran kerja (dalam detik CPU) yang dilakukan kueri yang cocok dengan tag yang dipilih di database yang Anda pilih dari waktu ke waktu. Seperti grafik kueri total, Anda dapat memfilter pemuatan untuk tag tertentu menurut Database, Pengguna, dan Alamat Klien.

Memeriksa latensi
Anda menggunakan grafik Latensi untuk memeriksa latensi pada kueri atau tag. Latensi adalah waktu yang dibutuhkan oleh kueri yang dinormalkan untuk menyelesaikan proses dalam waktu aktual. Dasbor latensi menampilkan latensi persentil ke-50, ke-95, dan ke-99 untuk menemukan perilaku pencilan.

Latensi Kueri Paralel diukur dalam waktu aktual meskipun beban kueri bisa lebih tinggi untuk kueri tersebut karena beberapa inti digunakan untuk menjalankan bagian dari kueri.
Coba sederhanakan masalahnya dengan melihat hal-hal berikut:
- Apa yang menyebabkan muatan tinggi? Pilih opsi untuk melihat kapasitas CPU, waktu tunggu CPU dan CPU, waktu tunggu kunci, atau waktu tunggu IO.
- Berapa lama muatannya telah tinggi? Apakah sekarang hanya tingginya? Atau sudah tinggi sejak lama? Ubah rentang waktu untuk menemukan tanggal dan waktu saat muatannya mulai berperforma buruk.
- Apakah ada lonjakan latensi? Anda dapat mengubah periode waktu guna mempelajari latensi historis untuk kueri yang dinormalisasi.
Saat Anda menemukan area dan waktu untuk beban tertinggi, Anda dapat melihat perincian lebih lanjut.
Memeriksa latensi di seluruh cluster
Anda menggunakan grafik Latensi P99 pada kueri yang sama di seluruh cluster untuk memeriksa latensi P99 pada kueri atau tag di seluruh instance dalam cluster.

Memeriksa operasi dalam contoh paket kueri
Paket kueri mengambil sampel kueri Anda dan menguraikannya menjadi operasi individual. Argumen ini menjelaskan dan menganalisis setiap operasi dalam kueri. Grafik Contoh paket kueri menampilkan semua paket kueri yang berjalan pada waktu tertentu dan jumlah waktu yang diperlukan untuk menjalankan setiap rencana.

Untuk melihat detail contoh paket kueri, klik titik pada grafik Contoh paket kueri. Ada tampilan sampel yang dijalankan paket kueri untuk sebagian besar, tetapi tidak semua, kueri. Detail yang diperluas menampilkan model dari semua operasi di paket kueri. Setiap operasi menunjukkan latensi, baris yang ditampilkan, dan biaya untuk operasi tersebut. Saat memilih operasi, Anda dapat melihat detail lebih lanjut, seperti blok hit bersama, jenis skema, loop aktual, baris rencana, dan lainnya.

Coba sederhanakan masalahnya dengan melihat pertanyaan-pertanyaan berikut:
- Berapa konsumsi resource?
- Bagaimana kaitannya dengan kueri lain?
- Apakah konsumsi berubah dari waktu ke waktu?
Memeriksa rekaman aktivitas yang dihasilkan oleh contoh kueri
Selain melihat paket kueri contoh, Anda dapat menggunakan insight kueri untuk melihat pelacakan aplikasi menyeluruh dalam konteks untuk kueri contoh. Rekaman aktivitas ini dapat membantu Anda mengidentifikasi sumber kueri yang bermasalah dengan menampilkan aktivitas database untuk permintaan tertentu. Selain itu, entri log yang dikirim aplikasi ke Cloud Logging selama permintaan ditautkan ke trace, yang membantu Anda melakukan penyelidikan.
Untuk melihat rekaman aktivitas dalam konteks, lakukan hal berikut:
Di panel Sample Query, klik tab End-to-end Trace. Tab ini menampilkan diagram Gantt yang menjelaskan rentang, yang merupakan catatan setiap operasi, untuk rekaman aktivitas yang dihasilkan oleh kueri.
Untuk melihat detail selengkapnya tentang setiap rentang, seperti atribut dan metadata, klik rentang.
Anda juga dapat melihat rekaman aktivitas di halaman Trace Explorer. Untuk melakukannya, klik Lihat di Cloud Trace. Untuk mengetahui detail tentang cara menggunakan halaman Trace Explorer untuk menjelajahi data trace Anda, lihat Menemukan dan menjelajahi trace.
Menambahkan tag ke kueri SQL
Pemberian tag pada kueri SQL menyederhanakan pemecahan masalah aplikasi. Anda dapat menggunakan sqlcommenter untuk menambahkan tag ke kueri SQL secara otomatis menggunakan Pemetaan relasional objek (ORM) atau secara manual.
Menggunakan sqlcommenter dengan ORM
Saat ORM digunakan, bukan menulis kueri SQL secara langsung, Anda mungkin tidak menemukan kode aplikasi yang menyebabkan tantangan performa. Anda mungkin juga mengalami kesulitan dalam menganalisis pengaruh kode aplikasi terhadap performa kueri. Untuk mengatasi masalah tersebut, Insight kueri menyediakan library open source yang disebut sqlcommenter, yaitu library instrumentasi ORM. Library ini berguna bagi developer yang menggunakan ORM dan administrator untuk mendeteksi kode aplikasi yang menyebabkan masalah performa.
Jika Anda menggunakan ORM dan sqlcommenter secara bersamaan, tag akan dibuat secara otomatis tanpa memerlukan Anda untuk mengubah atau menambahkan kode kustom ke aplikasi.
Anda dapat menginstal sqlcommenter di server aplikasi. Dengan library instrumentasi, informasi aplikasi yang terkait dengan framework MVC Anda dapat disebarkan ke database bersama dengan kueri sebagai komentar SQL. Database akan mengambil tag ini dan mulai mencatat serta menggabungkan statistik berdasarkan tag, yang bersifat ortogonal dengan statistik yang digabungkan oleh kueri yang dinormalisasi. Query Insight menampilkan tag agar Anda mengetahui aplikasi mana yang menyebabkan pemuatan kueri. Informasi ini membantu Anda menemukan kode aplikasi yang menyebabkan masalah performa.
Ketika Anda memeriksa hasil dalam log database SQL, hasil tersebut akan muncul sebagai berikut:
SELECT * from USERS /*action='run+this',
controller='foo%3',
traceparent='00-01',
tracestate='rojo%2'*/
Tag yang didukung mencakup nama, rute, framework, dan tindakan pengontrol.
Kumpulan ORM di sqlcommenter didukung untuk berbagai bahasa pemrograman:
Python |
|
Java |
|
Ruby |
|
Node.js |
|
Untuk mengetahui informasi selengkapnya tentang sqlcommenter dan cara menggunakannya di framework ORM, lihat dokumentasi sqlcommenter di GitHub.
Menggunakan sqlcommenter untuk menambahkan tag secara manual
Jika tidak menggunakan ORM, Anda harus menambahkan tag sqlcommenter ke kueri SQL secara manual. Dalam kueri, Anda harus meningkatkan setiap pernyataan SQL dengan komentar yang berisi pasangan nilai kunci serial. Gunakan minimal salah satu kunci berikut:
action=''
controller=''
framework=''
route=''
application=''
db driver=''
Query Insight akan menghapus semua kunci lainnya. Lihat dokumentasi sqlcommenter untuk mengetahui format komentar SQL yang benar.
Waktu dan durasi eksekusi
Insight kueri memberikan metrik Waktu eksekusi rata-rata (md), yang melaporkan total waktu yang dibutuhkan semua sub-tugas di semua worker paralel untuk menyelesaikan kueri. Metrik ini dapat membantu Anda mengoptimalkan penggunaan resource gabungan database dengan menemukan dan mengoptimalkan kueri yang menghasilkan overhead CPU tertinggi.
Untuk melihat waktu yang telah berlalu, Anda dapat mengukur durasi kueri dengan menjalankan perintah
\timing
pada klien psql
. Metrik ini mengukur waktu yang berlalu antara penerimaan kueri dan pengiriman respons oleh server PostgreSQL. Metrik ini dapat
membantu Anda menganalisis alasan kueri tertentu berjalan terlalu lama, dan memutuskan apakah akan
mengoptimalkannya agar berjalan lebih cepat.
Jika kueri diselesaikan dengan satu thread oleh satu tugas, durasi dan waktu eksekusi rata-rata akan tetap sama.
Mengaktifkan fitur insight kueri lanjutan untuk AlloyDB
Dasbor fitur insight kueri lanjutan untuk AlloyDB diintegrasikan dalam dasbor insight kueri standar. Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan fitur insight kueri lanjutan, lihat Meningkatkan performa kueri menggunakan fitur insight kueri lanjutan.
Langkah berikutnya
- Ringkasan insight kueri
- Meningkatkan performa kueri menggunakan fitur insight kueri lanjutan untuk AlloyDB
- Metrik AlloyDB
- Blog SQL Commenter: Memperkenalkan Sqlcommenter: Library instrumentasi otomatis ORM open source
- Blog panduan: Mengaktifkan pemberian tag kueri dengan Sqlcommenter