成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

數據庫MySQL一般查詢日志或者慢查詢日志歷史數據的清理

數據庫 MySQL
對于MySQL的一般查詢日志和慢查詢日志,開啟比較簡單,其中公用的一個參數是log_output,log_output控制著慢查詢和一般查詢日志的輸出方向。

 general log&slow query log

對于MySQL的一般查詢日志和慢查詢日志,開啟比較簡單,其中公用的一個參數是log_output,log_output控制著慢查詢和一般查詢日志的輸出方向可以是表(mysql.general_log,mysql.slow_log)或者文件(有參數general_log_file和slow_query_log_file配置決定)或者同時輸出到表和文件(想不明白,什么時候需要同時輸出到表和文件)。

但是兩者受log_output參數影響,輸出的目標總是一致的,也就是要么都寫入表,或者要么都寫入文件,不會一個輸出到表,一個輸出到文件。   

  1. --slow log 相關參數  
  2.    select *   
  3.    from performance_schema.global_variables   
  4.    where variable_name in  
  5.    ('slow_query_log','log_output','slow_query_log_file','long_query_time')    
  6.    --general log 相關參數  
  7.    select *   
  8.    from performance_schema.global_variables   
  9.    where variable_name in  
  10.    ('general_log','log_output','general_log_file') 

對于上述兩種日志,系統默認不會清理,因此在開啟了相關日志之后,需要人為清理。

如何清理歷史general log&slow query log

1,當輸出目標為表的時候

無法直接刪除,如果直接刪除的話,會出現“ERROR 1556 (HY000): You can’t use locks with log tables.”的錯誤提示

以general log為例,需要先關閉general_log,然后重命名general_log這個表,

在對重命名之后的表執行刪除,最后在重命名回來,最后開啟general_log(如果有必要的話) 

  1. SET GLOBAL general_log = 'OFF' 
  2.   RENAME TABLE general_log TO general_log_temp;  
  3.   DELETE FROM general_log_temp WHERE event_time < DATE(NOW());  
  4.   RENAME TABLE general_log_temp TO general_log;  
  5.   SET GLOBAL general_log = 'ON';   
  6.   --slow log 同理  
  7.   SET GLOBAL slow_query_log = 'OFF' 
  8.   RENAME TABLE slow_log TO slow_log_temp;  
  9.   DELETE FROM slow_log_temp WHERE start_time < DATE(NOW());  
  10.   RENAME TABLE slow_log_temp TO slow_log;  
  11.   SET GLOBAL slow_query_log = 'ON'

如果對重命名之后的表(general_log或者是slow_log)沒有再次重命名回來,會發生什么?

參加如下截圖,如果沒有找到對應的表(general_log或者是slow_log),在輸出目標為表的情況下,會提示無法找到對應的表,將無法開啟對應的日志

2,當輸出目標為文件的時候

當輸出目標為文件的時候,在linux下,直接使用rm命名刪除即可,如果在開啟了一般查詢日志或者是慢查詢日志,刪除對應的日志文件,并不影響數據庫的正常使用。網上有說需要停止MySQL服務然后重命名文件然后在創建新的文件啥的,在Linux下并不是必須的,不知道在windows下是什么情況,沒興趣試。

當然也不是說就建議始終這種暴力的方式清理日志文件,在Linux下,刪除了默認的日志文件(或者重命名了原日志文件),要想再次生成日志文件

  •     可以使用mysqladmin flush-logs
  •     是SQL命令flush slow logs;flush general logs;
  •     重啟MySQL服務

均可重新生成對應的日志文件。

注意:當對應的文件是存在的時候,上述命名執行之后是沒有影響的(也不會清理對應的日志文件)

以下偏離主題

當輸出目標為表的時候的解析

不管是general_log或者是slow_log,對應的SQL語句都是二進制格式的,需要使用convert(sql_text using UTF8)做一個轉換,才變得具有可讀性。

當輸出目標為表的時候對性能的影響

據個人測試,在請求量不大的數據庫上,開啟general_log或者是slow_log,對性能影響并沒有非常明顯。理論家們一方面強調說MySQL的處理并發上多強悍,一方面又說開啟general_log對性能影響很大,會不會自相矛盾呢?關于general_log,在zabbix監控下,測試環境TPS不過百的情況下(每秒寫入general log不超過100條數據),開啟general_log之后并CPU負載幾乎沒有變化,CPU高點是在做其他壓力測試。尤其是slow_log這種寫入不是太頻繁的日志,直接寫入到表中,對性能的影響有限,比后面再去花時間解析文件……  

當然不排除TPS在上千或者上萬甚至更高之后,開啟general_log會產生較大的影響,當然沒事也不會閑的蛋疼去開general_log。

 

責任編輯:龐桂玉 來源: MSSQL123
相關推薦

2017-04-01 19:00:25

MySQL慢查詢

2018-10-12 16:45:10

MySQL查詢日志數據庫

2019-09-16 08:28:17

Mysql數據庫binlog

2010-11-25 16:29:26

MySQL慢日志查詢

2010-07-15 11:36:21

SQL Server歷

2017-09-18 15:20:02

MySQL慢查詢日志配置

2021-08-19 09:16:29

MySQL數據庫優化器

2021-08-16 08:42:31

MySQL查詢數據庫

2022-05-17 08:24:58

查詢日志MySQL

2018-06-14 20:30:55

數據庫SQL Server日志清理

2013-01-04 10:00:12

MySQL數據庫數據庫查詢優化

2011-03-28 09:27:52

數據庫壓縮日志

2023-09-01 15:34:34

數據庫開發

2019-01-02 09:30:59

MySQL數據庫日志審計

2011-07-11 14:36:10

BinlogMysql

2011-04-02 09:23:19

MySQL數據庫查詢效率

2022-12-26 00:48:38

2011-08-10 11:07:34

MySQL查詢緩沖

2020-06-19 16:25:19

MySQL日志文件數據庫

2019-07-11 08:45:00

MySQL數據庫緩存
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区国产 | 久久久久久一区 | 99re超碰| 蜜桃臀av一区二区三区 | 中文在线а√在线8 | 99爱国产 | 中文字幕乱码亚洲精品一区 | 久久激情视频 | 天天干天天玩天天操 | 精品久久久久久一区二区 | 亚洲一区欧美一区 | 精品在线观看一区 | 在线国产一区 | 免费视频二区 | 精品欧美乱码久久久久久 | 国产精品夜色一区二区三区 | 亚洲自拍一区在线观看 | 日本一区视频在线观看 | 久久高清 | 日韩精品一区二 | 伊人伊成久久人综合网站 | 成人免费精品 | 久久久久久久一区二区三区 | 久久久久久艹 | 精品国产一区二区三区久久狼黑人 | 国产精品美女久久久久久免费 | 成人欧美一区二区三区黑人孕妇 | 看av片网站 | 中文字幕日韩欧美一区二区三区 | 国产高清免费 | 色综网| 怡红院免费的全部视频 | 在线一区二区三区 | 伦理片97 | 伊人精品视频 | 欧美日韩中文字幕在线 | 欧美性吧| 日韩精品在线播放 | 天天视频一区二区三区 | 亚洲激情一级片 | 欧美一级观看 |