mysql效能剖析

2021-07-30 11:55:52 字數 2452 閱讀 7716

在程式這一層面進行剖析,第三方工具new relic, oneapm等.可以很直觀的展現程式的使用情況,伺服器cup,磁碟等情況,每乙個請求的響應時間等.

在定位到是資料庫比較慢之後,那麼如何定位到是哪些sql執行比較緩慢,通過下面的慢查詢日誌.

( mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過long_query_time值的sql,則會被記錄到慢查詢日誌中。long_query_time的預設值為10,意思是執行10s以上的語句。預設情況下,mysql資料庫並不啟動慢查詢日誌,需要我們手動來設定這個引數,當然,如果不是調優需要的話,一般不建議啟動該引數,因為開啟慢查詢日誌會或多或少帶來一定的效能影響。慢查詢日誌支援將日誌記錄寫入檔案,也支援將日誌記錄寫入資料庫表。

是否開啟慢查詢日誌,1表示開啟,0表示關閉。

舊版(5.6以下版本)mysql資料庫慢查詢日誌儲存路徑。可以不設定該引數,系統則會預設給乙個預設的檔案host_name-slow.log

新版(5.6及以上版本)mysql資料庫慢查詢日誌儲存路徑。可以不設定該引數,系統則會預設給乙個預設的檔案host_name-slow.log

慢查詢閾值,當查詢時間多於設定的閾值時,記錄日誌。

未使用索引的查詢也被記錄到慢查詢日誌中(可選項)。

日誌儲存方式。log_output=』file』表示將日誌存入檔案,預設值是』file』。log_output=』table』表示將日誌存入資料庫,這樣日誌資訊就會被寫入到mysql.slow_log表中。mysql資料庫支援同時兩種日誌儲存方式,配置的時候以逗號隔開即可,如:log_output=』file,table』。日誌記錄到系統的專用日誌表中,要比記錄到檔案耗費更多的系統資源,因此對於需要啟用慢查詢日誌,又需要能夠獲得更高的系統效能,那麼建議優先記錄到檔案。

預設情況下slow_query_log的值為off,表示慢查詢日誌是禁用的

set global slow_query_log=1;來開啟 0 表示關閉

使用set global slow_query_log=1開啟了慢查詢日誌只對當前資料庫生效,如果mysql重啟後則會失效。如果要永久生效,就必須修改配置檔案my.cnf(其它系統變數也是如此)

更多細節 如何檢視日誌pt-quert-dugest通過這個工具即可檢視了

通過慢查詢日誌定位到了單條查詢的緩慢,那麼進一步的剖析單挑sql語句.

show profile

此命令是在mysql5.1以後的版本中加入的,預設是禁用的,可以檢視sql語句執**況,cpu,io使用情況等.

show variables like 『%profiling%』;檢視是否開啟

set profiling = 1 開啟 0 表示關閉;

profiling是使用者變數,每次都得重新啟用。

測試sql

執行sql : select * from people where phone like 『1355%』;

執行命令 show profiles; 可以看到query_id等於5 查詢耗時 53秒.

執行命令 show profile for query 5;

可以進一步檢視到 具體是哪個環節使用時間比較長.

進一步檢視cpu,io使用情況.

show status

show status是乙個計算器,可以統計某些活動,如 索引的讀取,臨時表,控制代碼等.

通過 flush status,可以清空計算器

執行命令檢視

執行一條sql select * from people2 limit 10000;

在執行上面的檢視計算器語句 可以看到該語句的執**況,做了哪些操作.

檢視mysql查詢優化器如何執行該sql,具體使用檢視另一篇部落格.

《高效能MySQL》筆記 剖析MySQL查詢

慢查詢日誌 mysql慢查詢日誌是一種輕量而且功能全面的效能剖析工具 cpu開銷小 分析慢查詢日誌並生成剖析報告的工具 pt query digest 參考 定位報告中的mysql 找到 query 1 byte 3214 通過位元組偏移值 3214 直接跳轉到日誌的對應部分,命令 tail c 3...

高效能Mysql 伺服器效能剖析

1 如何確認伺服器是否達到了最佳效能狀態 2 找出某條sql語句為什麼不夠快 3 間歇性疑難故障 解決方案就是測量伺服器的時間花費在 使用的技術則是效能剖析 profiling 效能的定義是完成某個任務所花費的時間,資料庫的目的是執行sql語句。什麼是優化?降低cpu利用率?不是,資源是用來消耗並用...

Mysql 伺服器效能剖析

經常遇到的三個效能相關的服務請求是 1 如何確認伺服器是否達到了效能最佳的狀態 2 找出某條語句為什麼執行不夠快 3 診斷被使用者描述成 停頓 堆積 卡死 的某些間歇性疑難故障。效能定義 完成某件任務所需要的時間度量。換句話說,效能即響應時間。完成一項任務所需要的時間分為兩部分 執行時間和等待時間。...