Halaman ini menjelaskan cara menggunakan dasbor Query Insight untuk mendeteksi dan menganalisis masalah performa.
Anda dapat menggunakan bantuan Gemini di Database untuk membantu Anda mengamati dan memecahkan masalah resource Cloud SQL untuk PostgreSQL. Untuk mengetahui informasi selengkapnya, lihat Mengamati dan memecahkan masalah dengan bantuan Gemini.
Pengantar
Insight kueri membantu Anda mendeteksi, mendiagnosis, dan mencegah masalah performa kueri untuk database Cloud SQL. Layanan ini mendukung pemantauan intuitif dan menyediakan informasi diagnostik yang membantu Anda melakukan lebih dari sekadar deteksi untuk mengidentifikasi akar penyebab masalah performa.
Dengan insight kueri, Anda dapat memantau performa di tingkat aplikasi dan melacak sumber kueri yang bermasalah di seluruh stack aplikasi berdasarkan model, tampilan, pengontrol, rute, pengguna, dan host. Alat insight kueri dapat diintegrasikan dengan alat pemantauan aplikasi (APM) dan layanan Google Cloud yang sudah ada dengan menggunakan API dan standar terbuka. Dengan cara ini, Anda dapat memantau dan memecahkan masalah kueri dengan menggunakan alat favorit Anda.
Query Insight membantu Anda meningkatkan performa kueri Cloud SQL dengan memandu Anda melalui langkah-langkah berikut:
- Melihat pemuatan database untuk kueri teratas
- Mengidentifikasi kueri atau tag yang berpotensi bermasalah
- Periksa kueri atau tag untuk mengidentifikasi masalah
- Melacak sumber masalah
Insight kueri untuk edisi Cloud SQL Enterprise Plus
Jika menggunakan edisi Cloud SQL Enterprise Plus, Anda dapat mengakses kemampuan tambahan di insight kueri untuk melakukan diagnostik performa kueri lanjutan. Selain kemampuan standar dasbor Insight kueri, insight kueri untuk edisi Cloud SQL Enterprise Plus memungkinkan Anda melakukan hal berikut:
- Merekam dan menganalisis peristiwa tunggu untuk semua kueri yang dieksekusi
- Memfilter pemuatan database gabungan menurut dimensi tambahan seperti kueri, tag, jenis peristiwa tunggu, dan lainnya
- Menangkap rencana kueri untuk semua kueri yang dijalankan
- Contoh hingga 200 paket kueri per menit
- Menangkap teks kueri yang lebih panjang hingga 100 KB
- Mendapatkan update yang mendekati real-time untuk metrik (dalam hitungan detik)
- Mempertahankan retensi metrik selama 30 hari yang lebih lama
Tabel berikut membandingkan persyaratan dan kemampuan fungsional insight kueri untuk edisi Cloud SQL Enterprise dengan insight kueri untuk edisi Cloud SQL Enterprise Plus.
Area perbandingan | Insight kueri untuk edisi Cloud SQL Enterprise | Insight kueri untuk edisi Cloud SQL Enterprise Plus |
---|---|---|
Versi database yang didukung | PostgreSQL 9.6 atau yang lebih baru | PostgreSQL 12 atau yang lebih baru |
Jenis mesin yang didukung | Didukung di semua jenis mesin | Tidak didukung di instance yang menggunakan jenis mesin dengan inti bersama atau di instance replika baca |
Wilayah yang didukung | Lokasi regional Cloud SQL | Lokasi regional edisi Cloud SQL Enterprise Plus |
Periode retensi metrik | 7 hari | 30 hari |
Batas maksimum panjang kueri | 4.500 byte | 100 KB |
Maksimum contoh paket kueri | 20 | 200 |
Analisis peristiwa tunggu | Tidak tersedia | Tersedia |
Untuk mengaktifkan insight kueri untuk edisi Cloud SQL Enterprise Plus selama Pratinjau untuk instance edisi Cloud SQL Enterprise Plus, ikuti langkah-langkah di Mengaktifkan insight kueri untuk edisi Cloud SQL Enterprise Plus.
Harga
Tidak ada biaya tambahan untuk insight kueri. Selain itu, tidak ada biaya untuk mengaktifkan insight kueri untuk edisi Cloud SQL Enterprise Plus, yang masih dalam Pratinjau.
Persyaratan penyimpanan
Insight kueri untuk edisi Cloud SQL Enterprise tidak menempati ruang penyimpanan apa pun di ruang penyimpanan instance Cloud SQL Anda. Metrik disimpan di Cloud Monitoring. Untuk permintaan API, lihat Harga Cloud Monitoring. Cloud Monitoring memiliki paket yang dapat Anda gunakan tanpa biaya tambahan.
Insight kueri untuk edisi Cloud SQL Enterprise Plus (Pratinjau) menyimpan data metrik di disk yang sama yang dilampirkan ke instance Cloud SQL dan mengharuskan Anda tetap mengaktifkan setelan peningkatan penyimpanan otomatis.
Persyaratan penyimpanan untuk data selama tujuh hari adalah sekitar 36 GB. Selama 30 hari, Anda memerlukan sekitar 155 GB. Insight kueri untuk edisi Cloud SQL Enterprise Plus menggunakan hingga 10 MB RAM (memori bersama). Metrik diharapkan akan tersedia di insight kueri dalam waktu 30 detik setelah penyelesaian kueri. Biaya penyimpanan yang berlaku berlaku.Sebelum memulai
Sebelum menggunakan insight kueri, lakukan hal berikut.
- Tambahkan peran dan izin yang diperlukan.
- Aktifkan Cloud Trace API.
- Jika Anda menggunakan Insight kueri untuk edisi Cloud SQL Enterprise Plus, pastikan Aktifkan peningkatan penyimpanan otomatis diaktifkan untuk instance.
Peran dan izin yang diperlukan
Untuk menggunakan insight kueri, Anda harus memberikan peran dengan izin Pengelolaan Akses dan Identitas yang diperlukan atau memberikan akun pengguna dengan izin yang diperlukan.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
Untuk mendapatkan izin yang Anda perlukan guna mengakses data historis eksekusi kueri di dasbor Insight kueri, minta administrator untuk memberi Anda peran IAM berikut pada project yang menghosting instance Cloud SQL:
-
Database Insights Monitoring Viewer (
roles/databaseinsights.monitoringViewer
) -
Cloud SQL Viewer (
roles/cloudsql.viewer
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk mengakses data historis eksekusi kueri di dasbor Insight kueri. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengakses data historis eksekusi kueri di dasbor Insight kueri:
-
databaseinsights.aggregatedStats.query
-
databaseinsights.timeSeries.query
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Misalnya, di Database Insights, Anda dapat meminta administrator untuk memberi Anda peran bawaan Database Insights Viewer (roles/databaseinsights.viewer
). Kemudian, di Cloud SQL, Anda dapat meminta administrator untuk memberi Anda salah satu peran bawaan berikut:
- Cloud SQL Editor (
roles/cloudsql.editor
) - Cloud SQL Admin (
roles/cloudsql.admin
)
Mengaktifkan Trace API
Untuk melihat rencana kueri dan tampilan menyeluruhnya, project Google Cloud Anda harus mengaktifkan Trace API. Setelan ini memungkinkan projectGoogle Cloud Anda menerima data rekaman aktivitas dari sumber yang diautentikasi tanpa biaya tambahan. Data ini dapat membantu Anda mendeteksi dan mendiagnosis masalah performa di instance Anda.
Untuk mengonfirmasi bahwa Trace API diaktifkan, ikuti langkah-langkah berikut:
- Dari konsol Google Cloud, buka APIs and Services:
- Klik Aktifkan API dan Layanan.
- Di kotak penelusuran, masukkan
Trace API
. - Jika API enabled ditampilkan, berarti API ini diaktifkan dan Anda tidak perlu melakukan apa pun. Jika tidak, klik Enable.
Aktifkan peningkatan penyimpanan otomatis
Jika Anda menggunakan Insight kueri untuk edisi Cloud SQL Enterprise Plus (Pratinjau), pastikan setelan instance untuk mengaktifkan peningkatan penyimpanan otomatis tetap diaktifkan. Secara default, opsi ini diaktifkan untuk instance Cloud SQL.Jika sebelumnya Anda menonaktifkan setelan instance ini dan ingin mengaktifkan Insight kueri untuk edisi Cloud SQL Enterprise Plus, aktifkan kembali peningkatan penyimpanan otomatis terlebih dahulu. Anda tidak dapat menonaktifkan peningkatan penyimpanan otomatis dan mengaktifkan Insight kueri untuk edisi Cloud SQL Enterprise Plus.
Mengaktifkan insight kueri
Pengguna yang memiliki akses ke dasbor Cloud SQL dapat mengakses metrik insight kueri. Jika memiliki izin untuk memperbarui instance, Anda dapat mengaktifkan analisis kueri. Untuk daftar izin yang diperlukan untuk instance Cloud SQL, lihat Kontrol akses project Cloud SQL. Jika Anda tidak memiliki izin ini dan ingin mengaktifkan insight kueri di instance, hubungi administrator Anda.
Konsol
Mengaktifkan insight kueri untuk instance
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Overview instance, klik nama instance.
- Di kartu Configuration, klik Edit configuration.
- Di bagian Customize your instance, luaskan Query insight.
- Centang kotak Aktifkan Query Insight.
- Opsional. Pilih satu atau beberapa fitur tambahan insight kueri berikut:
- Klik Simpan.
Analisis kueri aktif
Default: false
Memungkinkan Anda meninjau detail tentang kueri yang berjalan secara aktif dan, jika perlu, menghentikan kueri yang berjalan lama. Untuk informasi selengkapnya, lihat Memantau kueri aktif. Fitur ini berada dalam Pratinjau.
Mengaktifkan penasihat indeks
Default: false
Penasihat indeks memberikan rekomendasi indeks untuk mempercepat pemrosesan kueri. Saat Anda mengaktifkan penasihat indeks, instance Anda harus dimulai ulang. Untuk informasi selengkapnya, lihat Ringkasan penasihat indeks dan Menggunakan penasihat indeks. Fitur ini berada dalam Pratinjau.
Simpan alamat IP klien
Default: false
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.
Simpan tag aplikasi
Default: false
Menyimpan tag aplikasi yang membantu Anda menentukan API dan rute pengontrol tampilan model (MVC) yang membuat permintaan dan mengelompokkan data untuk menjalankan metrik pada API dan rute tersebut. Opsi ini mengharuskan Anda mengomentari kueri dengan kumpulan tag tertentu menggunakan library instrumentasi otomatis pemetaan relasional objek (ORM) open source sqlcommenter. Informasi ini membantu insight kueri mengidentifikasi sumber masalah dan MVC tempat masalah tersebut berasal. Jalur aplikasi membantu Anda dalam pemantauan aplikasi.
Sesuaikan panjang kueri
Default: 1024
Menyetel batas panjang kueri ke nilai yang ditentukan dari 256 byte hingga 4500 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.
Menetapkan frekuensi sampling maksimum
Default: 5
Menetapkan frekuensi sampling maksimum. Frekuensi sampling adalah jumlah sampel rencana kueri yang dijalankan yang diambil per menit di semua database pada instance. Ubah nilai ini menjadi angka dari 0 (menetapkan nilai ini ke 0 akan menonaktifkan pengambilan sampel) ke 20. Meningkatkan frekuensi sampling kemungkinan akan memberi Anda lebih banyak titik data, tetapi dapat meningkatkan overhead performa.
Mengaktifkan insight kueri untuk beberapa instance
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Klik menu Tindakan Lainnya di baris mana pun.
- Pilih Aktifkan Query Insight.
- Dalam dialog, centang kotak Aktifkan Query Insight untuk beberapa instance.
- Klik Aktifkan.
- Di dialog berikutnya, pilih instance yang ingin Anda aktifkan insight kuerinya.
- Klik Aktifkan Query Insight.
gcloud
Untuk mengaktifkan insight kueri untuk instance Cloud SQL menggunakan
gcloud
, jalankan gcloud sql instances patch
dengan flag --insights-config-query-insights-enabled
sebagai
berikut setelah mengganti INSTANCE_ID dengan ID instance.
gcloud sql instances patch INSTANCE_ID \ --insights-config-query-insights-enabled
Selain itu, gunakan satu atau beberapa flag opsional berikut:
--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.
--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 kumpulan tag tertentu. Anda dapat melakukannya dengan menggunakan library instrumentasi otomatis pemetaan relasional objek (ORM) open source sqlcommenter. Informasi ini membantu Insight Kueri mengidentifikasi sumber masalah dan MVC tempat masalah tersebut berasal. Jalur aplikasi membantu Anda dalam pemantauan aplikasi.
--insights-config-query-string-length
Menetapkan batas panjang kueri default ke nilai yang ditentukan dari 256 hingga 4.500 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.
--query_plans_per_minute
Secara default, maksimum 5 sampel rencana kueri yang dijalankan diambil per menit di semua database pada instance. Ubah nilai ini menjadi angka dari 0 (menetapkan nilai ini ke 0 akan menonaktifkan pengambilan sampel) ke 20. Meningkatkan kecepatan sampling kemungkinan akan memberi Anda lebih banyak titik data, tetapi dapat menambah overhead performa.
Ganti kode berikut:
- INSIGHTS_CONFIG_QUERY_STRING_LENGTH: Panjang string kueri yang akan disimpan dalam byte.
- API_TIER_STRING: Konfigurasi instance kustom yang akan digunakan untuk instance.
- REGION: Region untuk instance.
gcloud sql instances patch INSTANCE_ID \ --insights-config-query-insights-enabled \ --insights-config-query-string-length=INSIGHTS_CONFIG_QUERY_STRING_LENGTH \ --query_plans_per_minute=QUERY_PLANS_PER_MINUTE \ --insights-config-record-application-tags \ --insights-config-record-client-address \ --tier=API_TIER_STRING \ --region=REGION
REST v1
Untuk mengaktifkan insight kueri untuk instance Cloud SQL dengan menggunakan
REST API, panggil metode instances.patch
dengan setelan insightsConfig
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: Project ID.
- instance-id: ID instance.
Metode HTTP dan URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Meminta isi JSON:
{ "settings" : { "insightsConfig" : { "queryInsightsEnabled" : true } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON yang mirip seperti berikut:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2021-01-28T22:43:40.009Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Terraform
Agar dapat menggunakan Terraform untuk mengaktifkan insight kueri untuk instance Cloud SQL,
tetapkan flag query_insights_enabled
ke true
.
Selain itu, Anda dapat menggunakan satu atau beberapa flag opsional berikut:
-
query_string_length
: Defaultnya adalah1024
dan Anda dapat mengonfigurasinya ke nilai antara256
dan4500
dalam byte. -
record_application_tags
: Tetapkan nilai ketrue
jika Anda ingin merekam tag aplikasi dari kueri. -
record_client_address
: Tetapkan nilai ketrue
jika Anda ingin mencatat alamat IP klien. -
query_plans_per_minute
: Defaultnya adalah5
dan Anda dapat mengonfigurasinya ke nilai antara5
dan20
.
Berikut contohnya:
resource "google_sql_database_instance" "INSTANCE_NAME" { name = "INSTANCE_NAME" database_version = "POSTGRESQL_VERSION" region = "REGION" root_password = "PASSWORD" deletion_protection = false # set to true to prevent destruction of the resource settings { tier = "DB_TIER" insights_config { query_insights_enabled = true query_string_length = 2048 # Optional record_application_tags = true # Optional record_client_address = true # Optional query_plans_per_minute = 10 # Optional } } }
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan angkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
Metrik diharapkan akan tersedia di analisis kueri dalam hitungan menit setelah penyelesaian kueri. Tinjau kebijakan retensi data Cloud Monitoring.
Trace Query Insight disimpan di Cloud Trace. Tinjau kebijakan retensi data Cloud Trace.
Mengaktifkan insight kueri untuk edisi Cloud SQL Enterprise Plus
Anda dapat mengaktifkan insight kueri untuk edisi Cloud SQL Enterprise Plus di instance Cloud SQL hanya dengan menggunakan konsol Google Cloud.
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Klik Edit.
- Di bagian Storage, pastikan kotak centang Enable automatic storage increases dicentang.
- Di bagian Customize your instance, luaskan Query insight.
- Centang kotak Aktifkan fitur Enterprise Plus.
Setelah mengaktifkan insight kueri untuk edisi Cloud SQL Enterprise Plus, Anda dapat memperbarui kolom berikut:
Sesuaikan panjang kueri: tentukan batas panjang kueri dalam byte. Anda dapat menentukan angka dari
Secara default, frekuensi sampel maksimum adalah 200 sampel paket kueri per menit di semua database pada instance.1024
hingga100000
. Setiap string kueri yang melebihi batas yang ditentukan akan terpotong di layar. Batas panjang kueri yang lebih tinggi memerlukan lebih banyak memori. Nilai defaultnya adalah10000
byte.
Klik Simpan.
Melihat dasbor Query Insight
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. Dasbor ini menyediakan serangkaian filter yang membantu Anda melihat pemuatan kueri.
Untuk membuka dasbor Query Insight, ikuti langkah-langkah berikut:
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Pilih tab Analisis kueri di panel navigasi sebelah kiri atau klik link Buka Analisis kueri untuk mengetahui info selengkapnya tentang kueri dan performa.
Dasbor Query Insight akan terbuka. Halaman ini menampilkan informasi berikut tentang instance Anda:

- 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 1 jam, 6 jam, 1 hari, 7 hari, 30 hari, atau rentang kustom.
- Database load graph: Menampilkan grafik pemuatan kueri, berdasarkan data yang difilter.
- Kapasitas CPU, Waktu tunggu CPU dan CPU, Waktu tunggu IO, dan Waktu tunggu kunci: Filter dimuat berdasarkan opsi yang Anda pilih. Lihat artikel Melihat pemuatan database untuk kueri teratas untuk mengetahui detail tentang setiap filter ini.
- Kueri dan Tag: Memfilter pemuatan kueri berdasarkan kueri yang dipilih atau tag kueri SQL yang dipilih. Lihat Memfilter beban database.
Melihat muatan database untuk semua kueri
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.
Dasbor insight kueri tingkat atas menampilkan grafik Pemuatan database — semua kueri tingkat atas. Menu drop-down di dasbor memungkinkan Anda memfilter grafik untuk database, pengguna, atau alamat klien tertentu.

Garis berwarna dalam grafik menunjukkan pemuatan kueri, yang dibagi menjadi beberapa kategori:
- Kapasitas CPU: Jumlah CPU yang tersedia pada instance.
- Waktu Tunggu CPU dan 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 menjadwalkan proses server yang menjalankan kueri saat proses lain sedang menggunakan CPU.
- 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. Jika Anda ingin perincian informasi untuk waktu tunggu IO, Anda dapat melihatnya di Cloud Monitoring. Lihat Metrik Cloud SQL untuk informasi selengkapnya. Untuk informasi selengkapnya, lihat tabel peristiwa PostgreSQL.
- Waktu Tunggu Kunci: Rasio waktu yang dibutuhkan oleh kueri yang menunggu Kunci dibandingkan waktu aktual. Waktu Tunggu ini mencakup Waktu tunggu Kunci, LwLock Waits, dan Buffer pin Lock. Untuk melihat perincian informasi terkait waktu tunggu kunci, gunakan Cloud Monitoring. Lihat Metrik Cloud SQL untuk informasi selengkapnya.
Garis berwarna dalam grafik menunjukkan pemuatan per database berdasarkan waktu eksekusi. Tinjau grafik tersebut dan gunakan opsi pemfilteran untuk mempelajari pertanyaan-pertanyaan ini:
- Apakah pemuatan kuerinya tinggi? Apakah grafiknya melonjak atau meningkat seiring waktu? Jika Anda tidak melihat beban yang tinggi, berarti masalahnya tidak ada pada kueri.
- Berapa lama muatannya telah tinggi? Apakah baru sekarang atau sudah tinggi sejak lama? Gunakan pemilih rentang untuk memilih berbagai jangka waktu guna mengetahui berapa lama masalah berlangsung. Perbesar untuk melihat periode waktu saat lonjakan muatan kueri diamati. Perkecil untuk melihat rentang waktu hingga satu minggu.
- Apa yang menyebabkan muatannya tinggi? Anda dapat memilih opsi untuk memeriksa 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 dengan mudah menemukan grafik yang memiliki beban tertinggi. Garis biru tua pada grafik menunjukkan kapasitas CPU maksimum sistem. Hal ini memungkinkan Anda membandingkan beban kueri dengan kapasitas sistem CPU maksimum. Perbandingan ini membantu Anda menentukan apakah instance kehabisan resource CPU.
- Database mana yang mengalami pemuatan? Pilih berbagai database dari menu drop-down Databases untuk menemukan database yang memiliki beban tertinggi.
- Apakah pengguna atau alamat IP tertentu menyebabkan pemuatan yang lebih tinggi? Pilih pengguna dan alamat yang berbeda dari menu drop-down untuk mengidentifikasi manakah yang menyebabkan pemuatan yang lebih tinggi.
Memfilter muatan database
Anda dapat memfilter pemuatan database berdasarkan kueri atau tag. Jika menggunakan analisis kueri untuk edisi Cloud SQL Enterprise Plus, Anda dapat menyesuaikan diagram pemuatan database untuk mengelompokkan data yang ditampilkan menggunakan salah satu dimensi berikut:- Semua kueri
Jenis peristiwa tunggu
Peristiwa tunggu
Database
Pengguna
Tag
Alamat klien
Untuk menyesuaikan diagram pemuatan database, pilih dimensi dari drop-down Database Load by execution time.
Melihat kontributor teratas untuk pemuatan database
Untuk melihat kontributor teratas pemuatan database, Anda dapat menggunakan tabel Dimensi teratas menurut pemuatan database. Tabel Dimensi teratas menurut beban database menampilkan kontributor teratas untuk jangka waktu dan dimensi yang Anda pilih di drop-down diagram Beban Database menurut waktu eksekusi. Anda dapat mengubah jangka waktu atau dimensi untuk melihat kontributor teratas untuk dimensi atau jangka waktu yang berbeda.
Di tabel Dimensi teratas menurut pemuatan data, Anda dapat memilih tab berikut.
Tab | Deskripsi |
---|---|
Kueri | Tabel menampilkan kueri normal teratas berdasarkan total waktu eksekusi.
Untuk setiap kueri, data yang ditampilkan dalam kolom dicantumkan sebagai berikut:
|
Jenis peristiwa tunggu | Tabel menampilkan daftar jenis peristiwa tunggu teratas yang terjadi selama periode waktu yang dipilih. Tabel ini hanya tersedia untuk insight kueri untuk edisi Cloud SQL Enterprise Plus.
|
Peristiwa tunggu | Tabel menampilkan daftar peristiwa tunggu teratas yang terjadi selama periode waktu yang dipilih. Tabel ini hanya tersedia untuk insight kueri untuk edisi Cloud SQL Enterprise Plus.
|
Database | Tabel menampilkan daftar database teratas yang berkontribusi pada beban selama jangka waktu yang dipilih di semua kueri yang dijalankan.
|
Pengguna | Tabel ini menampilkan daftar pengguna teratas untuk jangka waktu yang dipilih
di semua kueri yang dieksekusi.
|
Tag | Untuk informasi tentang tag, Memfilter berdasarkan tag kueri. |
Alamat klien | Tabel menampilkan daftar pengguna teratas untuk jangka waktu yang dipilih
di semua kueri yang dieksekusi.
|
Memfilter berdasarkan kueri
Tabel Kueri memberikan ringkasan kueri yang menyebabkan pemuatan kueri terbanyak. Tabel ini menampilkan semua kueri yang dinormalkan untuk jangka waktu dan opsi yang dipilih di dasbor Query Insight. Fungsi ini mengurutkan kueri berdasarkan total waktu eksekusi selama periode waktu yang Anda pilih.

Untuk mengurutkan tabel, pilih judul kolom atau properti dari Filter kueri. Tabel menampilkan properti berikut:
- Query: string kueri yang dinormalisasi. Secara default, Insight kueri hanya menampilkan
1.024 karakter dalam string kueri.
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 yang dapat Anda gunakan untuk memfilter kueri tertentu guna menemukan muatan terbesar.
- % pemuatan menurut kueri: Persentase pemuatan menurut setiap kueri.
- Rata-rata waktu eksekusi (md): Waktu rata-rata kueri untuk dieksekusi.
- Waktu panggilan: frekuensi aplikasi memanggil kueri.
- Rata-rata baris yang ditampilkan: jumlah rata-rata baris yang ditampilkan untuk kueri.
Query Insight hanya menyimpan dan menampilkan kueri yang dinormalkan.
Secara default, insight kueri tidak mengumpulkan alamat IP atau informasi tag. Anda dapat mengaktifkan insight kueri untuk mengumpulkan informasi ini dan, jika diperlukan, menonaktifkan pengumpulan.
Trace paket kueri tidak mengumpulkan atau menyimpan nilai konstanta apa pun dan menghapus informasi PII yang mungkin ditampilkan konstanta tersebut.
Untuk PostgreSQL 9.6 dan 10, insight kueri menampilkan kueri yang dinormalisasi, yaitu,
?
menggantikan nilai konstanta literal. Pada contoh berikut, konstanta
nama dihapus dan ?
menggantikannya.
UPDATE "demo_customer" SET "customer_id" = ?::uuid, "name" = ?, "address" = ?, "rating" = ?, "balance" = ?, "current_city" = ?, "current_location" = ? WHERE "demo_customer"."id" = ?
Untuk PostgreSQL versi 11 dan yang lebih baru, $1
, $2
, dan
variabel serupa akan menggantikan nilai konstanta literal.
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
Memfilter berdasarkan tag kueri
Untuk memecahkan masalah aplikasi, Anda harus menambahkan tag ke kueri SQL terlebih dahulu. Tag pemuatan kueri memberikan rincian pemuatan kueri untuk tag yang dipilih dari waktu ke waktu.
Query Insight 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, insight kueri menyediakan pemantauan kueri dari tampilan aplikasi. Pemberian tag kueri membantu Anda menemukan masalah pada konstruksi tingkat yang lebih tinggi, seperti dengan logika bisnis atau microservice.
Anda dapat memberi tag pada kueri berdasarkan logika bisnis, misalnya, tag pembayaran, inventaris, analisis bisnis, atau pengiriman. Kemudian, Anda dapat menemukan pemuatan kueri yang dibuat oleh berbagai logika bisnis. Misalnya, Anda mungkin mengamati peristiwa yang tidak terduga, seperti lonjakan tag analisis bisnis pada pukul 13.00 atau pertumbuhan yang tidak terduga untuk tren layanan pembayaran selama seminggu sebelumnya.
Untuk menghitung Pemuatan database untuk tag, insight kueri menggunakan jumlah waktu yang dibutuhkan oleh setiap kueri yang menggunakan tag yang Anda pilih. Alat ini menghitung waktu penyelesaian pada batas menit menggunakan waktu dinding.
Di dasbor insight kueri, pilih Tag untuk melihat tabel tag. Tabel ini mengurutkan tag berdasarkan total pemuatannya berdasarkan total waktu.

Anda dapat mengurutkan tabel dengan memilih properti dari Filter tags, atau dengan mengklik judul kolom. Tabel menampilkan properti berikut:
- Tindakan, Pengontrol, Framework, Rute, Aplikasi, Driver DB: Setiap properti yang Anda tambahkan ke kueri akan muncul sebagai kolom. Setidaknya salah satu 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 untuk memfilter kueri tertentu guna menemukan muatan terbesar untuk setiap opsi.
- Waktu eksekusi rata-rata (md): Waktu rata-rata untuk menjalankan kueri.
- Rata-rata baris yang ditampilkan: Jumlah rata-rata baris yang ditampilkan untuk kueri.
- Waktu panggilan: Berapa kali aplikasi memanggil 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:
- Untuk mengurutkan daftar dalam urutan menurun, klik header Muat menurut total waktu.
- Klik kueri atau tag di bagian atas daftar. Server tersebut memiliki beban tertinggi dan memerlukan waktu lebih lama daripada yang lain.
Dasbor akan terbuka dan menampilkan detail kueri atau tag yang dipilih.
Memeriksa pemuatan kueri tertentu
Dasbor untuk kueri yang dipilih akan muncul sebagai berikut:

Grafik Pemuatan database — kueri spesifik menunjukkan ukuran pekerjaan (dalam detik CPU) yang telah dilakukan kueri yang dinormalkan 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, User, dan Client address. Muatan kueri dibagi menjadi kapasitas CPU, Waktu tunggu CPU dan CPU, Waktu tunggu IO, dan Waktu tunggu Kunci.
Memeriksa pemuatan kueri yang diberi tag tertentu
Dasbor untuk tag yang dipilih akan muncul sebagai berikut. Misalnya, jika semua
kueri dari pembayaran microservice diberi tag sebagai payment
, Anda dapat
melihat jumlah pemuatan kueri yang sedang trending dengan melihat tag payment
.

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 ini.
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. Anda dapat mengubah frekuensi pengambilan sampel paket kueri per menit. Lihat Mengaktifkan Insight Kueri.

Secara default, panel di sebelah kanan menampilkan detail contoh paket kueri yang memerlukan waktu paling lama, seperti yang terlihat pada grafik Contoh paket kueri. Untuk melihat detail contoh paket kueri lainnya, klik lingkaran yang relevan pada grafik. Detail yang diperluas menampilkan model dari semua operasi di paket kueri. Setiap operasi menunjukkan latensi, baris yang ditampilkan, dan biaya operasi. Saat memilih operasi, Anda dapat melihat detail lebih lanjut, seperti blok hit bersama, jenis skema, loop, dan baris rencana.

Coba sederhanakan masalahnya dengan melihat pertanyaan-pertanyaan berikut:
- Berapa konsumsi resource?
- Bagaimana kaitannya dengan kueri lain?
- Apakah konsumsi berubah dari waktu ke waktu?
Memeriksa latensi
Latensi adalah waktu yang dibutuhkan oleh kueri yang dinormalisasi untuk menyelesaikan proses dalam waktu aktual. Anda menggunakan grafik Latensi untuk memeriksa latensi pada kueri atau tag. Dasbor latensi menampilkan latensi persentil ke-50, ke-95, dan ke-99 untuk menemukan perilaku pencilan.
Gambar berikut menampilkan grafik pemuatan database pada persentil ke-50 untuk kueri tertentu dengan filter yang dipilih untuk kapasitas CPU, waktu tunggu CPU dan CPU, waktu tunggu IO, dan waktu tunggu Kunci.

Latensi kueri paralel diukur dalam waktu aktual meskipun beban kueri dapat lebih tinggi untuk kueri tersebut karena beberapa inti digunakan untuk menjalankan bagian dari kueri.
Coba sederhanakan masalahnya dengan melihat pertanyaan-pertanyaan berikut:
- Apa yang menyebabkan muatannya tinggi? Pilih opsi untuk melihat kapasitas CPU, waktu tunggu CPU dan CPU, waktu tunggu I/O, atau waktu tunggu kunci.
- Berapa lama muatannya telah tinggi? Apakah sekarang hanya tingginya? Atau sudah tinggi sejak lama? Ubah rentang waktu untuk menemukan tanggal dan waktu saat pemuatan mulai berperforma buruk.
- Apakah ada lonjakan latensi? Ubah periode waktu guna mempelajari latensi historis untuk kueri yang dinormalisasi.
Melacak sumber masalah
Saat Anda menemukan area dan waktu saat muatan tertinggi, identifikasi sumber masalah dengan menggunakan pelacakan untuk melihat perincian lebih lanjut.
Untuk membantu Anda mengidentifikasi sumber masalah tertentu, seperti model, tampilan, pengontrol, rute, host, atau pengguna, insight kueri menyediakan tampilan rekaman aktivitas aplikasi menyeluruh yang sesuai konteks. Tampilan ini membantu Anda memahami apa yang terjadi di Lapisan Database untuk permintaan tertentu, dan menemukan sumber kueri yang bermasalah berdasarkan model, tampilan, pengontrol, dan rute.
Jika Anda mengaktifkan OpenCensus atau OpenTelemetry, informasi opencensus span akan dikirim ke database bersama dengan informasi tag di dalam komentar SQL singkat ini. Setiap trace dari aplikasi ke Cloud Logging ditautkan dengan trace paket kueri database untuk membantu mengidentifikasi sumber masalah.
Klik tab End to end di layar Sample Query untuk melihat rekaman aktivitas dalam konteks.

Untuk mengetahui klien dan pengguna yang menyebabkan masalah, gunakan tabel Alamat klien teratas dan Pengguna teratas untuk menemukan pemuatan yang paling tinggi. Anda dapat menambahkan pengguna atau alamat IP ke filter untuk menganalisis alamat pengguna atau klien tertentu lebih lanjut. Detail dalam tabel mencakup persentase muatan kueri, rata-rata waktu eksekusi dalam milidetik, dan waktu yang dipanggil.

Anda dapat menggunakan Cloud Trace untuk melihat pelacakan menyeluruh untuk setiap langkah dalam paket kueri. Di dasbor insight kueri, klik link View in trace untuk membuka alat Cloud Trace. Grafik trace menampilkan semua trace yang telah dijalankan selama periode yang dipilih.

Untuk mengetahui detailnya, lihat Menemukan dan melihat 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 atau manual.
Menggunakan sqlcommenter dengan ORM
Saat menggunakan ORM, 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 ini, Query Insight menyediakan library open source yang disebut sqlcommenter. Library ini berguna bagi developer dan administrator yang menggunakan alat ORM untuk mendeteksi kode aplikasi yang menyebabkan masalah performa.
Jika Anda menggunakan ORM dan sqlcommenter secara bersamaan, tag akan dibuat secara otomatis. Anda tidak perlu menambahkan atau mengubah kode dalam 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 terhadap statistik yang digabungkan oleh kueri yang dinormalisasi. Query Insight menampilkan tag agar Anda mengetahui aplikasi mana yang menyebabkan pemuatan kueri dan dapat 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 alat ORM di sqlcommenter didukung untuk bahasa pemrograman berikut:
Python |
|
Java |
|
Ruby |
|
Node.js |
|
Untuk mengetahui informasi selengkapnya tentang sqlcommenter dan cara menggunakannya dalam framework ORM, lihat dokumentasi sqlcommenter.
Menggunakan sqlcommenter untuk menambahkan tag
Jika tidak menggunakan ORM, Anda harus menambahkan tag atau komentar sqlcommenter secara manual dalam format komentar SQL yang benar ke kueri SQL. Anda juga 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.
Menonaktifkan insight kueri
Konsol
Untuk menonaktifkan insight kueri untuk instance Cloud SQL menggunakan konsol Google Cloud, ikuti langkah-langkah berikut:
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Overview instance, klik nama instance.
- Di kartu Configuration, klik Edit configuration.
- Di bagian Opsi konfigurasi, luaskan Query Insight.
- Hapus centang pada kotak Aktifkan Query Insight.
- Klik Simpan.
gcloud
Untuk menonaktifkan insight kueri untuk instance Cloud SQL menggunakan gcloud
, jalankan gcloud sql instances patch
dengan flag --no-insights-config-query-insights-enabled
sebagai berikut, setelah mengganti INSTANCE_ID dengan ID instance.
gcloud sql instances patch INSTANCE_ID
--no-insights-config-query-insights-enabled
REST
Untuk menonaktifkan insight kueri untuk instance Cloud SQL menggunakan
REST API, panggil metode instances.patch
dengan queryInsightsEnabled
yang ditetapkan ke false
seperti berikut.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: Project ID.
- instance-id: ID instance.
Metode HTTP dan URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Meminta isi JSON:
{ "settings" : { "insightsConfig" : { "queryInsightsEnabled" : false } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2021-01-28T22:43:40.009Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Menonaktifkan insight kueri untuk edisi Cloud SQL Enterprise Plus
Untuk menonaktifkan insight kueri untuk edisi Cloud SQL Enterprise Plus, lakukan tindakan berikut:
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Klik Edit.
- Di bagian Customize your instance, luaskan Query insight.
- Hapus centang pada kotak Aktifkan fitur Enterprise Plus.
- Klik Simpan.
Langkah berikutnya
- Blog peluncuran: Kemampuan observasi database untuk developer: memperkenalkan Cloud SQL Insights
- Lihat Metrik Cloud SQL.
String jenis metrik insight kueri dimulai dengan
database/postgresql/insights
. - Blog: Tingkatkan keterampilan pemecahan masalah performa kueri Anda dengan Cloud SQL Insight
- Video: Memperkenalkan Cloud SQL Insight
- Podcast: Cloud SQL Insight
- Codelab Insight
- Blog: Memperkenalkan Sqlcommenter: Library instrumentasi otomatis ORM open source
- Blog: Mengaktifkan pemberian tag kueri dengan Sqlcommenter