Halaman ini menjelaskan cara memantau dan memecahkan masalah kueri yang aktif di database Anda. Memantau kueri ini dapat membantu mengidentifikasi penyebab latensi sistem dan penggunaan CPU yang tinggi.
Di dasbor Query Insights, Anda dapat melihat ringkasan transaksi aktif dan daftar transaksi dengan kueri dan statistik terkait. Transaksi ditampilkan berdasarkan waktu mulai transaksi. Jika ada banyak kueri yang berjalan, hasilnya mungkin dibatasi pada subgrup dari total kueri.
Sebelum memulai
Untuk memantau kueri aktif, Anda dapat menggunakan edisi Cloud SQL Enterprise atau edisi Cloud SQL Enterprise Plus.
Untuk menghentikan sesi atau transaksi yang berjalan lama dalam kueri aktif, Anda harus menggunakan edisi Cloud SQL Enterprise Plus untuk instance Cloud SQL.
Untuk informasi selengkapnya tentang edisi Cloud SQL, lihat Pengantar edisi Cloud SQL.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk melihat kueri aktif, minta administrator untuk memberi Anda peran IAM berikut pada project yang menghosting instance Cloud SQL:
-
Melihat ringkasan aktivitas instance:
Viewer Cloud SQL (
roles/cloudsql.viewer) -
Melihat ringkasan aktivitas database dan transaksi yang berjalan lama:
Database Insights Viewer (
roles/databaseinsights.viewer) -
Menghentikan sesi atau transaksi yang berjalan lama:
- Cloud SQL Editor (
roles/cloudsql.editor) - Database Insights Operations Admin (
roles/databaseinsights.operationsAdmin)
- Cloud SQL Editor (
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk melihat kueri aktif. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk melihat kueri aktif:
-
Melihat ringkasan aktivitas database dan transaksi yang berjalan lama:
-
databaseinsights.activeQueries.fetch -
databaseinsights.activitySummary.fetch
-
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Mengaktifkan kueri aktif
Saat mengaktifkan Query Insights, Anda akan mengaktifkan kueri aktif secara otomatis. Agar dapat menghentikan sesi atau transaksi yang berjalan lama dalam kueri aktif, Anda harus menggunakan Query Insights untuk edisi Cloud SQL Enterprise Plus.
Menonaktifkan kueri aktif
Anda tidak dapat menonaktifkan kueri aktif tanpa menonaktifkan Query Insights. Untuk menonaktifkan kueri aktif dan Query Insights, lihat Menonaktifkan Query Insights.
Melihat kueri aktif
Untuk melihat kueri aktif, selesaikan langkah-langkah berikut:
Di konsol Google Cloud , buka halaman Instance Cloud SQL.
Untuk membuka halaman Ringkasan instance, klik nama instance.
Lakukan salah satu tindakan berikut untuk menampilkan dasbor Query Insights:
- Pilih tab Query Insights.
- Klik Go to Query insights for more in-depth info on queries and performance. Dasbor Query Insight akan terbuka. Halaman ini menampilkan detail tentang instance di bagian atas.
Klik tab Kueri aktif.
Dari sini, Anda dapat mengubah informasi kueri yang muncul di tabel Longest running transactions:
- Database: memfilter pemuatan kueri di database tertentu atau semua database.
- Pengguna: memfilter pemuatan kueri dari akun pengguna tertentu.
Melihat kueri aktif yang dinormalisasi
Anda dapat melihat daftar transaksi yang berjalan lama dengan kueri aktif yang dinormalisasi di dasbor Query Insights. Kueri aktif yang dinormalisasi akan menghapus data sensitif dan menampilkan ringkasan. Ringkasan ini sama untuk berbagai nilai yang digunakan dalam contoh berikut:
Kueri reguler
select * from test_table where id=1;select * from test_table_where id=2;
Ringkasan atau kueri yang dinormalisasi
select * from test_table where id=?;
Kueri yang berjalan di sesi yang berbeda ditampilkan sebagai entri yang berbeda di dasbor.
Melihat transaksi terlama yang berjalan
Tabel Transaksi yang berjalan paling lama di dasbor Query Insights berisi kolom berikut:
| Nama kolom | Deskripsi |
|---|---|
| ID Sesi | ID unik sesi. |
| Kueri | Teks kueri SQL. |
| Status sesi | Status sesi. |
| Durasi kueri | Durasi kueri telah berjalan. |
| ID sesi pemblokiran | ID sesi yang memblokir sesi. |
| Jenis peristiwa tunggu | Jenis peristiwa tunggu, jika permintaan diblokir untuk eksekusi kueri. |
| Resource tunggu | Resource yang saat ini ditunggu oleh permintaan, jika permintaan diblokir untuk eksekusi kueri. |
| Durasi tunggu transaksi | Durasi tunggu saat ini, jika sesi diblokir. |
| Pembacaan logis | Jumlah pembacaan logis yang telah dilakukan oleh permintaan. |
| Baca | Jumlah pembacaan yang telah dilakukan oleh permintaan. |
| Tulis | Jumlah penulisan yang telah dilakukan oleh permintaan. |
| Database | Database tempat sesi berjalan. |
| Pengguna | Nama pengguna yang terhubung ke database. |
| Alamat klien | Alamat IP spesifik klien yang mengirim kueri. |
| Waktu CPU (md) | Waktu CPU dalam milidetik yang digunakan oleh permintaan. |
| Nama aplikasi | Nama aplikasi yang memulai sesi. |
| Baris transaksi diubah | Jumlah baris yang ditampilkan ke klien oleh kueri ini. |
| % selesai | Persentase pekerjaan yang telah selesai, jika kueri melaporkan progres. |
| Memori kueri yang diberikan | Jumlah halaman yang dialokasikan untuk eksekusi permintaan. |
| Tindakan | Berisi link untuk menghentikan sesi. |
Tampilan diperbarui secara otomatis setiap 60 detik.
Anda dapat menggunakan menu vertikal Opsi tampilan konten... untuk memfilter kolom yang ingin ditampilkan.
Menghentikan sesi
Untuk menghentikan sesi atau transaksi yang berjalan lama, Anda harus menggunakan edisi Cloud SQL Enterprise Plus dan mengaktifkan Query Insights untuk edisi Cloud SQL Enterprise Plus.
Operasi yang berjalan lama dapat memerlukan waktu lebih lama untuk dihentikan.
Untuk menghentikan kueri atau transaksi, selesaikan langkah-langkah berikut:
- Di tabel Longest running transaction, pilih kueri.
- Di kolom Tindakan, klik Hentikan sesi.
- Di jendela Terminate session, klik Confirm.
Kueri aktif yang diblokir
Jika kueri aktif tertentu diblokir atau berjalan jauh lebih lama dari yang diperkirakan, kueri aktif tersebut dapat memblokir kueri dependen lainnya.
Cloud SQL memberi Anda opsi untuk menghentikan kueri aktif tertentu yang berjalan lama atau diblokir.
Mengaktifkan analisis kueri aktif yang diblokir
Secara default, konsol Google Cloud tidak menampilkan kueri aktif yang diblokir.
Untuk menganalisis kueri aktif yang diblokir, persyaratan berikut berlaku:
- Anda harus menggunakan instance edisi Cloud SQL Enterprise Plus.
- Anda harus mengaktifkan fitur Enterprise Plus.
Untuk mengaktifkan analisis kueri aktif yang diblokir, lakukan tindakan berikut:
Konsol
-
Di konsol Google Cloud , buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Klik Edit.
- Luaskan bagian Query insights.
- Pilih Enable Query insights dan Enable Enterprise Plus features. Kedua setelan diperlukan.
- Pilih Blocked query analysis.
- Klik Simpan.
Mengidentifikasi dan menghentikan kueri aktif yang diblokir
Langkah-langkah berikut menunjukkan cara mengidentifikasi dan menghentikan kueri aktif tertentu yang mungkin memblokir kueri lain.
Konsol
-
Di konsol Google Cloud , buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Di menu navigasi SQL, klik Query Insights.
- Klik tab Kueri aktif.
Jika Anda belum menjalankan kueri aktif, buka Cloud SQL Studio dan jalankan kueri yang ingin Anda selidiki.
- Buka bagian Longest running transactions. Anda dapat melihat hingga 50 kueri aktif yang berjalan paling lama di setiap kategori.
Setiap entri yang ditampilkan memiliki detail kueri aktif yang ditampilkan, termasuk hal berikut:
- ID Sesi: ID sesi kueri. Klik luaskan
untuk melihat entri. Anda dapat melihat salah satu dari dua ikon:
- Ikon jam pasir: Ikon ini menunjukkan bahwa kueri sedang menunggu kueri lain selesai. Jika ada angka di samping ikon, angka tersebut menunjukkan jumlah kueri dependen yang menunggu kueri ini selesai.
- Ikon simbol blokir: Ikon ini menunjukkan bahwa kueri tidak dapat diselesaikan dan mungkin memblokir kueri lain.
- Query: Teks kueri SQL.
- Status sesi: Status sesi.
- Durasi kueri (detik): Berapa lama kueri telah berjalan.
- Waktu CPU(ms): Waktu CPU dalam milidetik yang digunakan oleh permintaan.
- Jenis peristiwa tunggu: Jenis peristiwa tunggu, jika permintaan diblokir untuk eksekusi kueri.
- Resource tunggu: Resource yang saat ini ditunggu oleh permintaan, jika permintaan diblokir untuk eksekusi kueri.
- Durasi tunggu transaksi (detik): Durasi tunggu saat ini, jika sesi diblokir.
- Tindakan: Tindakan yang dapat dilakukan, seperti Hentikan sesi.
Klik untuk meluaskan ID sesi yang ingin Anda selidiki. Anda dapat meluaskan sesi pokok hingga tiga tingkat di hierarki investigasi.
- ID Sesi: ID sesi kueri. Klik luaskan
untuk melihat entri. Anda dapat melihat salah satu dari dua ikon:
- Identifikasi kueri tertentu yang diblokir, lalu klik Terminate session. Setelah menghentikan sesi, Anda dapat membuka Cloud SQL Studio untuk menjalankan kueri aktif lagi.
Melihat detail pemblokiran sesi tidur
Tab Kueri aktif menampilkan sesi yang saat ini sedang memproses permintaan. Sesi dalam status SLEEPING dikecualikan dari tampilan ini.
Untuk melihat perintah terakhir yang dijalankan untuk sesi tidur, gunakan skrip berikut:
SELECT c.session_id, st.text,s.login_name, s.open_transaction_count, s.host_name, s.program_name
FROM sys.dm_exec_connections AS c JOIN sys.dm_exec_sessions AS S ON c.session_id=s.session_id
CROSS APPLY sys.dm_exec_sql_text(c.most_recent_sql_handle) AS st
WHERE s.session_id=BLOCKING_SESSION_ID
Ganti BLOCKING_SESSION_ID dengan ID sesi yang menyebabkan pemblokiran.
Untuk mengetahui informasi selengkapnya guna membantu memecahkan masalah dan menyelesaikan pemblokiran, lihat referensi berikut:
- Pemblokiran yang disebabkan oleh SPID tidur yang memiliki transaksi yang belum di-commit
- Memahami dan menyelesaikan masalah pemblokiran SQL Server.