10.什么是慢查詢?如何通過慢查詢日志優化?


整理自互聯網!

摘要:

這篇講講慢查詢。在小伙伴們開發的項目中,對於MySQL排查問題找出性能瓶頸來說,最容易發現並解決的問題就是MYSQL的慢查詢以及沒有用索引的查詢.

日志就跟人們寫的日記一樣,記錄着過往的事情。但是人的日記是主觀的(記自己想記的內容),而數據庫的日志是客觀的.

根據記錄內容分為以下好幾種日志:

a、錯誤日志:記錄啟動、運行或停止mysqld時出現的問題。

b、通用日志:記錄建立的客戶端連接和執行的語句。

c、更新日志:記錄更改數據的語句。該日志在MySQL 5.1中已不再使用。

d、二進制日志:記錄所有更改數據的語句。還用於主從復制。

e、慢查詢日志:記錄所有執行時間超過long_query_time秒的所有查詢或不使用索引的查詢。

f、Innodb日志:innodb redo log

缺省情況下,所有日志創建於mysqld數據目錄中。

可以通過刷新日志,來強制mysqld來關閉和重新打開日志文件(或者在某些情況下切換到一個新的日志)。

當你執行一個FLUSH LOGS語句或執行mysqladmin flush-logs或mysqladmin refresh時,則日志被老化。

對於存在MySQL復制的情形下,從復制服務器將維護更多日志文件,被稱為接替日志。

這次我們介紹的就是慢查詢日志。何謂慢查詢日志?

MySQL會記錄下查詢超過指定時間的語句,我們將超過指定時間的SQL語句查詢稱為慢查詢,都記在慢查詢日志里.

我們開啟后可以查看究竟是哪些語句在慢查詢開啟慢查詢日志.

mysql>show variables like “%slow%”; 查看慢查詢配置,沒有則在my.cnf中添加,如下

wps2A4F.tmp

分析日志 – mysqldumpslow

分析日志,可用mysql提供的mysqldumpslow,使用很簡單,參數可–help查看

wps2A8E.tmp

推薦用分析日志工具 – mysqlsla

wps2A9F.tmp

【說明】

queries total: 總查詢次數

unique:去重后的sql數量

sorted by : 輸出報表的內容排序最重大的慢sql統計信息, 包括 平均執行時間, 等待鎖時間, 結果行的總數, 掃描的行總數.

Count:ql的執行次數及占總的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語句


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM