《MySQL技術內幕:InnoDB存儲引擎》讀書筆記二:文件

主要包括參數文件、日誌文件、socket文件、pid文件、MySQL表結構文件、存儲引擎文件mysql

1、參數文件sql

當MySQL實例啓動時,會先去讀一個配置文件。數據庫

可以使用SHOW VARIABLES LIKE ‘innodb_buffer%’這種方式查看參數,以下面查看以innodb_開頭的參數:session

參數類型有動態參數和靜態參數。socket

動態參數意味着你能夠在MySQL實例運行中進行更改,靜態參數則反之。性能

經過SET命令可對動態參數值進行修改。其中global關鍵字表示該參數修改是基於整個實例的生命週期,session表示會話期。。。日誌

2、日誌文件索引

1)錯誤日誌生命週期

錯誤日誌對MySQLde 啓動、運行、關閉過程進行了記錄,不但記錄了出錯信息,同時也記錄了些警告信息或者正確的信息。使用命令SHOW VARIABLES LIKE ‘log_error’定位該文件:事務

2)慢查詢日誌

能夠設定一個閾值,將運行時間超過(非等於)該值得全部SQL語句都記錄到慢查詢日誌中。該閾值經過參數long_query_time來設置。默認10s

查看slow_query_log參數檢測是否啓動慢查詢,默認不啓動

另外一個重要參數是:log_queries_not_using_indexes,該參數的意思是若是運行的SQL語句沒有使用索引,則MySQL數據庫會將這條語句記錄到查詢日誌文件中。

 

① 當MySQL數據過多時,直接查看慢查詢日誌可能不太方便,這是可以使用mysqldumpslow file.log命令,其中file.log爲慢查詢日誌

② 使用mysqldumpslow –s al –n file.log查看鎖定時間最長10條SQL語句

 

從MySQL5.1以後,可將慢查詢日誌記錄到一張表中:slow_log

 

慢查詢輸出格式:log_output變量指定

可將其改爲table格式:

查詢例子:

顯示sleep佔用了10.000749秒,和前面慢查詢閾值對應

 

3)二進制日誌

二進制日誌記錄了對數據更改的全部操做,只是更改,因此SELECT、SHOW之類的操做不在範圍之類

它主要有如下兩個做用:

         恢復:

         複製:

默認狀況下未開啓,需手動開啓,然而開啓會有必定性能損失,但爲了使用複製等功能仍是值得。

 

3. 套接字文件

show variables like ‘socket’\G

4. pid文件

show variables like ‘pid_file’\G

 

5. 表結構定義文件

無論使用什麼存儲引擎,MySQL都會有一個以frm爲後綴名名的文件,這個文件記錄了該表的表結構定義

 

6.  InnoDB存儲引擎文件

包括重作日誌文件和表空間文件

1)重作日誌文件

默認狀況下會有兩個重作日誌文件,ib_logfile0和ib_logfile1.

它們記錄了對於InnoDB存儲引擎的事務日誌。能夠根據須要添加更多的重作日誌文件。

對於有兩個文件的狀況下,重作日誌是循環利用這兩個文件,即文件0使用完後,使用文件1,文件1滿後,再使用文件0。。。

重作日誌可由一些參數進行設置:

重作日誌大小設置過大則會在恢復時可能須要很長時間;

設置太小會致使一個事務的日誌須要屢次切換重作日誌。

2)表空間文件

InnoDB中,存儲的數據按表空間進行存放。默認配置下,會有一個初始化大小爲10M的名爲ibdata1的文件。

經過設置參數innodb_file_per_table,咱們能夠將每一個基於InnoDB存儲引擎的表單獨產生一個表空間,文件名爲 表名.ibd。

上表中test1.ibd表示表test1的表空間文件。

注意這些ibd文件僅存儲該表的數據、索引和插入緩衝等信息,其他信息仍是存放在默認的表空間中。

相關文章
相關標籤/搜索