1. 程式人生 > >MySql中啟用InnoDB數據引擎簡介 以及 InnoDB與 MYISAM的區別和聯系

MySql中啟用InnoDB數據引擎簡介 以及 InnoDB與 MYISAM的區別和聯系

隔離級別 最終 全文索引 都是 後臺 isa llb ldb 優勢

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引擎的基本差別

Innodb引擎

Innodb引擎提供了對數據庫ACID事務的支持,並且實現了SQL標準的四種隔離級別。該引擎還提供了行級鎖和外鍵約束,它的設計目標是處理大容量數據庫系統,它本身其實就是基於MySQL後臺的完整數據庫系統,MySQL運行時Innodb會在內存中建立緩沖池,用於緩沖數據和索引。但是該引擎不支持FULLTEXT類型的索引,而且它沒有保存表的行數,當SELECT COUNT(*) FROM TABLE時需要掃描全表。當需要使用數據庫事務時,該引擎當然是首選。由於鎖的粒度更小,寫操作不會鎖定全表,所以在並發較高時,使用Innodb引擎會提升效率。但是使用行級鎖也不是絕對的,如果在執行一個SQL語句時MySQL不能確定要掃描的範圍,InnoDB表同樣會鎖全表。

MyIASM引擎

MyIASM是MySQL默認的引擎,但是它沒有提供對數據庫事務的支持,也不支持行級鎖和外鍵,因此當INSERT(插入)或UPDATE(更新)數據時即寫操作需要鎖定整個表,效率便會低一些。不過和Innodb不同,MyIASM中存儲了表的行數,於是SELECT COUNT(*) FROM TABLE時只需要直接讀取已經保存好的值而不需要進行全表掃描。如果表的讀操作遠遠多於寫操作且不需要數據庫事務的支持,那麽MyIASM也是很好的選擇。

主要區別:

1、MyIASM是非事務安全的,而InnoDB是事務安全的

2、MyIASM鎖的粒度是表級的,而InnoDB支持行級鎖

3、MyIASM支持全文類型索引,而InnoDB不支持全文索引

4、MyIASM相對簡單,效率上要優於InnoDB,小型應用可以考慮使用MyIASM

5、MyIASM表保存成文件形式,跨平臺使用更加方便

應用場景:

1、MyIASM管理非事務表,提供高速存儲和檢索以及全文搜索能力,如果再應用中執行大量select操作,應該選擇MyIASM 2、InnoDB用於事務處理,具有ACID事務支持等特性,如果在應用中執行大量insert和update操作,應該選擇InnoDB

  這些區別能夠影響應用程序的性能和功能,因此你必須針對業務類型來選擇合適的引擎,才能最大的發揮MySQL的性能優勢。

MySql中啟用InnoDB數據引擎簡介 以及 InnoDB與 MYISAM的區別和聯系