天天看點

Mysql 之 InnoDB存儲引擎

mysql從5.5開始預設存儲引擎使用InnoDB存儲,要想使用InnoDB存儲引擎需要在編譯安裝mysql時添加編譯參數,版本的不同編譯參數也略有不同,也可以安裝mysql後使用動态加載插件的方法安裝innoDB存儲引擎。

innodb資料表在硬碟上的存儲方式:

#每建立一個資料表,mysql就會建立一個硬碟檔案來儲存該資料表的格式,該檔案和資料表的名字相同,以.frm為擴充名,如果建立了一個資料表zhu,那麼在該表所在的資料庫子目錄内便會建立一個zhu.frm檔案。(無論是innodb還是myisam存儲引擎,該檔案是一定如此建立的)
#預設情況下InnoDB存儲資料表的内容存儲在一個共享存儲空間裡,
#可以通過修改配置檔案來使每個表的資料内容存放在單獨的表空間裡,即使如此,共享表空間也不可缺少,因為資料字典仍會存在共享表空間裡。
mysql> show create table student;
+---------+------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                 |
+---------+------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
[root@zhu2 zhujiangtao]# ll
-rw-rw---- 1 mysql mysql 8586 10-26 14:14 student.frm #表結構      

innodb存儲引擎的特點:

#1.支援事務的送出和復原操作
#2.系統崩潰後可以自動恢複,自我修複功能較好
#3.支援外鍵和引用完整性,包括遞歸式删除和更新
#4.支援資料行級别鎖,
#5.預設情況下,innodb存儲引擎會把資料集中存儲在一個共享表空間裡,innodb表空間可以有單個檔案組成,也可由有多個檔案組成,還可以包括原始分區,實際上,innodb表空間就像是一個虛拟的檔案系統,存儲和管理innodb資料表的内容,這樣一來資料表的長度就可以超過檔案系統對每個檔案最大長度的限制,也可以把innodb存儲引擎配置為每個資料表分别建立一個表空間,此時每個資料表在它所在的資料庫子目錄裡有一個對應的.ibd檔案。      

innodb的配置參數