有些時候orm框架列印出來的sql有些時候並不那麼友好,我們可以通過mysql的通用日誌查詢獲取到mysql伺服器接收到的sql,方便我們的排查.
general log: 開啟 general log 將所有到達mysql server的sql語句記錄下來。
一般不會開啟開功能,因為log的量會非常龐大。但個別情況下可能會臨時的開一會兒general log以供排障使用。
2.1 檢視日誌是否開啟: off/on
2.1 開啟日誌:
set global general_log = 'on';2.2 設定輸出到表:
set global log_output = 'table';2.3 執行系統程式的sql,這裡模擬插入
insert into my_tables (my_name) values ("martin");表結構:
create table `my_tables` (2.4 檢視通用日誌:`id` bigint(20) not null auto_increment,
`my_name` varchar(32) default null,
primary key (`id`)
) engine=innodb auto_increment=2 default charset=utf8mb4;
2.5 我們還看到有很多條,過濾一下
argument 字段 就能得到我們想要的
insert into my_tables (my_name) values ("martin")general_log檔案處理:
當開啟general_log後,mysql中的所有操作將會記錄下來,這樣general_log檔案就會產生很大的檔案,此時需要清空此檔案來釋放磁碟空間
3.1 錯誤操作:
網上有人建議直接刪除該檔案,不重啟系統也會自動生成,但是通過測試,系統不會自動生產該檔案
如果刪除掉,重啟mysql以後,general_log出現異常
3.2 正確的操作:
清空該錶,具體操作如下:
set global general_log = 'off';
rename table mysql.general_log to mysql.general_log2;
delete from mysql.general_log2;
注意:當delete from mysql.general_log2執行刪除表資料時,發現作業系統的資料檔案還是存在的,需要手動刪除該資料檔案,再繼續下面資料操作步驟
optimize table general_log2;
rename table mysql.general_log2 to mysql.general_log;
set global general_log = 'on';
有些時候我們很難獲取到sql或者日誌中列印出來的sql與我們預想中不一致時,可以使用此方法進行排查,但一定要記住使用完畢後將日誌關閉.
日誌的也可以記錄到檔案中,這裡不做額外的補充,感興趣的可以自行檢索.
資料參考:
<
MySQL 通用查詢日誌
mysql中的日誌包括 錯誤日誌 二進位制日誌 通用查詢日誌 慢查詢日誌等等。這裡主要介紹下比較常用的兩個功能 通用查詢日誌和慢查詢日誌。1 通用查詢日誌 記錄建立的客戶端連線和執行的語句。2 慢查詢日誌 記錄所有執行時間超過long query time秒的所有查詢或者不使用索引的查詢 1 通用查...
mysql的通用查詢日誌和慢查詢日誌
檢視通用查詢日誌 show variables like general 檢視通用日誌的輸出格式 show variables like log output 配置檔案設定 為1表示開啟通用日誌查詢,值為0表示關閉通用日誌查詢 general log 1 設定通用日誌的輸出格式為檔案和表 log o...
mysql 通用查詢日誌general log
1 通用查詢日誌 記錄建立的客戶端連線和執行的語句,通用查詢日誌預設情況下不是開啟的,通用查詢日誌是以文字方式存放的 當需要取樣分析的時候手工開啟 set global general log 1 在全域性模式下開啟通用查詢日誌1是開啟,0是關閉 不建議使用在配置檔案裡面修改 mysqld gene...