Innodb、MYISAM的文件存儲結構


MySQL的每個數據庫都對應存放在一個與數據庫同名的文件夾中,MySQL數據庫文件包括MySQLserver所創建的數據庫文件和MySQL所用存儲引擎創建的數據庫文件。

查看MySql數據庫物理文件存放位置

 

 

 

1、MySQL創建並管理的數據庫文件:

.frm文件:存儲數據表的框架結構,文件名與表名相同,每個表對應一個同名frm文件,與操作系統和存儲引擎無關,即不管MySQL運行在何種操作系統上,使用何種存儲引擎,都有這個文件。

除了必有的.frm文件,根據MySQL所使用的存儲引擎的不同(MySQL常用的兩個存儲引擎是MyISAM和InnoDB),存儲引擎會創建各自不同的數據表文件。

2、innodb數據表文件:

從物理意義上來講,InnoDB表由共享表空間、日志文件組(redo文件組)、表結構定義文件組成。若將innodb_file_per_table設置為on,則系統將為每一個表單獨的生成一個table_name.ibd的文件(獨占表空間),在此文件中,存儲與該表相關的數據、索引、表的內部數據字典信息。表結構文件則以.frm結尾,這與存儲引擎無關。


共享表空間以及獨占表空間都是針對數據的從物理意義上來講

共享表空間:  會把表集中存儲在一個系統表空間里。即每一個數據庫的所有表的數據,索引文件全部放在一個文件中。該文件目錄默認的是服務器的數據目錄。 默認的文件名為:ibdata1  初始化為10M。

獨占表空間:  每一個表分別創建一個表空間,這時。在對應的數據庫目錄里每一個表都有.ibd文件(這個文件包括了單獨一個表的數據內容以及索引內容)。


通過show variables like '%innodb_file_per_table%';可以查看是哪種類型的表空間。

innodb_file_per_table = ON,也就是獨立表空間的表.

 

 

 

通過show variables like 'innodb_data%';可以產看共享表空間的數據文件存儲路徑

 

 

 

 

例子:Innodb獨占表空間

 

 

 

2.MyISAM數據庫表文件:

MyISAM表是獨立於操作系統的,這說明可以輕松地將其從Windows服務器移植到Linux服務器;每當我們建立一個MyISAM引擎的表時,就會在本地磁盤上建立三個文件,文件名就是表明。例如,我建立了一個MyISAM引擎的test表,那么就會生成以下三個文件:


test.frm,存儲表定義;
test.MYD,存儲數據;
test.MYI,存儲索引。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM