Rumah  >  Artikel  >  pangkalan data  >  Operasi praktikal log pertanyaan lambat MySQL (analisis grafik dan teks)

Operasi praktikal log pertanyaan lambat MySQL (analisis grafik dan teks)

WBOY
WBOYke hadapan
2022-09-14 17:28:022458semak imbas

Pembelajaran yang disyorkan: tutorial video mysql

1. Gambaran Keseluruhan

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.

2. Tetapan log pertanyaan perlahan

1. Tetapan sementara

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.

2. Tanya status pembukaan log pertanyaan perlahan dan lokasi penyimpanan log pertanyaan perlahan

show variables like '%quer%';

Perihalan parameter:

  • slow_query_log: Sama ada pertanyaan perlahan telah didayakan
  • slow_query_log_file: Laluan fail log pertanyaan perlahan
  • long_query_time : Pertanyaan yang melebihi bilangan saat akan ditulis pada log

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)

3 Lihat format storan log

show variables like 'log_output';

4

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.

3. Ujian pertanyaan perlahan

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.

4. Alat analisis pertanyaan perlahan

mysqldumpslow

mysqldumpslow ialah alat MySQL sendiri untuk menganalisis pertanyaan perlahan. Alat ini ialah skrip Perl.

Parameter yang biasa digunakan adalah seperti berikut:

  • -s: kaedah pengisihan, nilainya adalah seperti berikut:
  • c: Bilangan pertanyaan
  • t: Masa pertanyaan
  • l: Masa kunci
  • r: Kembalikan rekod
  • ac:purata bilangan pertanyaan
  • al:purata masa kunci
  • ar:Purata buku rekod pemulangan
  • pada: Purata masa pertanyaan
  • -t: pertanyaan atasN
  • -g :Ungkapan biasa

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

五、MySQL 清理slowlog方法

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!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam