Mysql表型別(儲存引擎)的比較
1.和大多數資料庫不同,MySQL 中有一個儲存引擎的概念,針對不同的儲存需求可以選擇最優的儲存引擎。
2.外掛式儲存引擎是MySQL 資料庫最重要的特性之一,使用者可以根據應用的需要選擇如何儲存和索引資料、是否使用事務等。MySQL 預設支援多種儲存引擎,以適用於不同領域的資料庫應用需要,使用者可以通過選擇使用不同的儲存引擎提高應用的效率,提供靈活的儲存,使用者甚至可以按照自己的需要定製和使用自己的儲存引擎,以實現最大程度的可定製性。
3.檢視當前資料庫支援的儲存引擎
在建立表時,可以設定engine欄位來設定引擎:
CREATE TABLE `dept` ( `id`int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
也可以使用alter table 語句
alter table ai engine = innodb;
4.常用的儲存引擎對比:
5.InnoDB MEMORY MyISAM比較
innoDB是mysql5.7的預設儲存引擎,它提供了具有提交、回滾和崩潰恢復能力的事物安全機制。由上表可知,mysql儲存引擎只有InnoDB支援外來鍵。InnoDB 儲存表和索引有以下兩種方式:使用共享表空間儲存、使用多表空間儲存。
MEMORY儲存引擎使用存在記憶體中的內容來建立表。每個MEMORY 表只實際對應一個磁碟檔案,格式是.frm。MEMORY 型別的表訪問非常得快,因為它的資料是放在記憶體中的,並且預設使用HASH 索引,但是一旦服務關閉,表中的資料就會丟失掉。MEMORY 型別的儲存引擎主要用在那些內容變化不頻繁的程式碼表,或者作為統計操作的中間結果表,便於高效地對中間結果進行分析並得到最終的統計結果。對MEMORY 儲存引擎的表進行更新操作要謹慎,因為資料並沒有實際寫入到磁碟中,所以一定要對下次重新啟動服務後如何獲得這些修改後的資料有所考慮。
MyISAM 不支援事務、也不支援外來鍵,其優勢是訪問的速度快,對事務完整性沒有要求或者以SELECT、INSERT 為主的應用基本上都可以使用這個引擎來建立表。每個MyISAM 在磁碟上儲存成3 個檔案,其檔名都和表名相同,但副檔名分別是:
6.如何選擇合適的儲存引擎
在選擇儲存引擎時,應根據應用特點選擇合適的儲存引擎,對於複雜的應用系統可以根據實際情況選擇多種儲存引擎進行組合。
MyISAM:如果應用是以讀操作和插入操作為主,只有很少的更新和刪除操作,並且對事務的完整性、併發性要求不是很高,那麼選擇這個儲存引擎是非常適合的。MyISAM 是在Web、資料倉儲和其他應用環境下最常使用的儲存引擎之一。
InnoDB:用於事務處理應用程式,支援外來鍵。如果應用對事務的完整性有比較高的要求,在併發條件下要求資料的一致性,資料操作除了插入和查詢以外,還包括很多的更新、刪除操作,那麼InnoDB 儲存引擎應該是比較合適的選擇。InnoDB 儲存引擎除了有效地降低由於刪除和更新導致的鎖定,還可以確保事務的完整提交(Commit)和回滾(Rollback),對於類似計費系統或者財務系統等對資料準確性要求比較高的系統,InnoDB 都是合適的選擇。
MEMORY:將所有資料儲存在RAM 中,在需要快速定位記錄和其他類似資料的環境下,可提供極快的訪問。MEMORY 的缺陷是對錶的大小有限制,太大的表無法CACHE 在記憶體中,其次是要確保表的資料可以恢復,資料庫異常終止後表中的資料是可以恢復的。MEMORY 表通常用於更新不太頻繁的小表,用以快速得到訪問結果。