1 選擇常規查詢日誌和慢查詢日誌輸出目標html
1.1 log_output查看、定義mysql
所謂的輸出目標就是日誌寫入到哪裏,mysql中用系統變量 log_output來指定輸出目標,log_output的值有三個:sql
NONE FILE TABLE (其中NONE優先級最高)數據庫
mysql中log_output語法 :服務器
show variables like "log_output" 查看log_output優化
set global log_output='FILE' 設置log_outputspa
若是log_output在日誌啓動的時候沒有指定,則默認日誌記錄目標是FILE,若是log_output在日誌啓動的時候已經指定那麼他的只能夠是 TABLE 或 FILE 或 NONE ,也能夠是他們的組合(多個值之間用,分隔),若是開啓了任何一個日誌,服務器會打開相應的日誌文件並向其寫入啓動消息,可是必須選擇log_output,不然日誌就不會進一步的寫入日誌文件中日誌
–log-output=TABLE,FILE,NONE NONE表示不記錄到文件或者表中。若是NONE出現,則其餘的輸出目標也無效。
–log-output=TABLE,FILE 同時輸出到文件或表中
–log-output 則輸出到默認的文件中code
1.2日誌表的好處和特徵orm
日誌表的好處:
1. 每條日誌具備標準的格式,要顯示日誌表的當前結果,請使用一下語句
SHOW CREATE TABLE mysql.general_log; 常規查詢日誌
SHOW CREATE TABLE mysql.slow_log; 慢查詢日誌
2. 能夠經過語句訪問日誌,能夠很容易獲取知足特定條件的日誌查詢,例如獲取特定時間段或某一個用戶的日誌
3. 日誌的內容能夠經過客戶端遠程鏈接進行查詢。
日誌表的具體實現特徵:
1. 日誌表能夠進行CREATE TABLE, ALTER TABLE,和DROP TABLED操做,可是對於日誌表ALTER TABLE和DROP TABLE不能用,必須禁用,
2. 默認狀況下,日誌表使用CVS存儲引擎將日誌數據寫到逗號分割的數據格式中國,這種格式更容易被導入到其餘程序中進行分析使用
3. 能夠更改日誌表以使用 MyISAM
存儲引擎,但不能在日誌使用的時候用LATER TABLE修改日誌表,必需要先禁止日誌,並且日誌表的存儲引擎只能用CVS或MyISAM, 禁用日誌並修改存儲引擎:
SET @old_log_state = @@GLOBAL.general_log;
SET GLOBAL general_log = 0;
ALTER TABLE mysql.general_log ENGINE = MyISAM;
SET NGLBAL general_log = @old_log_state;
(注:上面示例使用通用查詢日誌; 慢查詢日誌的過程相似)
4 TRUNCATE TABLE
是對日誌表的有效操做。它可用於使日誌條目到期(清空日誌)
5. 能夠經過RENAME_TABLE重命名日誌表的表名(例如,執行日誌輪換) :
DROP TABLE IF EXISTS general_log2;
CREATE TABLE generla_log2 LIKE general_log;
RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
6. CHECK TABLE 是對日誌表有效的操做
檢查InnoDB和MyIsam是否有錯誤。檢查表或者視圖是否存在錯誤,對 MyISAM 和 InnoDB 存儲引擎的表有做用。對於 MyISAM 存儲引擎的表進行表檢查,也會同時更新關鍵字統計數據。語法:
CHECK TABLE tbl_name [, tbl_name] [option]
7. LOCK TABLES 不能再日誌表上使用,同時 INSERT DELETE UPDATE 不能再日誌表上使用,這些操做僅容許在服務器自己內部執行
8 FLUSH TABLES WITH READ LOCK
而且read_only
系統變量的狀態 對日誌表沒有影響。服務器始終能夠寫入日誌表。
9 寫入日誌表的條目不會寫入二進制日誌,所以不會複製到從屬服務器
10 要刷新日誌表或日誌文件,請分別使用 FLUSH TABLES
或 FLUSH LOGS
。
11 不容許對日誌表進行分區。
12 一個mysqldump的轉儲包括報表中從新建立這些表,以便它們不會從新加載轉儲文件後失蹤。不轉儲日誌表內容
2 慢查詢日誌 slow_query_log
慢查詢日誌由long_queyr_time執行時間超過幾秒鐘的SQL語句組成,而且要求至少檢查min_examined_row_limit行。慢速查詢日誌可用於查找執行時間較長的查詢,所以是優化的候選查詢
2.1 慢查詢日誌的參數
slow_query_log = 0|1 禁用|啓用慢查詢日誌, 可在運行時啓用或禁用 日誌
slow_query_log_file 指定慢查詢日誌記錄文件 ,若是這裏沒有指定慢查詢日誌文件默認爲 host_name_slow.log, 同時可在運行是改變日誌文件,若是日誌文件已打開,則會關閉該文件打開新文件
long_query_time 若是查詢花費時間超過此秒數,會將此查詢記錄到慢查詢日誌中 默認10,最小值0 該值能夠指定爲微秒的分辨率:
log-short-format = {OFF|ON} 默認值 OFF 若是已激活,則將較少的信息記錄到慢查詢日誌中
log_slow_admin_statements 啓用此係統變量會在慢查詢日誌中記錄管理語句,其中包括:ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP TABLE, OPTIMIZE TABLE, 和 REPATR TABLE.
log_queries_not_using_indexes ={0|1} 要在寫入慢查詢日誌的語句中包含不使用索引進行行查找的查詢
log_throttle_queries_not_using_indexes
系統變量限制能夠寫入慢查詢日誌的每分鐘此類查詢的數量, 值 0 (默認值) 標識「無限制」。正值會對不使用索引的查詢的日誌記錄市價每分鐘限制。
2.2 服務器判斷是否記錄慢查詢日誌的順序:
1. 查詢必須不是管理語句,若是想記錄管理語句,開啓log_slow_admin_statements
2. 查詢必須花費long_query_time秒鐘,若是想記錄不使用行索引的查詢,開啓log_queries_not_using_indexes
3 查詢必須至少檢查過min_examined_row_limit行
4 不得根據log_throttle_queries_not_using_indexes
設置禁止查詢 。