MYSQL診斷分析低效SQL方法

MYSQL診斷分析低效SQL方法

 性能診斷分析是一種利用工具手段,通過採用實際監測,而不是“自我猜測 ”來幫助項目組進行診斷。

可以通過以下方式定位執行效率較低的 SQL 語句:

  1. MYSQL慢日誌分析
    MYSQL可以通過慢查詢日誌定位那些執行效率較低的 sql 語句,用 --log-slow-queries[=file_name] 選項啓動時, mysqld 寫一個包含抓取所有執行時間超過long_query_time設定秒數的 SQL 語句的日誌文件。
    慢日誌配置,linux 一般在my.cnf,如果是wind服務一般在my.ini,
    MYSQL診斷分析低效SQL方法
  2. 時時查看線程狀態
    有時開啓慢日誌監控有時會影響MYSQL自身性能,可以 使用 show processlist查看當前MYSQL的線程, 因爲命令慢查詢日誌在查詢結束以後才紀錄,所以在應用業務層上反映執行效率出現問題的時候,再查慢查詢日誌並不能精準的定位問題,可以使用 show processlist 命令查看當前 MySQL 在進行的線程,包括線程的狀態,是否鎖表等等,可以實時的查看 SQL 執行情況, 同時對一些鎖表操作進行優化。
    MYSQL診斷分析低效SQL方法
  3. EXPLAIN分析
    通過EXPLAIN 分析低效 SQL的執行計劃:
    該EXPLAIN語句提供有關MySQL如何執行語句的信息。 EXPLAIN作用有 SELECT, DELETE, INSERT, REPLACE,和 UPDATE語句。EXPLAIN會返回SELECT語句中使用的每個表的行信息 。它按照MySQL在處理語句時讀取它們的順序列出輸出中的表。如果MySQL使用嵌套循環連接方法解析所有連接。這意味着MySQL從第一個表中讀取一行,然後在第二個表,第三個表中找到匹配的行,依此類推。處理完所有表後,MySQL會通過表列表輸出所選列和回溯,直到找到有更多匹配行的表。從該表中讀取下一行,並繼續下一個表。
    EXPLAIN輸出列如下:
    MYSQL診斷分析低效SQL方法
    如果發現語法問題,例如全表掃描等可以通過建立索引等優化處理,例如https://blog.51cto.com/372550/2325251,索引優化 中介紹。

一旦確定了性能瓶頸的根本原因,請採取適當的糾正措施,例如:

1、調整服務器參數(緩存大小,內存等)。

2、通過不同的方式調整查詢

3、調整數據庫模式(表,索引等)。

4、調整代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章