mysql慢查询分析
生活随笔
收集整理的這篇文章主要介紹了
mysql慢查询分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.生成實驗數據
使用sql蠕蟲復制足夠多的數據
insert into payment (name,amount,address) select name,amount,addrss from payment2.慢日志查詢設置
(1)開啟慢查詢日志
set global slow_query_log = on; show variables like 'slow_query_log';設置完畢后,查詢是否開啟
set global slow_query_log = on;?
(2)設置慢查詢臨界點
set long_query_time = 1;(3)設置慢查詢存儲的方式
set globle log_output = file;(4)查詢慢查詢的配置信息
show variables like '%quer%';?
3.慢查詢測試
(1)執行sql
select * from payment where payment_id<100000;(2)查看日志
日志文件通過參數得知在/var/lib/mysql目錄中
查看該日志文件
?
可以看到剛才插入數據的sql和查詢sql都被記錄起來了,且sql執行時間都超過了1s
| Query_time | SQL的查詢時間 |
| Lock_time | 鎖定時間 |
| Rows_sent | 所發送的行數 |
| Rows_examined | 鎖掃描的行數 |
| SET timestamp=1565697747 | sql執行時間 |
| select * from payment | sql執行語句 |
4.慢查詢日志分析工具
(1)mysqldumpslow
顯示出慢查詢日志中最慢的10條sql mysqldumpslow -t 10 /var/lib/mysql/iz2ze6p8tou7n39ta90oziz-slow.log注意:在mysql數據庫所在的服務器上,而不是在mysql>命令行中
(2)pt-query-digest
快速安裝
wget https://www.percona.com/downloads/percona-toolkit/2.2.16/RPM/percona-toolkit-2.2.16-1.noarch.rpm &&?yum localinstall -y ?percona-toolkit-2.2.16-1.noarch.rpm查看服務器信息
pt-summary查看磁盤開銷使用信息
pt-diskstats查看mysql數據庫信息
pt-mysql-summary --user=root --password=root分析慢查詢日志
pt-query-digest?/var/lib/mysql/iz2ze6p8tou7n39ta90oziz-slow.log查找mysql的從庫和同步狀態
pt-slave-find --host=localhost --user=root --password=root查看mysql的死鎖信息
pt-deadlock-logger --user=root --password=root localhost從慢查詢日志中分析索引使用情況
pt-index-usage slow_20131009.log查找數據庫表中重復的索引
pt-duplicate-key-checker --host=localhost --user=root --password=root查看mysql表和文件的當前活動IO開銷
pt-ioprofilept-find查找數據庫里大于2G的表:
pt-find --user=root --password=root --tablesize +2G5.如何分析
(1)查詢次數多且每次查詢占用時間長的sql
通常為pt-query-digest分析的前幾個查詢;該工具可以很清楚的看出每個SQL執行的次數及百分比等信息,執行的次數多,占比比較大的SQL
(2)IO大的sql
注意pt-query-digest分析中的Rows examine項。掃描的行數越多,IO越大。
(3)未命中的索引的SQL
注意pt-query-digest分析中的Rows examine (掃描行數)和Rows Sent(發送行數)的對比。如果掃描行數遠遠大于發送行數,說明該SQL的索引命中率不高,對于這種SQL,我們要重點進行關注。
總結
以上是生活随笔為你收集整理的mysql慢查询分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tomcat调优
- 下一篇: MYSQL数据库设计原则