MySQL插件式存儲引擎是MySQL數據庫服務器中的組件,負責為數據庫執行實際的數據I/O操作,並能允許和強制執行面向特殊應用需求的特定特性集合。使用特殊存儲引擎的主要優點之一在於,僅需提供特殊應用所需的特性,因此,數據庫中的系統開銷較小,最終結果具有更有效和更高的數據庫性能。這也是MySQL被始終視為具有高性能的原因之一,在行業標准基准方面,它能匹敵或擊敗專有的整體式數據庫。
從技術角度上看,在存儲引擎中,一些獨特的支持底層結構的組件是什麼呢?一些關鍵差別包括:
· 並發性:某些應用程序比其他應用程序具有很多的顆粒級鎖定要求(如行級鎖定)。選擇正確的鎖定策略能夠減少開銷,並有助於整體性能的提升。它還包括對多種能力的支持,如多版本並發性控制或“快照”讀取等。
· 事務支持:並非所有的應用程序都需要事務,但對的確需要事務的應用程序來說,有著定義良好的需求,如ACID兼容等。
· 引用完整性:通過DDDL定義的 外鍵,服務器需要強制保持關聯數據庫的引用完整性。
· 物理存儲:它包括各種各樣的事項,從表和索引的總的頁大小,到存儲數據所需的格式,到物理磁盤。
· 索引支持:不同的應用程序傾向於采用不同的索引策略,每種存儲引擎通常有自己的編制索引方法,但某些索引方法(如B-tree索引)對幾乎所有的存儲引擎來說是共同的。
· 內存高速緩沖:與其他應用程序相比,不同的應用程序對某些內存高速緩沖策略的響應更好,因此,盡管某些內存高速緩沖對所有存儲引擎來說是共同的(如用於用戶連接的高速緩沖,MySQL的高速查詢高速緩沖等),其他高速緩沖策略僅當使用特殊的存儲引擎時才唯一定義。
· 性能幫助:包括針對並行操作的多I/O線程,線程並發性,數據庫檢查點,成批插入處理等。
· 其他目標特性:可能包括對地理空間操作的支持,對特定數據處理操作的安全限制等。
每組插件式存儲引擎基本組件均采用了相應的設計,能夠為特定應用提供可選擇的特性集合。從反面角度看,避免使用組件特性集合有助於避免不必要的開銷。因此,顯而易見,應理解特定應用程序的需求集合,並選擇恰當的能大幅度改善系統整體效率和性能的MySQL存儲引擎。