14.1 InnoDB 儲存引擎介紹

kakaxi9521發表於2020-10-28

14.1 InnoDB 儲存引擎介紹

InnoDB 儲存引擎是一個通用的兼顧高可靠、高效能的儲存引擎。 在Mysql5.7, InnoDB是預設的儲存引擎, 除非你在建立表時指定儲存引擎,create table ... engine = ...

使用Innodb 的好處

  • DML操作遵循ACID 模型, 支援transactions 特性,commit, rollback, and crash-recovery  保護使用者資料。可以檢視14.2 InnoDB 和ACID 模型章節。

  • 行級鎖和 Oracle 風格的一致性讀增強了多使用者的併發和效能。 可以檢視14.5 InnoDB 鎖和事務模型章節。

  • InnoDB 表是依據主鍵組織的表,能最佳化查詢。 每一個InnoDB 表都有一個主鍵索引稱為clustered index 能做到查詢時最小的I/O。 可以檢視14.8.2.1 Clustered index 和Secondary 索引

  • 為了維護資料的完整性,InnoDB支援 Foreign Key 約束。 可以檢視14.8.1.6 InnoDB 和 Foreign Key 約束。

想了解InnoDB 與其他儲存引擎的資訊,可以檢視15 章。

14.1.1 使用InnoDB 表的好處

使用InnoDB 可以獲得如下收益:

  • 在伺服器因為硬體或軟體故障crash的時候,在重啟時無需做任何操作,InnoDB 會完成crash recovery 操作。

  • Innodb 會維護自己的buffer pool 快取表和索引資料用於資料查詢。 在專有資料庫伺服器,超過80%的實體記憶體常常被分配給Innodb buffer pool.

  • 使用foreign keys 保障資料的完整性。

  • 如果資料在磁碟或記憶體中損壞,會有checksum mechanism 警告。

  • 設計表時新增主鍵有助於提高order by , group by 和join的效能。

  • change buffering 有助於inserts,updates,deletes的最佳化。

  • 支援Adaptive Hash Index ,有助於查詢效能。

  • 支援表和索引壓縮

14.1.2 InnoDB 表的最佳實踐

  • 給每張表新增主鍵有助於查詢,或者設定auto-increment主鍵。

  • 外來鍵關聯的欄位需要新增索引

  • 關閉自動提交 autocommit

  • 透過使用start transaction 和commit 將DML操作分組的放在事務裡

  • 不要使用lock tables操作,使用select ... for update; 替代

  • 開啟innodb_file_per_table 引數將資料和索引放在單獨的表空間而不是system 表空間,innodb_file_per_table引數在5.6.6中是預設開啟的

  • 嘗試使用row_format = compressed引數

14.1.3 檢查InnoDB 引擎是否可用

  • show engines;

14.1.4 Testing and Benchmarking with InnoDB

14.1.5 Turning off InnoDB

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2730520/,如需轉載,請註明出處,否則將追究法律責任。

相關文章