Bagaimana untuk mendayakan dan menganalisis log pertanyaan perlahan dalam MySQL?

青灯夜游
Lepaskan: 2021-09-10 17:38:43
ke hadapan
1909 orang telah melayarinya

Artikel ini akan membawa anda memahami pertanyaan perlahan dalam MySQL, memperkenalkan kaedah mendayakan log pertanyaan perlahan dan menganalisis pertanyaan lambat saya harap ia akan membantu semua orang.

Bagaimana untuk mendayakan dan menganalisis log pertanyaan perlahan dalam MySQL?

Mysql mempunyai fungsi yang boleh merekodkan rekod lambat pertanyaan jangka panjang Tempoh masa tertentu boleh dikonfigurasikan sendiri, tetapi pertanyaan lambat tidak semestinya SQL buruk dan mungkin juga dipengaruhi oleh Ia juga merupakan alat analisis prestasi yang biasa digunakan yang mempengaruhi pertanyaan lain atau disebabkan oleh had sumber sistem. [Cadangan berkaitan: tutorial video mysql]

Log pertanyaan perlahan MySQL dikawal oleh long_query_time dan min_examined_row_limit yang pertama bermakna jika pertanyaan mengambil masa lebih daripada beberapa saat, MySQL Pelayan merekodkan ini ke dalam fail log pertanyaan perlahan apabila log pertanyaan perlahan didayakan.

Dayakan log pertanyaan perlahan

Untuk mendayakan log pertanyaan perlahan dalam MySQL, sila ikut langkah berikut:

Pertama lihat log pertanyaan perlahan dalam MySQL Status pertanyaan.

MariaDB [(none)]> show variables like '%slow%';
+------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+                                                                                           
| Variable_name                | Value                                                                                                                                |                                                                                           
+------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+                                                                                           
| log_slow_admin_statements    | ON                                                                                                                                   |
| log_slow_disabled_statements | sp                                                                                                                                   |
| log_slow_filter              | admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |
| log_slow_rate_limit          | 1                                                                                                                                    |
| log_slow_slave_statements    | ON                                                                                                                                   |
| log_slow_verbosity           |                                                                                                                                      |
| slow_launch_time             | 2                                                                                                                                    |
| slow_query_log               | OFF                                                                                                                                  |
| slow_query_log_file          | hxl-slow.log                                                                                                                         |
+------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
9 rows in set (0.001 sec)
Salin selepas log masuk

Pertama lihat status slow_query_log, yang mewakili sama ada log pertanyaan perlahan didayakan. Nilai boleh 0 atau OFF untuk melumpuhkan, 1 atau ON untuk mendayakan. Destinasi output log dikawal oleh pembolehubah sistem log_output Jika nilainya ialah NONE, walaupun log pertanyaan perlahan didayakan, ia tidak akan ditulis pada log Nilai pembolehubah log_output adalah seperti berikut:

  • JADUAL: (Lalai) Tulis pertanyaan umum ke jadual mysql.general_log dan pertanyaan perlahan ke jadual mysql.slow_log.
  • FAIL: Tulis log pertanyaan umum dan perlahan pada sistem fail.
  • TIADA – Lumpuhkan pengelogan. Pembolehubah

dan general_log_file dan slow_query_log_file mewakili nama fail log pertanyaan dan log pertanyaan perlahan. Pembolehubah ini boleh ditetapkan apabila pelayan dimulakan atau dijalankan.

Mulakan log pertanyaan perlahan

Fungsi log pertanyaan perlahan dimatikan secara lalai dalam MySQL, jadi untuk menghidupkan ciri ini, kita perlu menetapkan slow_query_log kepada HIDUP, seperti berikut Papar.

SET GLOBAL slow_query_log = 1;
Salin selepas log masuk

Tetapkan tempoh rakaman

long_query_timePembolehubah menunjukkan bahawa hanya masa berjalan melebihi nilai ini akan direkodkan, seperti yang ditunjukkan di bawah, masa perubahan ialah 5 saat, Ia lalai kepada 10 saat dan nilai minimum ialah 0.

SET GLOBAL long_query_time = 5;
Salin selepas log masuk

Ubah suai lokasi output

Secara lalai, fail log pertanyaan perlahan terletak di /var/lib/mysql/hostname-slow.log, kami juga boleh menetapkan lokasi lain menggunakan slow_query_log_file pembolehubah.

SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
Salin selepas log masuk

Tulis log pertanyaan perlahan pada jadual

Log pertanyaan perlahan juga boleh ditulis pada jadual slow_log dengan mengubah suainya seperti yang dinyatakan di ataslog_outputPembolehubah sistem ialah TABLE dan operasinya adalah seperti berikut:

SET GLOBAL log_output='TABLE';
Salin selepas log masuk

Pembolehubah berkaitan log pertanyaan perlahan

分析慢查询

日志记录后,我们还需要分析这些日志,找出影响系统的查询,MySQL提供了一个名为mysqldumpslow的工具,可以简单的显示结果,只需要把日志路径传递给他即可,如下:

# mysqldumpslow -a mysql-slow.log

Reading mysql slow query log from mysql-slow.log
Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=21.0 (21), Rows_examined=21.0 (21), Rows_affected=0.0 (0), root[root]@localhost
  show databases

Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=2.0 (2), Rows_examined=2.0 (2), Rows_affected=0.0 (0), root[root]@localhost
  select * from users

Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=1.0 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost
  select @@version_comment limit 1

Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=1.0 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost
Salin selepas log masuk

他的参数如下

  • -s ,按照什么方式起来排序。默认at,也就是按照平均查询时间来排序。都是按照倒序排列。

    al: average lock time 平均锁定时间

    ar: average rows sent 平均返回行数

    at: average query time 平均查询时间

    c: count 总执行次数

    l: lock time 总锁定时间

    r: rows sent 总返回行数

    t: query time 总查询时间

  • -t ,show the top n queries,显示前多少名的记录

  • -a ,默认不开启这个选项。mysqldumpslow将相似的SQL的值(字符串或者数字)替换为N,开启该选项,则显示真实值。不开启该选项,有点类似于Oracle的绑定变量的记录。\

  • -g ,类似于grep命令,过滤出需要的信息。如,只查询A表的慢查询记录。\

  • -l ,总时间中包含锁定时间

原文地址:https://juejin.cn/post/6993221989175394311

更多编程相关知识,请访问:编程视频!!

Atas ialah kandungan terperinci Bagaimana untuk mendayakan dan menganalisis log pertanyaan perlahan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!