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

MySQL查看表的歷史SQL的幾種實(shí)現(xiàn)方法

 更新時(shí)間:2025年12月07日 13:46:07   作者:一周一志程序員  
這篇文章主要介紹了多種查看MySQL表歷史SQL的方法,包括通用查詢?nèi)罩?、慢查詢?nèi)罩尽erformance_schema、binlog、第三方工具等,并提供了推薦的最佳實(shí)踐方案,需要的朋友可以參考下

mysql 查看某張表的歷史SQL

五花八門(mén)的工具 以至于現(xiàn)在對(duì)于基礎(chǔ)操作已全然不知。正趕上 公司財(cái)政赤字的緊縮期,沒(méi)有付費(fèi)開(kāi)啟任何可視化操作工具,只能自己開(kāi)挖底層,開(kāi)挖最底層的binlog。

MySQL本身并不直接提供查看某張表歷史SQL的功能,但可以通過(guò)以下幾種方法間接實(shí)現(xiàn):

1.查看MySQL通用查詢?nèi)罩荆ㄐ杼崆伴_(kāi)啟)

-- 查看通用日志是否開(kāi)啟
SHOW VARIABLES LIKE 'general_log%';

-- 如果開(kāi)啟,查看日志文件位置
SHOW VARIABLES LIKE 'general_log_file';

-- 臨時(shí)開(kāi)啟通用日志(生產(chǎn)環(huán)境慎用)
SET GLOBAL general_log = 'ON';

然后可以查詢?nèi)罩疚募?/p>

# Linux下查看包含特定表的SQL
grep -i '表名' /var/lib/mysql/localhost.log

# 或使用mysql命令行
mysql> SELECT * FROM mysql.general_log 
WHERE argument LIKE '%表名%' 
AND event_time > '2024-01-01';

2.查看慢查詢?nèi)罩?/h3>
-- 查看慢查詢?nèi)罩驹O(shè)置
SHOW VARIABLES LIKE 'slow_query_log%';
SHOW VARIABLES LIKE 'long_query_time';

-- 查看慢查詢?nèi)罩疚恢?
SHOW VARIABLES LIKE 'slow_query_log_file';

查看日志文件:

-- 使用mysqldumpslow工具分析
mysqldumpslow -s t -t 10 /path/to/slow.log | grep '表名'

-- 或直接查看
cat /path/to/slow.log | grep '表名'

3.使用performance_schema(MySQL 5.6+)

-- 開(kāi)啟相關(guān)監(jiān)控
UPDATE performance_schema.setup_consumers 
SET ENABLED = 'YES' 
WHERE NAME LIKE '%statement%';

-- 查看歷史語(yǔ)句(包含完整SQL)
SELECT * FROM performance_schema.events_statements_history
WHERE SQL_TEXT LIKE '%表名%'
ORDER BY EVENT_TIME DESC
LIMIT 100;

-- 查看更詳細(xì)的歷史
SELECT * FROM performance_schema.events_statements_history_long
WHERE SQL_TEXT LIKE '%表名%';

4.查看二進(jìn)制日志(Binlog)

-- 查看當(dāng)前binlog文件
SHOW MASTER STATUS;

-- 查看所有binlog文件
SHOW BINARY LOGS;

-- 使用mysqlbinlog工具解析
mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000001 | grep -A5 -B5 '表名'

5.使用第三方工具或方案

A.數(shù)據(jù)庫(kù)審計(jì)插件

-- 如使用MariaDB審計(jì)插件
INSTALL PLUGIN server_audit SONAME 'server_audit.so';
SET GLOBAL server_audit_events = 'QUERY';

B.應(yīng)用層記錄

在應(yīng)用程序中記錄所有執(zhí)行的SQL:

// Spring Boot示例:使用AOP記錄SQL
@Aspect
@Component
public class SqlLogAspect {
    @Before("execution(* com.example.mapper.*.*(..))")
    public void logSql(JoinPoint joinPoint) {
        // 獲取執(zhí)行的SQL并記錄到日志文件
    }
}

6.推薦的最佳實(shí)踐

方案一:實(shí)時(shí)監(jiān)控設(shè)置

-- 1. 開(kāi)啟performance_schema
[mysqld]
performance_schema = ON
performance-schema-consumer-events-statements-history-long = ON

-- 2. 創(chuàng)建定期清理任務(wù)
CREATE EVENT cleanup_sql_history
ON SCHEDULE EVERY 1 DAY
DO
DELETE FROM performance_schema.events_statements_history_long
WHERE EVENT_TIME < NOW() - INTERVAL 7 DAY;

方案二:使用ProxySQL或MaxScale中間件

這些中間件可以記錄所有經(jīng)過(guò)的SQL語(yǔ)句。

方案三:云數(shù)據(jù)庫(kù)的解決方案

  • AWS RDS/Aurora:使用Performance Insights和Enhanced Monitoring
  • 阿里云RDS:使用SQL審計(jì)功能
  • 騰訊云CDB:使用數(shù)據(jù)庫(kù)審計(jì)服務(wù)

注意事項(xiàng):

  1. 性能影響:開(kāi)啟完整SQL日志會(huì)對(duì)性能有影響
  2. 存儲(chǔ)空間:需要足夠的磁盤(pán)空間存儲(chǔ)日志
  3. 安全性:日志中可能包含敏感信息,需做好保護(hù)
  4. 時(shí)效性:大部分歷史記錄都有保留時(shí)間限制

快速檢查當(dāng)前執(zhí)行的SQL:

-- 查看當(dāng)前正在執(zhí)行的SQL
SHOW PROCESSLIST;

-- 查看更詳細(xì)的信息
SELECT * FROM information_schema.PROCESSLIST 
WHERE INFO LIKE '%表名%';

-- 使用performance_schema查看
SELECT * FROM performance_schema.threads 
WHERE PROCESSLIST_INFO LIKE '%表名%';

選擇哪種方法取決于你的具體需求、MySQL版本以及是否愿意接受性能開(kāi)銷(xiāo)。對(duì)于生產(chǎn)環(huán)境,建議使用performance_schema或?qū)iT(mén)的審計(jì)工具。

以上就是MySQL查看表的歷史SQL的幾種實(shí)現(xiàn)方法的詳細(xì)內(nèi)容,更多關(guān)于MySQL查看表的歷史SQL的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MAC下修改mysql默認(rèn)字符集為utf8的方法

    MAC下修改mysql默認(rèn)字符集為utf8的方法

    本文主要介紹了如何修改MAC版mysql默認(rèn)字符集為utf8,如果你的MAC版mysql字符亂碼,可以參考一下這篇文章
    2018-03-03
  • 可以改善mysql性能的InnoDB配置參數(shù)

    可以改善mysql性能的InnoDB配置參數(shù)

    MySQL與MSSQL 有一個(gè)區(qū)別在于MySQL建表的時(shí)候需要選擇存儲(chǔ)引擎,常用的存儲(chǔ)引擎有MyISAM和InnoDB
    2011-05-05
  • MySQL存儲(chǔ)過(guò)程的深入講解(in、out、inout)

    MySQL存儲(chǔ)過(guò)程的深入講解(in、out、inout)

    這篇文章主要給大家介紹了關(guān)于MySQL存儲(chǔ)過(guò)程(in、out、inout)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MySQL數(shù)據(jù)庫(kù)必備之條件查詢語(yǔ)句

    MySQL數(shù)據(jù)庫(kù)必備之條件查詢語(yǔ)句

    當(dāng)用戶查看表格的大量數(shù)據(jù)是,由于數(shù)據(jù)量過(guò)于巨大會(huì)導(dǎo)致很難獲取到需要的數(shù)據(jù),在這時(shí),就需要一個(gè)方法,一個(gè)可以通過(guò)用戶輸入獲取到用戶需要的數(shù)據(jù)并回填入表格,這就是條件查詢的作用
    2021-10-10
  • MySQL中使用innobackupex、xtrabackup進(jìn)行大數(shù)據(jù)的備份和還原教程

    MySQL中使用innobackupex、xtrabackup進(jìn)行大數(shù)據(jù)的備份和還原教程

    這篇文章主要介紹了MySQL中使用innobackupex、xtrabackup進(jìn)行大數(shù)據(jù)的備份和還原教程,xtrabackup用來(lái)對(duì)超過(guò)10G數(shù)據(jù)的Mysql進(jìn)行備份和還原任務(wù),需要的朋友可以參考下
    2014-09-09
  • MySQL基本查詢示例總結(jié)

    MySQL基本查詢示例總結(jié)

    這篇文章主要介紹了MySQL基本查詢示例總結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-05-05
  • MySQL replace into 語(yǔ)句淺析(二)

    MySQL replace into 語(yǔ)句淺析(二)

    這篇文章主要介紹了MySQL replace into 語(yǔ)句淺析(二),本文著重給出了幾個(gè)特殊案例分析,需要的朋友可以參考下
    2015-05-05
  • MySQL多表查詢示例詳解

    MySQL多表查詢示例詳解

    本文系統(tǒng)講解了MySQL多表查詢的核心概念與分類(lèi),涵蓋內(nèi)連接、外連接(左/右)、自連接、聯(lián)合查詢及子查詢(標(biāo)量/列/行/表)等類(lèi)型,重點(diǎn)介紹了各查詢方式的語(yǔ)法、應(yīng)用場(chǎng)景及注意事項(xiàng),適用于關(guān)系型數(shù)據(jù)庫(kù)中數(shù)據(jù)關(guān)聯(lián)與整合的開(kāi)發(fā)實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • Mysql如何查看表及字段信息

    Mysql如何查看表及字段信息

    這篇文章主要介紹了Mysql如何查看表及字段信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • MySQL刪除表的三種方式(小結(jié))

    MySQL刪除表的三種方式(小結(jié))

    這篇文章主要介紹了MySQL刪除表的三種方式(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論

东丰县| 嘉黎县| 汶川县| 盈江县| 中山市| 扶绥县| 昂仁县| 延川县| 江津市| 孝感市| 驻马店市| 嘉义市| 伽师县| 县级市| 黄陵县| 通海县| 安吉县| 本溪| 田林县| 始兴县| 张家界市| 日土县| 丹江口市| 安溪县| 天津市| 彭山县| 金秀| 蒲江县| 吴桥县| 福泉市| 繁昌县| 曲麻莱县| 碌曲县| 松潘县| 礼泉县| 喀喇沁旗| SHOW| 闽清县| 新乐市| 丰顺县| 绥芬河市|