Rumah > Artikel > pangkalan data > Operasi praktikal log pertanyaan lambat MySQL (analisis grafik dan teks)
Pembelajaran yang disyorkan: tutorial video mysql
Log pertanyaan lambat MySQL disediakan oleh MySQL Sejenis rekod log, yang digunakan untuk merekod pernyataan SQL yang masa tindak balasnya melebihi ambang (long_query_time, unit: saat) dalam MySQL. Secara lalai, MySQL tidak memulakan pengelogan pertanyaan yang perlahan. Artikel ini memperkenalkan secara ringkas cara mendayakan log pertanyaan perlahan dan cara menggunakan mysqldumpslow untuk menganalisis pertanyaan perlahan.
Dayakan log pertanyaan perlahan (tidak sah selepas dimulakan semula)
set global slow_query_log = on;
Nota: Jika anda ingin mematikan log pertanyaan perlahan, anda hanya perlu melaksanakan set global slow_query_log = off;.
Titik kritikal masa pertanyaan perlahan sementara yang lebih tinggi daripada titik kritikal ini akan direkodkan dalam log pertanyaan perlahan (semula semula akan gagal)
set long_query_time = 1;
Tetapkan kaedah storan pertanyaan perlahan (tidak sah selepas dimulakan semula)
set global log_output = file;
Nota: Seperti yang anda lihat, saya menetapkannya kepada fail di sini, yang bermaksud saya Log pertanyaan lambat dicerminkan melalui fail lalai kita boleh menetapkannya ke jadual atau fail.
show variables like '%quer%';
Perihalan parameter:
log_queries_not_using_indexes Jika nilai ditetapkan kepada HIDUP, semua pertanyaan yang tidak menggunakan indeks akan direkodkan (dayakan ini semasa pengoptimuman prestasi, jangan dayakannya seperti biasa)
show variables like 'log_output';
Ubah suai my.cnf
Tambahkan parameter berikut pada bahagian [mysqld] dalam fail konfigurasi my.cnf (biasanya /etc/my.cnf).
[mysqld]slow_query_log= 1slow_query_log_file= /var/lib/mysql/slow-query.log # 若没有指定,默认名字为hostname_slow.loglong_query_time= 1log_queries_not_using_indexes= 1
Antaranya, slow_query_log = 1, bermaksud untuk mendayakan pertanyaan perlahan, 0 bermaksud untuk mematikan
slow_query_log_file, nyatakan laluan log pertanyaan perlahan, MySQL perlu mempunyai kebenaran menulis untuk ini laluan
long_query_time = 1, menunjukkan bahawa masa pertanyaan >= 1 saat sebelum merekod log, lalainya ialah 10s
log_queries_not_using_indexes = 1, menunjukkan bahawa pernyataan SQL yang tidak menggunakan indeks ialah direkodkan
Mulakan semula perkhidmatan MySQL, selepas memulakan semula MySQL Anda akan melihat fail /var/lib/mysql/slow-query.log.
Buat pertanyaan perlahan dan laksanakannya. Seperti berikut:
mysql> select sleep(1);+----------+ | sleep(1) | +----------+ | 0 | +----------+ 1 row in set (1.00 sec)
Log pertanyaan perlahan
Buka fail log pertanyaan perlahan. Anda boleh melihat bahawa pernyataan SQL bagi pertanyaan perlahan di atas direkodkan dalam log.
mysqldumpslow
mysqldumpslow ialah alat MySQL sendiri untuk menganalisis pertanyaan perlahan. Alat ini ialah skrip Perl.
Parameter yang biasa digunakan adalah seperti berikut:
Dapatkan 5 pernyataan SQL yang paling kerap dilawati:
Disusun mengikut masa 5 pernyataan SQL teratas
$ mysqldumpslow -s t -t 5 /var/lib/mysql/slow-query.log
5 pernyataan SQL teratas diisih mengikut masa dan mengandungi 'suka'
$ mysqldumpslow -s t -t 3 -g "like" /var/lib/mysql/slow-query.log
SET GLOBAL slow_query_log = 'OFF'; ALTER TABLEmysql.slow_log RENAME mysql.slow_log_drop; CREATE TABLE mysql.slow_log LIKEmysql.slow_log_drop; SET GLOBAL slow_query_log = 'ON'; DROP TABLE mysql.slow_log_drop;
推荐学习:mysql视频教程
Atas ialah kandungan terperinci Operasi praktikal log pertanyaan lambat MySQL (analisis grafik dan teks). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!