InnoDB儲存引擎簡介
前言:
儲存引擎是資料庫的核心,對於 MySQL 來說,儲存引擎是以外掛的形式執行的。雖然 MySQL 支援種類繁多的儲存引擎,但最常用的當屬 InnoDB 了,本篇文章將主要介紹 InnoDB 儲存引擎相關知識。
1. InnoDB 簡介
MySQL 5.5 版本以後,預設儲存引擎就是
InnoDB
了。 InnoDB 是一種兼顧了高可靠性和高效能的通用儲存引擎。在 MySQL 5.7 中,除非你配置了其他預設儲存引擎,否則執行 CREATE TABLE 不指定 ENGINE 的語句將建立一個 InnoDB 表。
# 檢視MySQL支援的儲存引擎
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
# 檢視預設儲存引擎
mysql> show variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
2. InnoDB 優勢
InnoDB 之所以如此受寵,主要在於其功能方面的較多優勢。
1)支援事務
InnoDB 最重要的一點就是支援事務,可以說這是 InnoDB 成為 MySQL 中最流行的儲存引擎的一個非常重要的原因。此外 InnoDB 還實現了 4 種隔離級別(READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ 和 SERIALIZABLE),使得對事務的支援更加靈活。
2)災難恢復性好
InnoDB 通過 commit、rollback、crash-recovery 來保障資料的安全。
具體來說,crash-recovery 就是指如果伺服器因為硬體或軟體的問題而崩潰,不管當時資料是怎樣的狀態,在重啟 MySQL 後,InnoDB 都會自動恢復到發生崩潰之前的狀態。
3)使用行級鎖
InnoDB 改變了 MyISAM 的鎖機制,實現了行鎖。雖然 InnoDB 的行鎖機制是通過索引來完成的,但畢竟在資料庫中大部分的 SQL 語句都要使用索引來檢索資料。行鎖定機制也為 InnoDB 在承受高併發壓力的環境下增強了不小的競爭力。
4)實現了緩衝處理
InnoDB 提供了專門的緩衝池,實現了緩衝管理,不僅能緩衝索引也能緩衝資料,常用的資料可以直接從記憶體中處理,比從磁碟獲取資料處理速度要快。在專用資料庫伺服器上,通常會將最多80%的物理 memory 分配給緩衝池。
5)支援外來鍵
InnoDB 支援外來鍵約束,檢查外來鍵、插入、更新和刪除,以確保資料的完整性。儲存表中的資料時,每張表的儲存都按主鍵順序存放,如果沒有顯式在表定義時指定主鍵,InnoDB 會為每一行生成一個6位元組的 ROWID ,並以此作為主鍵。
總結:
本篇文章簡單介紹了 InnoDB 儲存引擎及其優勢,想深入學習 MySQL ,InnoDB 絕對是一塊繞不開的重點知識。關於 InnoDB 的內容還有很多,後面有機會的話可以多寫寫。
參考:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31401187/viewspace-2709916/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 14.1 InnoDB 儲存引擎介紹儲存引擎
- 儲存引擎簡介儲存引擎
- MySQL儲存引擎簡介及MyISAM和InnoDB的區別MySql儲存引擎
- MySQL InnoDB儲存引擎MySql儲存引擎
- MySQL InnoDB 儲存引擎探祕MySql儲存引擎
- MySQL資料庫儲存引擎簡介MySql資料庫儲存引擎
- InnoDB儲存引擎MVCC實現原理儲存引擎MVC
- 第二章 InnoDB儲存引擎儲存引擎
- 你真的瞭解Innodb儲存引擎?儲存引擎
- MySQL兩種儲存引擎: MyISAM和InnoDB 簡單總結MySql儲存引擎
- MySQLInnoDB儲存引擎(一):精談innodb的儲存結構MySql儲存引擎
- InnoDB儲存引擎鎖機制(一、案例)儲存引擎
- MySQL儲存引擎--MyISAM與InnoDB區別MySql儲存引擎
- innodb儲存引擎鎖的實現(一)儲存引擎
- 《MySQL 效能優化》之 InnoDB 儲存引擎MySql優化儲存引擎
- [Mysql技術內幕]Innodb儲存引擎MySql儲存引擎
- MySQL InnoDB儲存引擎體系結構MySql儲存引擎
- MySQL InnoDB儲存引擎更新Cardinality統計資訊的策略介紹MySql儲存引擎
- MyISAM與innoDB儲存引擎有何差別儲存引擎
- MySQL儲存引擎:MyISAM和InnoDB的區別MySql儲存引擎
- mysql常用儲存引擎(InnoDB、MyISAM、MEMORY、MERGE、ARCHIVE)介紹與如何選擇MySql儲存引擎Hive
- Mysql中儲存引擎簡介、修改、查詢、選擇MySql儲存引擎
- 十八、Mysql儲存引擎並不只有MyISAM、InnoDB——精髓MySql儲存引擎
- MySQL高階10-InnoDB引擎儲存架構MySql架構
- 每日分享-MySQL-2019-08-05-【InnoDB 儲存引擎】MySql儲存引擎
- 總結MySQL儲存引擎MyISAM與InnoDB區別MySql儲存引擎
- Azure 儲存簡介
- Sqlserver儲存引擎體系結構簡介_Part1SQLServer儲存引擎
- mysql儲存引擎InnoDB詳解,從底層看清InnoDB資料結構MySql儲存引擎資料結構
- MySQL儲存引擎入門介紹MySql儲存引擎
- InnoDB儲存引擎鎖機制(五、 常見問題)儲存引擎
- InnoDB儲存引擎鎖機制(二、 鎖的型別)儲存引擎型別
- 談談MySQL InnoDB儲存引擎事務的ACID特性MySql儲存引擎
- MySQL三種InnoDB、MyISAM和MEMORY儲存引擎對比MySql儲存引擎
- 簡單認識MySQL儲存引擎MySql儲存引擎
- InnoDB儲存引擎鎖機制(三、鎖的演算法)儲存引擎演算法
- MySQL原理 - InnoDB引擎 - 行記錄儲存 - Off-page 列MySql
- MySQL中InnoDB儲存引擎的實現和執行原理MySql儲存引擎