InnoDB和MySQL-文件

MySQL數據庫和InnoDB引擎的各種類型文件:

  • 參數文件:告訴MySQL在實例啓動時在哪裏找到數據庫文件,保存某些初始化參數
  • 日誌文件:錯誤日誌文件,二進制日誌文件,慢查詢日誌文件(記錄所有執行時間超過long_query_time秒的所有查詢或者不使用索引的查詢),查詢日誌文件(記錄建立的客戶端連接和執行的語句)等
  • socket文件:用UNIX socket方式連接時需要的文件
  • pid文件:MySQL實例的進程ID文件
  • MySQL表結構文件:存放MySQL表結構定義文件
  • 存儲引擎文件:保存存儲引擎相關的文件,真正存儲了記錄和索引等數據。

參數文件

MySQL實例啓動時讀取的配置參數文件,用來尋找數據庫的各種文件位置和指定某些初始化參數(一系列的key-value值)。
參數也分動態和靜態參數

日誌文件

記錄數據庫各種類型活動

錯誤日誌

記錄所有錯誤信息和一些警告/正確信息

慢查詢日誌

可以用來定位可能存在問題的SQL語句,來進行SQL語句層面的優化。他會把執行時間超過閾值的SQL記錄起來。閾值參數long_query_time,默認10秒。如果某個SQL語句沒有使用索引,也會記錄在這裏面,每分鐘記錄沒用到索引的SQL語句次數可通過參數log_throttle_queries_not_using_indexes. 默認0無限制個數。

查詢日誌

記錄所有對MySQL數據庫請求的信息

二進制日誌

記錄了對MySQL數據庫執行更改的所有操作,但不包括SELECT和SHOW這類操作,因爲這類操作對數據本身並沒有修改。
默認情況下不會啓動,需要手動指定參數來啓動。
二進制日誌的作用:

  • 恢復:某些數據的恢復需要二進制文件,比如point-in-time恢復
  • 複製:通過複製和執行二進制日誌來實時同步遠程MySQL和本地MySQL
  • 審計:通過log來判斷是否有對數據庫進行注入攻擊等

未提交時也有緩衝機制來緩存

socket文件

UNIX用socket方式連接時需要的文件,路徑一般是/tmp/mysql.sock

pid文件

MySQL實例啓動時會將自己的PID寫入一個文件,即pid文件

表結構定義文件

MySQL數據的存儲是根據表進行的,每個表都有與之對應的文件, MySQL都有一個以frm爲後綴名的文件,該文件記錄了該表的表結構定義。

InnoDB存儲引擎文件

每個表存儲引擎都有自己獨立文件,包括redo log文件,表空間文件等。

表空間文件

InnoDB採用將存儲的數據按表空間進行存放的設計。默認情況下會有一個10MB大小的表空間文件

重做日誌文件

當數據庫出現掉電等問題時,可以用redo log文件中存儲的最新信息來保證數據的完整性。
每個InnoDB引擎至少有一個redo log日誌文件組,每個組下至少有2個redo log文件。用戶也可以設置其他的鏡像文件來提高可用性和安全性。
redo日誌會循環寫入各個redo log文件,遍歷完後又重頭開始覆寫。
寫入redo log日誌文件的操作不是直接寫,而是先寫入redo log buffer,再按照一定條件順序來寫入日誌文件。redo log buffer寫入redo log文件時每次寫入的大小是最小扇區大小512byte,可以保證寫入必定成功,不需要double write。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章