MySQL存儲引擎簡介及MyISAM和InnoDB的差別。本站提示廣大學習愛好者:(MySQL存儲引擎簡介及MyISAM和InnoDB的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL存儲引擎簡介及MyISAM和InnoDB的差別正文
MyISAM:默許的MySQL插件式存儲引擎,它是在Web、數據倉儲和其他運用情況下最常應用的存儲引擎之一。留意,經由過程更改 STORAGE_ENGINE 設置裝備擺設變量,可以或許便利地更改MySQL辦事器的默許存儲引擎。
InnoDB:用於事務處置運用法式,具有浩瀚特征,包含ACID事務支撐。
BDB:可替換InnoDB的事務引擎,支撐COMMIT、ROLLBACK和其他事務特征。
Memory:將一切數據保留在RAM中,在須要疾速查找援用和其他相似數據的情況下,可供給極快的拜訪。
Merge:許可MySQL DBA或開辟人員將一系列同等的MyISAM表以邏輯方法組合在一路,並作為1個對象援用它們。關於諸如數據倉儲等VLDB情況非常合適。
Federated:可以或許將多個分別的MySQL辦事器鏈接起來,從多個物理辦事器創立一個邏輯數據庫。非常合適於散布式情況或數據集市情況。
Archive:為年夜量很少援用的汗青、歸檔、或平安審計信息的存儲和檢索供給了完善的處理計劃。
Cluster/NDB:MySQL的簇式數據庫引擎,特別合適於具有高機能查找請求的運用法式,這類查找需求還請求具有最高的正常任務時光和可用性。
Other:其他存儲引擎包含CSV(援用由逗號離隔的用作數據庫表的文件),Blackhole(用於暫時制止對數據庫的運用法式輸出),和Example引擎(可為疾速創立定制的插件式存儲引擎供給贊助)。
MySQL: MyISAM 和 InnoDB的差別
InnoDB 和 MyISAM 是在應用MySQL最經常使用的兩個表類型,各有優缺陷,視詳細運用而定。根本的差異為:MyISAM類型不支撐事務處置等高等處置,而InnoDB類型支撐。MyISAM類型的表強調的是機能,其履行數度比InnoDB類型更快,然則不供給事務支撐,而InnoDB供給事務支撐曾經內部鍵等高等數據庫功效。
MyIASM 是 IASM表的新版本,有以下擴大:
二進制條理的可移植性。
NULL列索引。
對變長行比ISAM表有更少的碎片。
支撐年夜文件。
更好的索引緊縮。
更好的鍵嗎統計散布。
更好和更快的auto_increment處置。
以下是一些細節和詳細完成的差異:
1. InnoDB不支撐 FULLTEXT 類型的索引 ( 今朝只要MyISAM表支撐,且只能用在 CHAR , VARCHAR , TEXT 類型的字段上 )
2. InnoDB中不保留表的詳細行數,也就是說,履行 select count(*) from table 時,InnoDB要掃描一遍全部表來盤算有若干行,然則MyISAM只需簡略的讀出保留好的行數便可。留意的是,當count(*)語句包括 where前提時,兩種表的操作是一樣的。
3. 關於AUTO_INCREMENT類型的字段,InnoDB中必需包括只要該字段的索引,然則在MyISAM表中,可以和其他字段一路樹立結合索引。
4. DELETE FROM table時,InnoDB不會從新樹立表,而是一行一行的刪除。
5. LOAD TABLE FROM MASTER操尴尬刁難InnoDB是不起感化的,處理辦法是起首把InnoDB表改成MyISAM表,導入數據後再改成InnoDB表,然則關於應用的額定的InnoDB特征(例如外鍵)的表不實用。
別的,InnoDB表的行鎖也不是相對的,假如在履行一個SQL語句時MySQL不克不及肯定要掃描的規模,InnoDB表異樣會鎖全表,例如 update table set num=1 where name like '%wfc%'
任何一種表都不是全能的,只用適當的針對營業類型來選擇適合的表類型,能力最年夜的施展MySQL的機能優勢.