14.1.1. InnoDB-MySQL默認的存儲引擎
14.1.2. 檢測InnoDB的可用性
14.1.3. 關閉InnoDB
InnoDB是一個兼顧高可靠性和高性能的通用存儲引擎。在MySQL5.5中InnoDB是默認的存儲引擎。在MySQL5.7中
執行Create Table語句的時候如果不是用engine=語句來指定所使用的存儲引擎,那麼默認將會使用InnoDB存儲引擎。如
下圖1實驗結果即可證明
mysql> create table innodb( -> id int primary key, -> name varchar(20) -> ) -> ; Query OK, 0 rows affected (1.02 sec) mysql> show create table innodb; +--------+------------------------------------------------------------------------------------------ -----------------------------------------------------+ | Table | Create Table | +--------+------------------------------------------------------------------------------------------ -----------------------------------------------------+ | innodb | CREATE TABLE `innodb` ( `id` int(11) NOT NULL, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +--------+------------------------------------------------------------------------------------------ -----------------------------------------------------+ 1 row in set (0.01 sec)
從上面的實驗結果可以看出,create table的時候默認是innodb存儲引擎的。
使用InnoDB引擎建的表有如下的優勢:
1. 使用InnoDB引擎建的表是DML(delete,update,insert)操作遵循ACID模型;支持事務操作,如commit,
rollback,還支持故障恢復。所有這些都能很好的保護用戶的數據。
2. InnoDB存儲引擎提供了行級鎖,也提供了跟oracle類似的一致性讀。這個特性可以大大提高多用戶並發,提升
MySQL的性能。
3. InnoDB的表根據主鍵來組織數據,這樣能優化查詢效率(聚簇索引)
4. 為了保證數據的完整性,InnoDB支持外鍵約束。插入,更新,刪除數據的時候,就會檢查外鍵約束
5. 你可以很自由的混合使用InnoDB引擎的表和其他引擎建立的表,甚至可以在同一條sql語句中混用,比如,你可以
對一個Innodb的表和一個Memory引擎的表做join操作。
6. InnoDB已經為大數據量處理做了很大程度的優化,他的性能很少能有其他的基於硬盤存儲的數據可可以比得上的
InnoDB存儲引擎在主存中會有緩沖池來緩存數據和索引。可以通過設置innodb_file_per_table為啟用狀態使InnoDB的每
張表和該表的索引存儲到單獨的文件。當通過innodb_file_per_table被禁用的時候,InnoDB會把所有的表及索引都存儲到system
tablespace(可能會包含幾個文件或者磁盤分區)。InnoDB可以處理大批量數據,盡管有些操作系統有單個文件大小2G的限制。
在MySQL5.7中InnoDB的新特性可以參考如下文章(還沒寫。。)