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的新特性可以參考如下文章(還沒寫。。)