日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql mysqldumpslow_慢日志分析工具—mysqldumpslow 和 mysqlsla

發布時間:2025/3/12 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql mysqldumpslow_慢日志分析工具—mysqldumpslow 和 mysqlsla 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前提:分析mysql性能的時候會查看數據庫的哪些sql語句有問題,效率低。這就用到了數據庫的慢查詢,作用就是: 它能記錄下所有執行超過long_query_time時間的SQL語句,幫你找到執行慢的SQL,方便我們對這些SQL進行優化。

1.配置慢查詢

在mysql客戶端執行

mysql> show variables like "%query%" ;

得到結果:

設置慢查詢.png

涉及參數解釋:

slow_query_log :是否開啟慢查詢,ON 開啟,OFF關閉

修改參數使用命令:

set global slow_query_log=ON; #開啟MySQL慢查詢功能

long_query_time :慢查詢時間設置,默認是10秒

slow_query_log_file :慢查詢日志存放路徑

還可以通過修改MySQL配置文件參數,開啟MySQL慢查詢。vi /etc/my.cnf ,在[mysqld]段添加以下代碼:

slow-query-log = on #開啟MySQL慢查詢功能

slow_query_log_file = /data/mysql/127-slow.log #設置MySQL慢查詢日志路徑

long_query_time = 5 #修改為記錄5秒內的查詢,默認不設置此參數為記錄10秒內的查詢

log-queries-not-using-indexes = on #記錄未使用索引的查詢

:wq! #保存退出

service mysqld restart #重啟MySQL服務

2.查看慢查詢日志

執行sql后就可以看到配置的路徑下面有日志生成了,對于得到的日志有2中方式可以對其分析,一是mysql自帶的 mysqldumpslow,另外一個是要獨自安裝的 mysqlsla,下面分別介紹一下。

2.1 mysqldumpslow 分析慢查詢日志

執行命令:

[root@chances126 /]# mysqldumpslow /var/lib/mysql/mysql-slow.log

得到的信息解釋:

主要功能是, 統計不同慢sql的

出現次數(Count),

執行最長時間(Time),

累計總耗費時間(Time),

等待鎖的時間(Lock),

發送給客戶端的行總數(Rows),

掃描的行總數(Rows),

用戶以及sql語句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).

對我而言,看到返回的這一對信息,我是崩潰的,也沒有提示是哪個數據庫報的,一般一臺服務器有很多數據庫,這樣根本看不出來啊。我不偏愛這個工具,雖然他是不用安裝的。

2.2 mysqlsla 分析慢查詢日志

這個工具需要安裝,看下如何安裝吧。Linux如何安裝 mysqlsla

安裝好后,接下來就是使用了:

#查詢記錄最多的10條,可以指定具體的數據庫

mysqlsla -lt slow -sort t_sum -sf "+select,update,INSERT" -db hunaniptv -top 10 /var/lib/mysql/mysqld_slow.log

#查詢記錄最多的20個sql語句,并寫到select.log中去

mysqlsla -lt slow --sort t_sum --top 20 /data/mysql/127-slow.log >/tmp/select.log

#統計慢查詢文件為/data/mysql/127-slow.log的所有select的慢查詢sql,并顯示執行時間最長的100條sql,并寫到sql_select.log中去

mysqlsla -lt slow -sf "+select" -top 100 /data/mysql/127-slow.log >/tmp/sql_select.log

#統計慢查詢文件為/data/mysql/127-slow.log的數據庫為mydata的所有select和update的慢查詢sql,并查詢次數最多的100條sql,并寫到sql_num.sql中去

mysqlsla -lt slow -sf "+select,update" -top 100 -sort c_sum -db mydata /data/mysql/127-slow.log >/tmp/sql_num.log

得到的信息大概是這種樣子:

mysqlsla分析慢查詢.png

返回參數解釋:

Count, sql的執行次數及占總的slow log數量的百分比.

Time, 執行時間, 包括總時間, 平均時間, 最小, 最大時間, 時間占到總慢sql時間的百分比.

95% of Time, 去除最快和最慢的sql, 覆蓋率占95%的sql的執行時間.

Lock Time, 等待鎖的時間.95% of Lock , 95%的慢sql等待鎖時間.Rows sent, 結果行統計數量, 包括平均, 最小, 最大數量.

Rows examined, 掃描的行數量.

Database, 屬于哪個[數據庫]

Users, 哪個用戶,IP, 占到所有用戶執行的sql百分比

Query abstract, 抽象后的sql語句

Query sample, sql語句

對于得到這個信息還可以進一步分析,就是登陸到mysql 的客戶端,登陸數據庫,執行 EXPLAIN查看sql具體的 type 信息。

[root@chances126 /]# mysql -uroot -pchances

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 141058

Server version: 5.1.73-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use sc_epg_release4

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> EXPLAIN select distinct a.* from EPG_CONTENT_SERIES a join EPG_CATEGORY_ITEM b on a.CONTENT_CODE = b.ITEM_CODE where a.ENABLE_STATUS=1 and b.STATUS=0 and a.EXTERNAL_CODE = '2000000200000010042000000006088';

+----+-------------+-------+------+---------------+-------------+---------+-----------------------------+-------+------------------------------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+-------+------+---------------+-------------+---------+-----------------------------+-------+------------------------------+

| 1 | SIMPLE | b | ALL | NULL | NULL | NULL | NULL | 28504 | Using where; Using temporary |

| 1 | SIMPLE | a | ref | seriesIndex | seriesIndex | 387 | sc_epg_release4.b.ITEM_CODE | 1 | Using where |

+----+-------------+-------+------+---------------+-------------+---------+-----------------------------+-------+------------------------------+

2 rows in set (0.00 sec)

mysql>

可以看出 a 表是全表查詢,b表級別是 ref ,可以進一步分析 sql 了。

性能從最好到最差:system、const、eq_reg、ref、range、index和ALL

如果看到性能不好,就可以把sql給研發去分析了。

總結

以上是生活随笔為你收集整理的mysql mysqldumpslow_慢日志分析工具—mysqldumpslow 和 mysqlsla的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。