MySQL數據庫中,InnoDB存儲引擎使用的是一種叫做ibd的文件格式來存儲數據。ibd文件是InnoDB存儲引擎中的表空間文件,它存儲了表中的數據和索引。
InnoDB是MySQL數據庫默認的存儲引擎,它的優點是支持事務、并發處理能力強、數據完整性高等。InnoDB的數據存儲是基于聚簇索引(也就是主鍵索引)的,因此每個InnoDB表(包括系統表)都有一個對應的.ibd文件。
當在InnoDB表中插入數據時,數據不是直接寫入到.ibd文件中,而是先寫入到內存中的緩沖池(Buffer Pool),再由InnoDB存儲引擎根據算法和策略將數據寫入.ibd文件中,這也就是所謂的“臟數據刷新”(Dirty Page Flushing)。
除了數據和索引外,ibd文件中還包含了表的元數據、數據頁(Data Page)和索引頁(Index Page)。每個數據頁大小默認是16KB,其中包含了多個數據行。每個索引頁大小也是16KB,默認包含了多個索引項。
ibd文件中的數據和索引是分別存儲在不同的數據頁或索引頁中的。這也就是說,某個表的數據和索引可能分別存在多個不同的數據頁或索引頁中。在訪問這些數據頁或索引頁時,InnoDB存儲引擎會根據需要進行讀取。
示例代碼: CREATE TABLE example ( id INT PRIMARY KEY, name VARCHAR(50) ) ENGINE=InnoDB; INSERT INTO example (id, name) VALUES (1, 'John'); INSERT INTO example (id, name) VALUES (2, 'Alice'); INSERT INTO example (id, name) VALUES (3, 'Bob'); -- 查看表的.ibd文件路徑 SHOW TABLE STATUS WHERE Name = 'example';