Menggunakan insight kueri untuk meningkatkan performa kueri

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:

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.

  1. Tambahkan peran dan izin yang diperlukan.
  2. Aktifkan Cloud Trace API.
  3. 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:

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:

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:

  1. Dari konsol Google Cloud, buka APIs and Services:

    Buka API dan Layanan

  2. Klik Aktifkan API dan Layanan.
  3. Di kotak penelusuran, masukkan Trace API.
  4. 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

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Untuk membuka halaman Overview instance, klik nama instance.
  3. Di kartu Configuration, klik Edit configuration.
  4. Di bagian Customize your instance, luaskan Query insight.
  5. Centang kotak Aktifkan Query Insight.
  6. Opsional. Pilih satu atau beberapa fitur tambahan insight kueri berikut:
  7. 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.

  8. Klik Simpan.

Mengaktifkan insight kueri untuk beberapa instance

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Klik menu Tindakan Lainnya di baris mana pun.
  3. Pilih Aktifkan Query Insight.
  4. Dalam dialog, centang kotak Aktifkan Query Insight untuk beberapa instance.
  5. Klik Aktifkan.
  6. Di dialog berikutnya, pilih instance yang ingin Anda aktifkan insight kuerinya.
  7. 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 adalah 1024 dan Anda dapat mengonfigurasinya ke nilai antara 256 dan 4500 dalam byte.
  • record_application_tags: Tetapkan nilai ke true jika Anda ingin merekam tag aplikasi dari kueri.
  • record_client_address: Tetapkan nilai ke true jika Anda ingin mencatat alamat IP klien.
  • query_plans_per_minute: Defaultnya adalah 5 dan Anda dapat mengonfigurasinya ke nilai antara 5 dan 20.

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

  1. Luncurkan Cloud Shell.
  2. 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).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. 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

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. 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.

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Untuk membuka halaman Ringkasan instance, klik nama instance.
  3. Klik Edit.
  4. Di bagian Storage, pastikan kotak centang Enable automatic storage increases dicentang.
  5. Di bagian Customize your instance, luaskan Query insight.
  6. Centang kotak Aktifkan fitur Enterprise Plus.
  7. 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 1024 hingga 100000. Setiap string kueri yang melebihi batas yang ditentukan akan terpotong di layar. Batas panjang kueri yang lebih tinggi memerlukan lebih banyak memori. Nilai defaultnya adalah 10000 byte.

      Secara default, frekuensi sampel maksimum adalah 200 sampel paket kueri per menit di semua database pada instance.

  8. 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:

  1. Untuk membuka halaman Ringkasan instance, klik nama instance.
  2. 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:

Menampilkan dasbor Query Insight, dengan menu drop-down
         untuk database, pengguna, dan alamat. Di sebelah kanan menu drop-down,
         terdapat filter untuk menyetel rentang waktu. Selain itu,
         grafik menunjukkan muatan database untuk kueri teratas. Di bagian bawah
         grafik, terdapat kotak pilihan untuk kapasitas CPU, CPU dan waktu
         tunggu CPU, Waktu tunggu IO, dan Waktu tunggu Kunci, serta tab masing-masing untuk kueri dan tag.

  • 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.

Menampilkan grafik muatan database dengan muatan untuk kapasitas CPU, waktu tunggu CPU dan
         CPU, Waktu tunggu IO, dan Waktu tunggu Kunci.

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:
  • Rata-rata waktu eksekusi (md): waktu rata-rata untuk mengeksekusi kueri.
  • Total waktu eksekusi (md): total waktu eksekusi yang diperlukan oleh kueri tertentu.
  • Rata-rata baris yang ditampilkan: jumlah rata-rata baris yang diambil untuk kueri.
  • Waktu panggilan: frekuensi kueri dipanggil oleh aplikasi.
  • %load by SELECTED_DIMENSION: diagram garis persentase menggambarkan cara dimensi yang dipilih didistribusikan untuk kueri tertentu.
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.
  • 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 (md): total waktu eksekusi yang dihabiskan kueri dalam jenis peristiwa tunggu tertentu.
  • Jumlah jenis peristiwa tunggu: frekuensi jenis peristiwa tunggu tertentu terjadi dalam jangka waktu yang dipilih.
  • %load by SELECTED_DIMENSION: diagram garis persentase menggambarkan cara dimensi yang dipilih untuk diagram beban database didistribusikan untuk jenis peristiwa tunggu tertentu.
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.
  • 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 (md): total waktu eksekusi yang dihabiskan kueri dalam peristiwa tunggu tertentu.
  • Jumlah peristiwa tunggu: frekuensi jenis peristiwa tunggu tertentu terjadi dalam jangka waktu yang dipilih.
  • %load by SELECTED_DIMENSION: diagram garis persentase menggambarkan cara dimensi yang dipilih untuk diagram beban database didistribusikan untuk peristiwa tunggu tertentu.
Database Tabel menampilkan daftar database teratas yang berkontribusi pada beban selama jangka waktu yang dipilih di semua kueri yang dijalankan.
  • Rata-rata waktu yang dihabiskan di database (md): waktu rata-rata yang dihabiskan kueri di database tertentu.
  • Total waktu yang dihabiskan di database (md): total waktu eksekusi yang dihabiskan kueri di database tertentu.
  • %beban menurut SELECTED_DIMENSION: diagram garis persentase menggambarkan cara dimensi yang dipilih untuk diagram beban database didistribusikan di seluruh database tertentu.
Pengguna Tabel ini menampilkan daftar pengguna teratas untuk jangka waktu yang dipilih di semua kueri yang dieksekusi.
  • Rata-rata waktu yang dihabiskan di pengguna (md): waktu rata-rata yang dihabiskan kueri untuk pengguna tertentu.
  • Total waktu yang dihabiskan di pengguna (md).: total waktu eksekusi yang dihabiskan kueri di pengguna tertentu.
  • %load by SELECTED_DIMENSION: diagram garis persentase menggambarkan cara dimensi yang dipilih untuk diagram beban database didistribusikan di seluruh pengguna tertentu.
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.
  • Total waktu yang dihabiskan di alamat klien (md): total waktu eksekusi yang dihabiskan kueri untuk klien tertentu.
  • %load by SELECTED_DIMENSION: diagram garis persentase menggambarkan cara dimensi yang dipilih untuk diagram pemuatan database didistribusikan di seluruh klien tertentu.

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.

Menampilkan grafik muatan database dengan muatan untuk kueri, dengan
         filter yang dipilih untuk kapasitas CPU, waktu tunggu CPU dan
         CPU, Waktu Tunggu IO, dan Waktu Tunggu Kunci.

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 perintah BEGIN, COMMIT, dan EXPLAIN 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.

Menampilkan dasbor Insight Kueri, dengan pemuatan tag dan daftar tag.

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:

  1. Untuk mengurutkan daftar dalam urutan menurun, klik header Muat menurut total waktu.
  2. 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:

Menampilkan grafik muatan dan latensi database untuk
         kueri tertentu.

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.

Menampilkan grafik muatan database dengan muatan untuk kueri tertentu, dengan
         filter dipilih untuk kapasitas CPU, waktu tunggu CPU dan CPU, waktu tunggu IO, dan waktu tunggu
         Kunci.

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.

Menampilkan grafik latensi dan pemuatan database di halaman untuk
         tag tertentu.

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.

Grafik untuk contoh rencana kueri, dengan waktu saat paket
         dijalankan di bagian bawah grafik (sumbu x) dan jumlah detik
         yang dijalankan di sebelah kanan (sumbu y).

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.

Paket kueri menunjukkan latensi dan biaya untuk setiap operasi yang
         dijalankan untuk kueri tersebut. Proses ini dimulai dengan agregat, yang menampilkan 48 baris,
         dengan latensi 31,06 md dan biaya. dari 296,34. Operasi berikutnya adalah
         loop susun bertingkat, yang dibagi menjadi loop susun bertingkat lainnya dan terwujud.
         Loop bertingkat dibagi menjadi loop susun bertingkat lainnya dan pemindaian indeks. Hal yang terwujud itu
         akan mengarah ke pemindaian urutan.

Coba sederhanakan masalahnya dengan melihat pertanyaan-pertanyaan berikut:

  1. Berapa konsumsi resource?
  2. Bagaimana kaitannya dengan kueri lain?
  3. 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.

Menampilkan grafik latensi kueri 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.

Pilih tag End-to-end untuk melihat informasi spesifik
         tentang tag tersebut. Ringkasan menunjukkan RPC dan Total Durasi dalam md untuk
         setiap operasi untuk tag tersebut.

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.

Gambar ini menunjukkan bahwa untuk alamat klien teratas, muatannya
         100%, waktu eksekusi rata-ratanya adalah 19,568 detik, dan waktu
         yang dipanggil adalah 1,226. Untuk pengguna teratas, postgres pengguna memiliki muatan 100%,
         memiliki waktu eksekusi rata-rata 19,568 milidetik, dan dipanggil 1,226
         kali.

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.

Grafik trace menampilkan semua trace yang telah dijalankan selama
         periode yang dipilih, dalam hal ini memerlukan waktu satu jam. Halaman
         ini juga memiliki tabel yang menampilkan latensi, metode HTTP, URL, dan
         waktu saat trace run.cd

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
  • Django
  • psycopg2
  • Sqlalchemy
  • Flask
Java
  • Hibernasi
  • Musim semi
Ruby
  • Rails
Node.js
  • Knex.js
  • Sequelize.js
  • Express.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:

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Untuk membuka halaman Overview instance, klik nama instance.
  3. Di kartu Configuration, klik Edit configuration.
  4. Di bagian Opsi konfigurasi, luaskan Query Insight.
  5. Hapus centang pada kotak Aktifkan Query Insight.
  6. 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:

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Untuk membuka halaman Ringkasan instance, klik nama instance.
  3. Klik Edit.
  4. Di bagian Customize your instance, luaskan Query insight.
  5. Hapus centang pada kotak Aktifkan fitur Enterprise Plus.
  6. Klik Simpan.

Langkah berikutnya