Menggunakan insight kueri untuk meningkatkan performa kueri

Halaman ini menjelaskan cara menggunakan dasbor Query Insight untuk mendeteksi dan menganalisis masalah performa.

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.

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:

  • Menangkap teks kueri yang lebih panjang hingga 20 KB
  • Mempertahankan retensi metrik 30 hari yang lebih lama
  • Mendapatkan rekomendasi indeks dari penasihat indeks
  • Menghentikan sesi dalam kueri aktif

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

Semua versi instance berikut:

  • SQL Server Web
  • SQL Server Standard
  • SQL Server Enterprise

Insight kueri tidak didukung di instance edisi SQL Server Express

SQL Server Enterprise versi 2019 atau 2022
Jenis mesin yang didukung Didukung di semua jenis mesin Tidak didukung di instance yang menggunakan jenis mesin dengan inti bersama
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 20 KB
Rekomendasi penasihat indeks Tidak tersedia Tersedia
Menghentikan sesi dalam kueri aktif 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 menyimpan data metrik di instance dan mengharuskan Anda tetap mengaktifkan setelan peningkatan penyimpanan otomatis. Biaya penyimpanan yang berlaku akan diterapkan.

Sebelum memulai

Sebelum menggunakan insight kueri, lakukan hal berikut.

  1. Tambahkan peran dan izin yang diperlukan.
  2. Pastikan Aktifkan peningkatan penyimpanan otomatis diaktifkan untuk instance.

Peran dan izin yang diperlukan

Untuk menggunakan insight kueri, Anda harus memberikan peran dengan izin Identity and Access Management (IAM) 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:

Aktifkan peningkatan penyimpanan otomatis

Pastikan setelan instance untuk mengaktifkan peningkatan penyimpanan otomatis tetap diaktifkan.

Jika sebelumnya Anda menonaktifkan setelan instance ini, aktifkan kembali peningkatan penyimpanan otomatis sebelum mengaktifkan insight kueri.

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. Sesuaikan panjang kueri

    Default: 1024

    Menetapkan batas panjang kueri ke nilai yang ditentukan dari 256 byte hingga 4.500 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.

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

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 \
--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:

Untuk menerapkan konfigurasi Terraform di project Google Cloud , selesaikan langkah-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 untuk melihat hasilnya. Di konsol Google Cloud , buka resource Anda di UI untuk memastikan Terraform telah membuat atau mengupdatenya.

Metrik diharapkan akan tersedia di analisis kueri dalam hitungan menit setelah penyelesaian kueri.

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 256 hingga 20480. 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 10240 byte (10 KB).

  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. Di sebelah kanan menu drop-down,
         terdapat filter untuk menyetel rentang waktu.

  • Database: Memfilter pemuatan kueri di database tertentu atau semua database.
  • 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.
  • Kueri dan Database: Memfilter pemuatan kueri berdasarkan kueri yang dipilih atau database 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 menurut waktu eksekusi. Menu drop-down di dasbor memungkinkan Anda memfilter grafik untuk semua database atau database tertentu.

Menampilkan semua kueri yang dieksekusi untuk database yang dipilih.

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.
  • Database mana yang mengalami pemuatan? Pilih berbagai database dari menu drop-down Databases untuk menemukan database yang memiliki beban tertinggi.

Memfilter muatan database

Anda dapat memfilter pemuatan database berdasarkan kueri. Jika menggunakan insight 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

  • Database

Untuk menyesuaikan diagram pemuatan database, pilih dimensi dari drop-down Database Load by execution time.

Melihat kontributor utama 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 normalisasi 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.
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.

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. Tabel menampilkan properti berikut:

  • Query: string kueri yang dinormalisasi. Secara default, Insight kueri hanya menampilkan 1.024 karakter dalam string kueri.
  • Database: database tempat kueri dijalankan.
  • Rata-rata waktu eksekusi (md): Waktu rata-rata kueri untuk dieksekusi.
  • Total waktu eksekusi (md): total waktu untuk mengeksekusi kueri.
  • 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.

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 selanjutnya