最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL分析執(zhí)行次數最多的SQL的六種方法

 更新時間:2025年10月23日 08:57:46   作者:學亮編程手記  
這篇文章介紹了MySQL中分析執(zhí)行次數最多的SQL的六種方法:使用慢查詢日志、PerformanceSchema、SysSchema、通用日志(不推薦)、INFORMATION_SCHEMA.PROCESSLIST,以及pt-query-digest工具,文章建議根據具體需求組合使用這些方法,需要的朋友可以參考下

在MySQL中分析執(zhí)行次數最多的SQL,主要有以下幾種方法:

1. 使用MySQL慢查詢日志

開啟慢查詢日志

-- 查看慢查詢配置
SHOW VARIABLES LIKE 'slow_query_log%';
SHOW VARIABLES LIKE 'long_query_time';

-- 開啟慢查詢日志(需在my.cnf中配置持久化)
SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 1;  -- 設置慢查詢閾值(秒)
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';

使用mysqldumpslow分析

# 分析執(zhí)行次數最多的慢查詢
mysqldumpslow -s c -t 10 /var/log/mysql/slow.log

# 按執(zhí)行時間排序
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log

2. 使用Performance Schema

開啟Performance Schema

-- 檢查是否開啟
SHOW VARIABLES LIKE 'performance_schema';

-- 開啟events_statements_history(如果未開啟)
UPDATE performance_schema.setup_consumers 
SET ENABLED = 'YES' 
WHERE NAME LIKE 'events_statements_history%';

查詢執(zhí)行次數最多的SQL

SELECT 
    DIGEST_TEXT AS query,
    COUNT_STAR AS exec_count,
    AVG_TIMER_WAIT/1000000000000 AS avg_exec_time_sec,
    SUM_ROWS_EXAMINED AS rows_examined_sum,
    SUM_ROWS_SENT AS rows_sent_sum
FROM performance_schema.events_statements_summary_by_digest
WHERE DIGEST_TEXT IS NOT NULL
ORDER BY COUNT_STAR DESC
LIMIT 10;

3. 使用Sys Schema(MySQL 5.7+)

-- 查看執(zhí)行次數最多的語句
SELECT * FROM sys.statements_with_full_table_scans 
ORDER BY exec_count DESC 
LIMIT 10;

-- 查看總執(zhí)行次數最多的語句
SELECT * FROM sys.statement_analysis 
ORDER BY exec_count DESC 
LIMIT 10;

-- 查看執(zhí)行次數多的標準化SQL
SELECT 
    query,
    db,
    exec_count,
    total_latency,
    avg_latency,
    rows_sent_avg,
    rows_examined_avg
FROM sys.x$statements_with_runtimes_in_95th_percentile
ORDER BY exec_count DESC
LIMIT 10;

4. 使用通用日志(不推薦生產環(huán)境)

-- 開啟通用查詢日志
SET GLOBAL general_log = 1;
SET GLOBAL general_log_file = '/var/log/mysql/general.log';

-- 分析日志(示例使用awk)
awk '
{
    if ($0 ~ /Query/) {
        # 提取SQL語句(簡化版)
        query = substr($0, index($0, "Query:") + 7)
        queries[query]++
    }
}
END {
    for (q in queries) {
        print queries[q] " " q
    }
}' /var/log/mysql/general.log | sort -nr | head -10

5. 使用INFORMATION_SCHEMA.PROCESSLIST(實時監(jiān)控)

-- 查看當前執(zhí)行的SQL
SELECT 
    INFO AS query,
    COUNT(*) AS concurrent_count
FROM INFORMATION_SCHEMA.PROCESSLIST 
WHERE COMMAND = 'Query' 
AND INFO IS NOT NULL
GROUP BY INFO
ORDER BY concurrent_count DESC
LIMIT 10;

6. 使用pt-query-digest工具

# 分析慢查詢日志
pt-query-digest /var/log/mysql/slow.log

# 分析tcpdump抓取的流量
tcpdump -i any -s 65535 -x -nn -q -tttt port 3306 > mysql.tcp.txt
pt-query-digest --type tcpdump mysql.tcp.txt

# 分析general log
pt-query-digest --type genlog /var/log/mysql/general.log

推薦的生產環(huán)境方案

對于生產環(huán)境,建議組合使用:

  1. 長期監(jiān)控:Performance Schema + Sys Schema
  2. 性能分析:慢查詢日志 + pt-query-digest
  3. 實時監(jiān)控:INFORMATION_SCHEMA.PROCESSLIST

完整的Performance Schema監(jiān)控示例

-- 開啟必要的監(jiān)控項
UPDATE performance_schema.setup_instruments 
SET ENABLED = 'YES', TIMED = 'YES' 
WHERE NAME LIKE 'statement/%';

UPDATE performance_schema.setup_consumers 
SET ENABLED = 'YES' 
WHERE NAME LIKE '%statements%';

-- 定期查詢TOP SQL(可做成定時任務)
SELECT 
    SCHEMA_NAME as db,
    DIGEST_TEXT as query,
    COUNT_STAR as exec_count,
    ROUND(SUM_TIMER_WAIT/1000000000000, 2) as total_time_sec,
    ROUND(AVG_TIMER_WAIT/1000000000000, 4) as avg_time_sec,
    SUM_ROWS_EXAMINED as rows_examined,
    SUM_ROWS_SENT as rows_sent,
    FIRST_SEEN as first_seen,
    LAST_SEEN as last_seen
FROM performance_schema.events_statements_summary_by_digest
WHERE DIGEST_TEXT IS NOT NULL
AND COUNT_STAR > 0
ORDER BY COUNT_STAR DESC
LIMIT 20;

選擇哪種方法取決于你的具體需求:實時監(jiān)控用Performance Schema,深度分析用慢查詢日志,快速排查用Sys Schema。

以上就是MySQL分析執(zhí)行次數最多的SQL的六種方法的詳細內容,更多關于MySQL執(zhí)行次數最多的SQL的資料請關注腳本之家其它相關文章!

相關文章

  • MySQL復制與主從架構(Master-Slave)詳細介紹

    MySQL復制與主從架構(Master-Slave)詳細介紹

    數據庫的主從架構是通過將數據從一個主庫復制到一個或多個從庫來實現,該架構的核心是數據同步,主要用于數據的容災備份,讀寫分離,數據分析場景中,這篇文章主要介紹了MySQL復制與主從架構(Master-Slave)的相關資料,需要的朋友可以參考下
    2026-04-04
  • 一文詳解MySQL主從同步原理

    一文詳解MySQL主從同步原理

    這篇文章主要介紹了一文詳解MySQL主從同步原理,MySQL主從同步是基于Bin?Log實現的,而Bin?Log記錄的是原始SQL語句,更多相關內容介紹感興趣的小伙伴可以參考一下
    2022-08-08
  • Express連接MySQL及數據庫連接池技術實例

    Express連接MySQL及數據庫連接池技術實例

    數據庫連接池是程序啟動時建立足夠數量的數據庫連接對象,并將這些連接對象組成一個池,由程序動態(tài)地對池中的連接對象進行申請、使用和釋放,本文重點給大家介紹Express連接MySQL及數據庫連接池技術,感興趣的朋友一起看看吧
    2022-02-02
  • MySQL各種 JOIN 的特點及應用場景分析

    MySQL各種 JOIN 的特點及應用場景分析

    MySQL中的JOIN操作用于將多個表中的數據關聯(lián)起來,常見的JOIN 類型包括INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN(MySQL 不直接支持 FULL JOIN,但可通過 UNION 實現),本文介紹MySQL各種 JOIN 的特點及應用場景,感興趣的朋友一起看看吧
    2025-12-12
  • MySql獲取當前時間并轉換成字符串的實現

    MySql獲取當前時間并轉換成字符串的實現

    本文主要介紹了MySql獲取當前時間并轉換成字符串的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • MySQL8.0無法啟動3534的解決方法

    MySQL8.0無法啟動3534的解決方法

    本文主要是記錄一下自己使用MySQL的一次踩坑經歷,我的MySQL安裝好后,使用一周后的同一時間必定報連接失敗,然后查找發(fā)現是MySQL本地服務沒有啟動,下面就詳細的介紹一下
    2021-06-06
  • MySQL 編碼機制

    MySQL 編碼機制

    一般在MYSQL使用中文查詢 都是用 set NAMES character
    2008-12-12
  • MySQL事務的四大特性以及并發(fā)事務問題解讀

    MySQL事務的四大特性以及并發(fā)事務問題解讀

    這篇文章主要介紹了MySQL事務的四大特性以及并發(fā)事務問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MySQL千萬級大數據SQL查詢優(yōu)化知識點總結

    MySQL千萬級大數據SQL查詢優(yōu)化知識點總結

    在本篇文章里小編給大家整理的是一篇關于MySQL千萬級大數據SQL查詢優(yōu)化知識點總結內容,有需要的朋友們可以學習參考下。
    2019-12-12
  • mysql myisam 優(yōu)化設置設置

    mysql myisam 優(yōu)化設置設置

    mysql myisam 優(yōu)化設置設置,需要的朋友可以參考下。
    2010-03-03

最新評論

鲁山县| 铅山县| 上林县| 新昌县| 玛多县| 德州市| 荥经县| 中山市| 富宁县| 贡山| 桦甸市| 兰溪市| 汝州市| 措美县| 西吉县| 阿合奇县| 舟山市| 顺义区| 永福县| 章丘市| 富宁县| 婺源县| 惠东县| 克东县| 高安市| 磐安县| 文登市| 琼海市| 德阳市| 九龙城区| 宁海县| 沙雅县| 新郑市| 大新县| 博白县| 正阳县| 遵义市| 京山县| 辉南县| 阜平县| 兴义市|