溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是InnoDB存儲引擎

發(fā)布時間:2021-10-28 09:21:36 來源:億速云 閱讀:155 作者:iii 欄目:MySQL數(shù)據(jù)庫

這篇文章主要介紹“什么是InnoDB存儲引擎”,在日常操作中,相信很多人在什么是InnoDB存儲引擎問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”什么是InnoDB存儲引擎”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1. InnoDB 簡介

MySQL 5.5 版本以后,默認存儲引擎就是 InnoDB 了。 InnoDB 是一種兼顧了高可靠性和高性能的通用存儲引擎。在 MySQL 5.7 中,除非你配置了其他默認存儲引擎,否則執(zhí)行 CREATE TABLE 不指定 ENGINE 的語句將創(chuàng)建一個 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 優(yōu)勢

InnoDB 之所以如此受寵,主要在于其功能方面的較多優(yōu)勢。

1)支持事務

InnoDB 最重要的一點就是支持事務,可以說這是 InnoDB 成為 MySQL 中最流行的存儲引擎的一個非常重要的原因。此外 InnoDB 還實現(xiàn)了 4 種隔離級別(READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ 和 SERIALIZABLE),使得對事務的支持更加靈活。

2)災難恢復性好

InnoDB 通過 commit、rollback、crash-recovery 來保障數(shù)據(jù)的安全。

具體來說,crash-recovery 就是指如果服務器因為硬件或軟件的問題而崩潰,不管當時數(shù)據(jù)是怎樣的狀態(tài),在重啟 MySQL 后,InnoDB 都會自動恢復到發(fā)生崩潰之前的狀態(tài)。

3)使用行級鎖

InnoDB 改變了 MyISAM 的鎖機制,實現(xiàn)了行鎖。雖然 InnoDB 的行鎖機制是通過索引來完成的,但畢竟在數(shù)據(jù)庫中大部分的 SQL 語句都要使用索引來檢索數(shù)據(jù)。行鎖定機制也為 InnoDB 在承受高并發(fā)壓力的環(huán)境下增強了不小的競爭力。

4)實現(xiàn)了緩沖處理

InnoDB 提供了專門的緩沖池,實現(xiàn)了緩沖管理,不僅能緩沖索引也能緩沖數(shù)據(jù),常用的數(shù)據(jù)可以直接從內存中處理,比從磁盤獲取數(shù)據(jù)處理速度要快。在專用數(shù)據(jù)庫服務器上,通常會將最多80%的物理 memory 分配給緩沖池。

5)支持外鍵

InnoDB 支持外鍵約束,檢查外鍵、插入、更新和刪除,以確保數(shù)據(jù)的完整性。存儲表中的數(shù)據(jù)時,每張表的存儲都按主鍵順序存放,如果沒有顯式在表定義時指定主鍵,InnoDB 會為每一行生成一個6字節(jié)的 ROWID ,并以此作為主鍵。

到此,關于“什么是InnoDB存儲引擎”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI