首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 下 mysqlsla 安裝與慢查詢分析實戰指南

     編輯:MySQL 綜合教學

mysqlsla(MySQL Statement Log Analyzer)是 Perl 編寫的強大慢查詢日誌分析工具,能產生多維度統計報表,快速定位效能瓶頸。本文詳細記錄 Linux 環境安裝依賴、部署步驟、核心參數解讀與實戰分析流程。

安裝部署步驟

1. 下載與解壓


wget https://github.com/daniel-nichter/mysqlsla/archive/refs/tags/v2.03.tar.gz
tar zxvf mysqlsla-2.03.tar.gz

2. 安裝 Perl 依賴(關鍵步驟)


# CentOS/RHEL
yum install perl-DBI perl-DBD-MySQL -y

# Ubuntu/Debian
apt-get install libdbi-perl libdbd-mysql-perl -y

# CPAN 通用安裝
cpan DBI DBD::mysql

若報錯 Can't locate DBI.pm,執行上述依賴安裝即可解決。

3. 部署可執行檔


cp mysqlsla-2.03/bin/mysqlsla /usr/local/bin/
chmod +x /usr/local/bin/mysqlsla

4. 驗證安裝


mysqlsla --version
# 輸出:mysqlsla 2.03 ...

核心使用語法


# 基本分析慢查詢日誌
mysqlsla -lt slow slow.log

# 指定排序維度(預設按總時間排序)
mysqlsla -lt slow --sort t_sum slow.log

# 只分析特定資料庫
mysqlsla -lt slow --db mydb slow.log

# 輸出格式:報表、CSV、JSON
mysqlsla -lt slow --report-format html slow.log > report.html

報表核心指標深度解讀

指標區塊關鍵欄位業務含義
總覽 Queries Total / Unique 總慢查詢數 / 去重後唯一 SQL 模板數
Sorted By 報表排序依據(t_sum, t_avg, cnt 等)
執行統計 Count 執行次數及佔比
Time (Total/Avg/Min/Max/%Total) 總/平均/最小/最大執行時間,佔總慢查詢時間比
95% of Time 去除極值後覆蓋 95% 查詢的時間分布(抗干擾)
Lock Time (Total/Avg/95%) 鎖等待時間統計,定位鎖爭用熱點
Rows Sent / Examined 返回行數 vs 掃描行數,Examined/Sent 比值越大越需優化
上下文 Database / Users 所屬資料庫、執行用戶與 IP、佔比
Query Abstract 抽象化 SQL 模板(參數化後)
Query Sample 具體執行樣本 SQL(含實際參數)

實戰分析流程

步驟 1:獲取慢查詢日誌


# 確認慢查詢開啟
SHOW VARIABLES LIKE 'slow_query_log%';
SHOW VARIABLES LIKE 'long_query_time';

# 臨時開啟(無需重啟)
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;  -- 記錄超過 1 秒的查詢
SET GLOBAL log_queries_not_using_indexes = ON;  -- 記錄未用索引查詢

步驟 2:執行分析並聚焦 Top N


# 產生 HTML 報告,按總時間排序
mysqlsla -lt slow --sort t_sum --report-format html /var/log/mysql/slow.log > /tmp/slow_report.html

# 或直接終端查看 Top 10
mysqlsla -lt slow --sort t_sum --top 10 /var/log/mysql/slow.log

步驟 3:定位核心問題類型

指標特徵可能原因優化方向
Rows Examined ≫ Rows Sent 全表掃描、索引失效、範圍過大 建立/優化索引、改寫 WHERE、分區裁剪
Lock Time 佔比高 鎖爭用、長事務、隔離級別問題 縮短事務、行鎖優化、避免間隙鎖
Count 極高但 Avg Time 低 高頻小查詢、N+1 問題 批次查詢、快取、合併請求
95% Time ≪ Max Time 極少數極慢查詢干擾整體視圖 關注 95% 指標,排除極值干擾

步驟 4:深入單一 SQL 模板


# 針對特定抽象 SQL 深度分析
mysqlsla -lt slow --grep "SELECT \* FROM orders WHERE" /var/log/mysql/slow.log

結合 EXPLAIN、SHOW CREATE TABLE、SHOW INDEX 進行具體優化。

進階替代工具

  • pt-query-digest (Percona Toolkit):功能更豐富、支援多種日誌源、活躍維護中
  • MySQL Workbench:圖形化日誌分析與視覺化
  • Slow Query Log Analyzer (GitHub):Web 介面、支援實時流式分析

mysqlsla 雖經典但更新緩慢,建議新項目優先採用 pt-query-digest。核心分析思維通用:聚焦高總耗時、高掃描行數、高鎖等待 三大維度,快速定位 ROI 最高的優化目標。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved