為什么要監控sql語句?如何監控?


01 為什么要監控sql語句?

① 因為程序大了以后,sql語句有可能被多個地方調用 。你不能確認當前時間是不是只執行了你需要的那條語句 。

② 有的持久層框架采用linq的語法來寫sql , 程序中不方便輸出sq語句

③ 線上運行的程序,沒有辦法更改程序。但需要確認問題出錯在哪里?執行了哪些sql語句。可以根據sql 語句來判斷 出錯的地方。

02 如何在mysql中監控sql語句?

默認mysql是不開啟的sql語句監控的,當需要開啟的時候 ,執行以下命令。

SHOWVARIABLESLIKE"general_log%";

-- off 是關閉,如果是on表示已經開啟

SETGLOBALgeneral_log ='ON';

--開啟日志監控。

我是已經開啟的狀態 ,如果沒有開啟的時候 ,general_log 是顯示的off .

如下圖所示 ,會看到日志默認保存的路徑 位置

C:\ProgramData\MySQL\MySQL Server 5.5\Data\hcb-PC.log

 
 

接下來我們執行幾條sql語句來查看

執行sql

SELECT* FROM `platform` UPDATE `platform` SET platform_type=2 WHERE id=1

接下來我們去看下日志

 
 

可以看到日志中包含了

TimeId Command Argument

分別對應時間 ,id, 命令, 參數

參數指的就是執行的sql語句。

03 如何讓mysql中的sql語句顯示在表中?

在日志中查看不方便 ,如果讓sql語句顯示在數據庫中的一個表中?

(1)執行如下sql

SET GLOBAL log_output ='TABLE';

SELECT* FROM mysql.general_log ORDER BY event_time DESC

 
 

(2)用processlist顯示

USE `information_schema`;

SELECT* FROM PROCESSLIST WHERE info IS NOT NULL;

具說這種方式可以實時顯示,但是我的不知道為啥不能實時顯示新的sql 先記錄一下。

 
 



作者:Java老王
鏈接:https://www.jianshu.com/p/ed83bc2ffc6a
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM