MySql引擎有哪些

數(shù)據(jù)庫存儲引擎是數(shù)據(jù)庫底層軟件組織,數(shù)據(jù)庫管理系統(tǒng)(dbms)使用數(shù)據(jù)引擎進行創(chuàng)建、查詢、更新和刪除數(shù)據(jù)。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎,還可以獲得特定的功能。

現(xiàn)在許多不同的數(shù)據(jù)庫管理系統(tǒng)都支持多種不同的數(shù)據(jù)引擎。mysql的核心就是存儲引擎。

MySql引擎有哪些

存儲引擎查看

MySQL給開發(fā)者提供了查詢存儲引擎的功能,我這里使用的是MySQL5.1,可以在命令行窗口使用:

SHOW ENGINES

命令來查看MySQL使用的引擎,命令的輸出為(我用的navicat Premium):

MySql引擎有哪些

看到MySQL給用戶提供了這么多存儲引擎,包括處理事務安全表的引擎和出來了非事物安全表的引擎。

如果要想查看數(shù)據(jù)庫默認使用哪個引擎,可以通過使用命令:

SHOW VARIABLES LIKE ‘storage_engine’;

來查看,查詢結(jié)果為:

MySql引擎有哪些

在MySQL中,不需要在整個服務器中使用同一種存儲引擎,針對具體的要求,可以對每一個表使用不同的存儲引擎。Support列的值表示某種引擎是否能使用:YES表示可以使用、NO表示不能使用、default表示該引擎為當前默認的存儲引擎 。

下面來看一下其中幾種常用的引擎。

一 、Innodb

支持事務,是事務安全的,提供行級鎖與外鍵約束,有緩沖池,用于緩沖數(shù)據(jù)和索引。

適用場景:用于事務處理,具有ACID事物支持,應用于執(zhí)行大量的insert和update操作的表。

二 、MyISAM? ?

不支持事務,不支持外鍵約束,不支持行級鎖,操作時需要鎖定整張表,不過會保存表的行數(shù),所以當執(zhí)行select count(*) from tablename時執(zhí)行特別快。

適用場景:用于管理非事務表,提供高速檢索及全文檢索能力,適用于有大量的select操作的表,如 日志表

三 、MEMORY? ??

使用存在于內(nèi)存中的內(nèi)容創(chuàng)建表,每一個memory只實際對應一個磁盤文件。因為是存在內(nèi)存中的,所以memory訪問速度非常快,而且該引擎使用hash索引,可以一次定位,不需要像B樹一樣從根節(jié)點查找到支節(jié)點,所以精確查詢時訪問速度特別快,但是非精確查找時,比如like,這種范圍查找,hash就起不到作用了。另外一旦服務關(guān)閉,表中的數(shù)據(jù)就會丟失,因為沒有存到磁盤中。

適用場景:主要用于內(nèi)容變化不頻繁的表,或者作為中間的查找表。對表的更新要謹慎因為數(shù)據(jù)沒有被寫入到磁盤中,服務關(guān)閉前要考慮好數(shù)據(jù)的存儲

四、 MERGE

MERGE存儲引擎把一組MyISAM數(shù)據(jù)表當做一個邏輯單元來對待,讓我們可以同時對他們進行查詢。構(gòu)成一個MERGE數(shù)據(jù)表結(jié)構(gòu)的各成員MyISAM數(shù)據(jù)表必須具有完全一樣的結(jié)構(gòu)。每一個成員數(shù)據(jù)表的數(shù)據(jù)列必須按照同樣的順序定義同樣的名字和類型,索引也必須按照同樣的順序和同樣的方式定義。

除了便于同時引用多個數(shù)據(jù)表而無需發(fā)出多條查詢,MERGE數(shù)據(jù)表還提供了以下一些便利。

MERGE數(shù)據(jù)表可以用來創(chuàng)建一個尺寸超過各個MyISAM數(shù)據(jù)表所允許的最大長度邏輯單元

你看一把經(jīng)過壓縮的數(shù)據(jù)表包括到MERGE數(shù)據(jù)表里。比如說,在某一年結(jié)束之后,你應該不會再往相應的日志文件里添加記錄,所以你可以用myisampack工具壓縮它以節(jié)省空間,而MERGE數(shù)據(jù)表仍可以像往常那樣工作

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊6 分享