【Mysql技術內幕】第3章 文件

第3章 文件

3.1 參數文件

    mysql 數據庫的參數文件是以文本的形式進行存儲的,能夠用vim進行修改 my.ini my.conf等mysql

3.1.1 什麼是參數

    SHOW VARIABLES 能夠查看mysql 配置參數sql

3.1.2 參數類型

  • 動態參數 當前會話有效
  • 靜態參數 readonly

3.2 日誌文件

  • 錯誤日誌(error log)
  • 二進制日誌(bin log)
  • 慢查詢日誌(slow query log)
  • 查詢日誌(log)

3.2.1 錯誤日誌

    SHOW VARIABLES LIKE 'log_error'\G;數據庫

3.2.2 慢查詢日誌

    SHOW VARIABLES LIKE 'long_query_time'\G;vim

    MySQL 慢查詢的相關參數解釋:slow_query_log :是否開啓慢查詢日誌,1表示開啓,0表示關閉。 async

slow_query_log    :是否開啓慢查詢日誌,1表示開啓,0表示關閉。
log-slow-queries  :舊版(5.6如下版本)MySQL數據庫慢查詢日誌存儲路徑。能夠不設置該參數,系統則會默認給一個缺省的文件host_name-slow.log
slow-query-log-file:新版(5.6及以上版本)MySQL數據庫慢查詢日誌存儲路徑。能夠不設置該參數,系統則會默認給一個缺省的文件host_name-slow.log
long_query_time :慢查詢閾值,當查詢時間多於設定的閾值時,記錄日誌。
log_queries_not_using_indexes:未使用索引的查詢也被記錄到慢查詢日誌中(可選項)。
log_output:日誌存儲方式。log_output='FILE'表示將日誌存入文件,默認值是'FILE'。log_output='TABLE'表示將日誌存入數據庫,這樣日誌信息就會被寫入到mysql.slow_log表中。MySQL數據<br>庫支持同時兩種日誌存儲方式,配置的時候以逗號隔開便可,如:log_output='FILE,TABLE'。日誌記錄到系統的專用日誌表中,要比記錄到文件耗費更多的系統資源,所以對於須要啓用慢查詢日誌,又需<br>要可以得到更高的系統性能,那麼建議優先記錄到文件。

慢查詢日誌配置性能

默認狀況下slow_query_log的值爲OFF,表示慢查詢日誌是禁用的,能夠經過設置slow_query_log的值來開啓,以下所示:spa

mysql> show variables like '%slow_query_log%';
+---------------------+------------------------------------------+
| Variable_name       | Value                                    |
+---------------------+------------------------------------------+
| slow_query_log      | OFF                                      |
| slow_query_log_file | /usr/local/mysql/data/localhost-slow.log |
+---------------------+------------------------------------------+
2 rows in set (0.00 sec)
 
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show variables like '%slow_query_log%';
+---------------------+------------------------------------------+
| Variable_name       | Value                                    |
+---------------------+------------------------------------------+
| slow_query_log      | ON                                       |
| slow_query_log_file | /usr/local/mysql/data/localhost-slow.log |
+---------------------+------------------------------------------+
2 rows in set (0.00 sec)
#使用set global slow_query_log=1開啓了慢查詢日誌只對當前數據庫生效,MySQL重啓後則會失效。若是要永久生效,就必須修改配置文件my.cnf(其它系統變量也是如此)
-s, 是表示按照何種方式排序
    c: 訪問計數
 
    l: 鎖定時間
 
    r: 返回記錄
 
    t: 查詢時間
 
    al:平均鎖定時間
 
    ar:平均返回記錄數
 
    at:平均查詢時間
 
-t, 是top n的意思,即爲返回前面多少條的數據;
-g, 後邊能夠寫一個正則匹配模式,大小寫不敏感的;
 
好比:
獲得返回記錄集最多的10個SQL。
mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log
 
獲得訪問次數最多的10個SQL
mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log
 
獲得按照時間排序的前10條裏面含有左鏈接的查詢語句。
mysqldumpslow -s t -t 10 -g 「left join」 /database/mysql/mysql06_slow.log
 
另外建議在使用這些命令時結合 | 和more 使用 ,不然有可能出現刷屏的狀況。
mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more

3.2.3 查詢日誌

默認文件名: 主機名.log線程

3.2.4 二進制日誌

    二進制日誌 記錄了對Mysql數據庫執行更改的全部操做,可是不包括SELECT 和 SHOW ;設計

    格式:3d

  • STATMENT
  • ROW
  • MIXED

    二進制日誌的做用

  • 恢復 能夠用binlog 實現point-in-time 恢復
  • 複製 主庫從庫之間進行實時同步
  • 審計 做爲審計日誌 查看是否被注入攻擊

3.3 套接字文件

     本地鏈接mysql 可使用unix域套接字文件 通常在/tmp/mysql.sock


3.4 pid文件

    進程號文件

3.5 表結構定義文件

    frm 文件 描述表結構的定義

3.6 InnoDB 存儲引擎文件

3.6.1 表空間文件

    innodb 採用表空間設計(tablespace) 在默認配置下 又一個初始大小爲10MB的 ibdata1的文件 能夠指定多個文件組成一個表空間。

多個磁盤的文件組成表空間 能夠分擔負載。全部基於innodb引擎的表數據 都會記錄到共享空間中。若是開啓了innodb_file_per_table 會層層一個獨立的表空間,表名.ibd

獨立的表空間裏面只存儲該表的數據、索引、插入緩衝、BITMAP等信息,其餘信息存放在共享表空間中。

3.6.2 重作日誌

    在默認狀況下,innodb存儲引擎目錄下 有ib_logfile0 和 ib_logfile1的文件,這就是重作日誌。每一個innodb引擎 至少有一組重作日誌,其中有兩個重作日誌文件,能夠放在不一樣的磁盤上 保證高可用,每一個重作日誌文件大小一致,並採用循環寫入的方式,先寫日誌文件1,達到文件末尾的時候,切換到日誌文件2,若是日誌文件2也被寫滿,再切回到日誌文件1

    重作日誌的大小很是重要,不能設置的太大,設設置的太大,恢復須要很長的時間,過小也不行,過小了致使一個事務日誌來回切換文件,而且頻繁發生async checkpoint,致使性能抖動。重作日誌裏面有一個capacity變量,最後檢查點不能超過這個閥值,不然必須把緩衝池裏面的髒頁列表寫回到磁盤裏面,這個會阻塞用戶線程。

    和binlog 的區別 , binlog不區分存儲引擎,redolog 僅限於innodb , 其次 記錄的內容也不同 innodb 無論statment row mixed 記錄的都是邏輯日誌,而redo log 記錄的是頁的物理變化。還有binlog 只寫一次,可是redo log 在事務中不斷寫入。

redolog 格式: redo_log_type+ space +page_no + redolog_body

 

爲了保證事務的ACID的持久性,必須將innodb_flush_log_at_trx_commit=1 , 也就是在事務提交的時候,必須確保寫入重作日誌,若是宕機,就能夠經過redo log 恢復。

相關文章
相關標籤/搜索