目錄
- 資料目錄
- 表空間
資料目錄
mysql的資料目錄是用來存盤MySQL運行程序中產生的資料,
資料目錄對應一個系統變數datadir,查看這個系統變數就可以了,
SHOW VARIABLES LIKE 'datadir';
每次創建一個資料庫時:
- 都會在資料目錄下創建一個與資料庫同名的子目錄,
- 在與該資料庫同名的子目錄下創建一個名為
db.opt的檔案,這個檔案包含了該資料庫的一些屬性,比如該資料庫的字符集和比較規則等,
對于InnoDB存盤引擎來說,每一個表空間可被劃分成很多個頁,表資料存放在表空間下的某些頁中,表空間分為幾種不同的型別,
(1)系統表空間
若使用系統表空間存盤表中的資料,會在該表所在資料庫對應的子目錄下創建一個名為“表名.frm”,表中的資料會存盤在系統表空間對應的檔案中,
(2)獨立表空間
若使用獨立表空間存盤表中的資料,會在該表所在資料庫對應的子目錄下創建一個名為“表名.frm”和檔案和另一個名為“表名.ibd”的檔案,表中的資料會存盤在個表名為“表名.ibd”檔案中,
表空間
表空間被劃分為許多連續的區,對于大小為16KB的頁面來說,每個區默認由64個頁(就是1MB)組成,每265個區劃分為一個組,每個組最開始的幾個頁面的型別是固定的,
段是一個邏輯上的概念,是某些零散的頁面以及一些完整的區的集合,
對個區對應一個XDES Entry結構,這個結構中存盤了一些與這個區有關的屬性,這些區可以被分為下面的幾種型別,
- 空閑的區:這些區被加入到
FREE鏈表, - 有剩余閑頁面的碎片區:這個區被加入到
FREE_FRAG鏈表, - 沒有剩余空閑區的碎片區:這個區會被加入到
FULL_FRAG鏈表, - 附屬某個段的區:每個段所屬的區又會被組織成下面的幾種鏈表,
-
FREE鏈表:在同一個段中,所有的頁面都是空間頁面的區對應的XDES Entry結構被加入到這個鏈表, -
NOT_FULL鏈表:在同一個段中,仍有空閑頁面的區對應的XDES Entry結構會被加入到這個鏈表, -
FULL鏈表:在同一個段中,已經沒有空閑頁面的區對應的XDES Entry結構會被加入到這個鏈表,
-
每個段都會對應的一個INODE Entry結構,該結構中存盤了一些與這個段有關的屬性,
表空間中第一個頁面的型別為FSP_HDR,它存盤了表空間的一些整體以及第一個組內的256個區對應的XDES Entry結構,
除了表空間的第一個組以外,其余組的第一個頁面的型別為XDES,這種頁面的結構的FSP_HDR型別的頁面對比,除了少了File Space Header部分之外,其余部分是一樣的,
每個組中第二個頁面的型別為IBUF_BITMAP,存盤一些關于Change Bufferde資訊,
表空間中第一個分組的第三個頁面的型別是INODE,它是為了存盤INODE Entry結構而設計的,這種型別的頁面會組織成下面兩個鏈表,
-
SEG_INODES_FULL鏈表:在該鏈表中,INODE型別的頁面中已經沒有空閑空間來存盤額外的INODE Entry結構, -
SEG_INODES_FREE鏈表:在該鏈表中,INODE型別的頁面中還有空閑空間來存盤額外的INODE Entry結構,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/250204.html
標籤:其他
