mysql--日誌文件

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 設置禁止查詢 

相關文章
相關標籤/搜索