1、存儲引擎是什麼?
Mysql中的數據用各種不同的技術存儲在文件(或者內存)中。這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。這些不同的技術以及配套的相關功能在MySQL中被稱作存儲引擎(也稱作表類型)。MySql默認配置了許多不同的存儲引擎,可以預先設置或者在MySql服務器中啟用。
2、MYSQL支持的數據引擎
MyISAM:默認的MySQL插件式存儲引擎,它是在Web、數據倉儲和其他應用環境下最常使用的存儲引擎之一。
InnoDB:用於事務處理應用程序,具有眾多特性,包括ACID事務支持。
BDB:可替代InnoDB的事務引擎,支持COMMIT、ROLLBACK和其他事務特性。
Memory:將所有數據保存在RAM中,在需要快速查找引用和其他類似數據的環境下,可提供極快的訪問。
Merge:允許MySQL DBA或開發人員將一系列等同的MyISAM表以邏輯方式組合在一起,並作為1個對象引用它們。對於諸如數據倉儲等VLDB環境十分適合。
Archive:為大量很少引用的歷史、歸檔、或安全審計信息的存儲和檢索提供了完美的解決方案。
Federated:能夠將多個分離的MySQL服務器鏈接起來,從多個物理服務器創建一個邏輯數據庫。十分適合於分布式環境或數據集市環境。
Cluster/NDB:MySQL的簇式數據庫引擎,尤其適合於具有高性能查找要求的應用程序,這類查找需求還要求具有最高的正常工作時間和可用性。
Other:其他存儲引擎包括CSV(引用由逗號隔開的用作數據庫表的文件),Blackhole(用於臨時禁止對數據庫的應用程序輸入),以及Example引擎(可為快速創建定制的插件式存儲引擎提供幫助)。
3、啟動InnoDB引擎的方法
Mysql中默認的是MyISAM數據引擎,可惜此引擎不支持事務處理,我們需要將默認的數據引擎改為InnoDB。其中InnoDB和 BerkeleyDB支持事務處理,只是默認的情況下都是被disable的。所有的引擎裡面,InnoDB性能最強大,算是商業級的。啟動InnoDB引擎的方法如下:
1)關閉mysql的服務
2)修改my.ini
將default-storage-engine=INNODB前的注釋(#)去掉
將skip-innodb這行注釋(加上#)
3)保存後重啟mysql服務
4、MyISAM引擎和InnoDB引擎的基本差別
MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持。
MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,但是不提供事務支持,而InnoDB提供事務支持已經外部鍵等高級數據庫功能。
MyIASM是IASM表的新版本,有如下擴展:二進制層次的可移植性、NULL列索引、對變長行比ISAM表有更少的碎片、支持大文件、更好的索引壓縮等
InnoDB不支持FULLTEXT類型的索引
InnoDB 中不保存表的具體行數
對於AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯合索引
DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除
…………
這些區別能夠影響應用程序的性能和功能,因此你必須針對業務類型來選擇合適的引擎,才能最大的發揮MySQL的性能優勢。