PolarDB for MySQL menyediakan fitur Jejak SQL untuk melacak informasi eksekusi pernyataan SQL, termasuk rencana eksekusi dan statistik seperti jumlah baris yang dipindai serta waktu eksekusi. Fitur ini membantu mendeteksi perubahan kinerja database akibat perubahan dalam rencana eksekusi pernyataan SQL dan mengumpulkan statistik pada pernyataan SQL teratas yang memakan memori di kluster saat ini.
Prasyarat
Kluster PolarDB Anda harus menggunakan salah satu versi berikut:
PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.30 atau lebih baru.
PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.12 atau lebih baru.
Untuk mengetahui cara melihat versi kluster Anda, lihat Kueri versi mesin.
Batasan
Fitur Jejak SQL tidak melacak operasi terkait akun, seperti CREATE USER, DROP USER, dan GRANT.
Parameter
Parameter | Deskripsi |
loose_sql_trace_type | Jenis tugas jejak yang ingin Anda gunakan fitur Jejak SQL untuk melacak. Nilai valid:
Catatan SLOW_QUERY hanya didukung untuk kluster yang menjalankan PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.34 atau lebih baru. |
loose_sql_sharing_size | Ukuran memori maksimum untuk SQL Sharing (komponen dasar dalam Jejak SQL). Nilai valid: 8388608 hingga 1073741824. Unit: byte. Nilai default: 134217728. |
loose_sql_trace_plan_expire_time | Waktu kedaluwarsa dari rencana eksekusi yang dilacak oleh fitur Jejak SQL. Jika pernyataan SQL yang sedang dieksekusi menghasilkan rencana eksekusi, tetapi pernyataan SQL berikutnya tidak dieksekusi berdasarkan rencana eksekusi dalam periode waktu yang ditentukan, rencana eksekusi dianggap kedaluwarsa dan dihapus. Nilai valid: 0 hingga 18446744073709551615. Unit: detik. Nilai default: 604800. |
Penggunaan
Tambahkan pernyataan SQL yang akan dilacak.
Gunakan salah satu metode berikut untuk menambahkan pernyataan SQL yang ingin dilacak dan gunakan fitur Jejak SQL untuk melacak eksekusinya:
Atur parameter
loose_sql_trace_typeke ALL untuk melacak semua pernyataan SQL.Atur parameter
loose_sql_trace_typeke DEMAND dan tambahkan pernyataan SQL yang ingin dilacak menggunakan prosedur tersimpan dbms_sql.add_trace.
Peroleh informasi tentang pernyataan SQL yang dilacak oleh fitur Jejak SQL.
Akses tabel information_schema.sql_sharing untuk melihat informasi eksekusi pernyataan SQL dan pernyataan SQL teratas yang dilacak. Contoh sintaks:
Peroleh informasi eksekusi dan rencana eksekusi dari pernyataan SQL tertentu.
SELECT * FROM information_schema.sql_sharing WHERE sql_id = polar_sql_id('select * from t');Peroleh 10 pernyataan SQL teratas berdasarkan total waktu eksekusi, rata-rata waktu eksekusi, dan total jumlah baris yang dipindai.
SELECT * FROM information_schema.sql_sharing WHERE TYPE='sql' ORDER BY SUM_EXEC_TIME DESC LIMIT 10; SELECT * FROM information_schema.sql_sharing WHERE TYPE='sql' ORDER BY SUM_EXEC_TIME/EXECUTIONS DESC LIMIT 10; SELECT * FROM information_schema.sql_sharing WHERE TYPE='sql' ORDER BY SUM_ROWS_EXAMINED DESC LIMIT 10;
Operasi lainnya
Jika Anda tidak lagi perlu melacak pernyataan SQL yang ditambahkan menggunakan prosedur tersimpan dbms_sql.add_trace, gunakan prosedur tersimpan dbms_sql.delete_trace untuk menghapus pernyataan SQL yang telah dibuat templat berdasarkan pernyataan SQL tertentu, atau gunakan prosedur tersimpan dbms_sql.delete_trace_by_sqlid untuk menghapus pernyataan SQL berdasarkan ID SQL.
Reset semua statistik dalam tabel information_schema.sql_sharing menggunakan prosedur tersimpan dbms_sql.reset_trace_stats.
Bersihkan semua statistik dalam tabel information_schema.sql_sharing menggunakan prosedur tersimpan dbms_sql.flush_trace. Setelah membersihkan semua statistik, gunakan prosedur tersimpan dbms_sql.reload_trace untuk memuat ulang pernyataan SQL yang telah dibuat templat dari tabel mysql.sql_sharing ke tabel information_schema.sql_sharing jika ingin mengumpulkan kembali statistik pada eksekusi pernyataan SQL yang ditambahkan menggunakan prosedur tersimpan dbms_sql.add_trace.
Pengujian kinerja
Fitur Jejak SQL menggunakan desain tanpa kunci secara luas untuk memastikan kinerja database dalam skenario dengan konkurensi tinggi dan sejumlah besar template SQL.
Pengujian berikut membandingkan kinerja database dalam kluster ketika parameter sql_trace_type diatur ke OFF dan ALL dalam skenario yang sama.
Dalam pengujian Sysbench, digunakan 2.000 tabel, masing-masing berisi 10.000 baris data. Pengujian dilakukan pada kluster dengan 4 core dan 8 GB memori serta kluster dengan 8 core dan 32 GB memori.
Gambar berikut menunjukkan perbandingan kinerja untuk kluster dengan 4 core dan 8 GB memori dalam skenario yang berbeda.
db-ps-mode=disable oltp_read_only

db-ps-mode=auto oltp_read_write

Gambar berikut menunjukkan perbandingan kinerja untuk kluster dengan 8 core dan 32 GB memori dalam skenario yang berbeda.
db-ps-mode=disable oltp_read_only

db-ps-mode=auto oltp_read_write

Kesimpulan
Data pengujian menunjukkan bahwa fitur Jejak SQL menurunkan kinerja database kurang dari 3% dalam skenario oltp_read_only dan oltp_read_write.