MySql數(shù)據(jù)庫引擎

查詢mysql數(shù)據(jù)庫支持引擎命令

SHOW ENGINES


mysql支持的引擎windows

linux系統(tǒng)的默認(rèn)引擎是myisam,windows的默認(rèn)引擎是InnoDB.

*在MySQL中,不需要在整個(gè)服務(wù)器中使用同一種存儲(chǔ)引擎,針對(duì)具體的要求,可以對(duì)每一個(gè)表使用不同的存儲(chǔ)引擎。


InnoDB存儲(chǔ)引擎

InnoDB 是事務(wù)型數(shù)據(jù)庫的首選引擎,支持事務(wù)安全表 (ACID),支持行鎖定和外鍵。MySQL5.5.5 之后,InnoDB 作為默認(rèn)存儲(chǔ)引擎,InnoDB 主要特性有:

1. InnoDB 給 MySQL 提供了具有提交、回滾和崩潰恢復(fù)能力的事務(wù)安全(ACID 兼容)存儲(chǔ)引擎。InnoDB 鎖定在行級(jí)并且也在 SELECT 語句中提供一個(gè)類似 Oracle 的非鎖定讀。這些功能增加了多用戶部署和性能。在 SQL 查詢中,可以自由地將 InnoDB 類型的表與其他 MySQL 的表的類型混合起來,甚至在同一個(gè)查詢中也可以混合。

2. InnoDB 是為處理巨大數(shù)據(jù)量的最大性能設(shè)計(jì)。它的 CPU 的效率可能是任何其它基于磁盤的關(guān)系數(shù)據(jù)庫引擎所不能匹敵的。

3. InnoDB 存儲(chǔ)引擎完全與 MySQL 服務(wù)器整合,InnoDB 存儲(chǔ)引擎為在主內(nèi)存中緩存數(shù)據(jù)和索引而維持它自己的緩沖池。InnoDB 將它的表和索引存在一個(gè)邏輯表空間中,表空間可以包含數(shù)個(gè)文件(或原始磁盤分區(qū))。這與 MyISAM 表不同,比如在 MyISAM 表中每個(gè)表被存在分離的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被艱制為 2GB 的操作系統(tǒng)上。

4. InnoDB 支持外鍵完整性約束(FOREIGN KEY)。 存儲(chǔ)表中的數(shù)據(jù)時(shí),每張表的存儲(chǔ)都按主鍵順序存放,如果沒有顯示在表定義時(shí)指定主鍵,InnoDB 會(huì)被每一行生成一個(gè) 6B 的 ROWID,并以此作為主健。

5. InnoDB 被用在眾多需要高性能的大型數(shù)據(jù)庫站點(diǎn)上。 InnoDB 不創(chuàng)建目錄,使用 InnoDB 時(shí),MySQL 將在 MYSQL 數(shù)據(jù)目錄下創(chuàng)建一個(gè)名為 ibdata1 的 10MB 大小的自動(dòng)擴(kuò)展數(shù)據(jù)文件,以及兩個(gè)名為ib_logfile() 和 ib_logfile1 的 5MB 大小的日志文件。


MyISAM 存儲(chǔ)引擎

MyISAM 基于 ISAM 的存儲(chǔ)引擎,并對(duì)其進(jìn)行擴(kuò)展。它是在 Web、數(shù)據(jù)存儲(chǔ)和其他應(yīng)用環(huán)境下最常用的存儲(chǔ)引擎之一。MyISAM 擁有較高的插入、查詢速度,但不支持事務(wù)。在 MySQL5.5.5 之前的版本中,MyISAM 是默認(rèn)存儲(chǔ)引擎。MyISAM 主要特性有:

1. 大文件(達(dá) 63 位文件長(zhǎng)度)在支持大文件 系統(tǒng)和操作系統(tǒng)上被支持。

2. 當(dāng)把刪除、更新及插入操作混合使用的時(shí)候,動(dòng)態(tài)尺寸的行產(chǎn)生更少的碎片。這要通過合并相鄰被刪除的塊,以及若下一個(gè)塊被刪除,就擴(kuò)展到下一塊來自動(dòng)完成。

3. 每個(gè) MyISAM 表最大索引數(shù)是 64,這也可以通過編譯來改變。對(duì)于鍵長(zhǎng)度超過 250B 的情況,一個(gè)超過 1024B 的鍵將被用上。

4. BLOB 和 TEXT 列可以被索引。

5. NULL 值被允許在索引的列中。這個(gè)值占每個(gè)鍵的 0~1 個(gè)字節(jié)。

6. 所有數(shù)字鍵值以高字節(jié)優(yōu)先被存儲(chǔ)以允許一個(gè)更高的索引壓縮。

7. 每表一個(gè) AUTO_INCREMENT 列的內(nèi)部處理。MyISAM 為 INSERT 和 UPDATE 操作自動(dòng)更新這一列。使得 AUTO_INCREMENT 列更快(至少 10%)。在序列頂?shù)闹当粍h除除之后就不能再利用。

8. 可以把數(shù)據(jù)文件和索引文件放在不同目錄。

9. 每個(gè)字符列可以有不同的字符集。

10. 有 VARCHAR 的表可以固定或動(dòng)態(tài)記錄長(zhǎng)度。

11. VARCHAR 和 CHAR 列可以多達(dá) 64KB

使用 MyISAM 引擎創(chuàng)建數(shù)據(jù)庫,將生產(chǎn) 3 個(gè)文件。文件的名字以表的名字開始,擴(kuò)展名指出文件類型:frm 文件存儲(chǔ)表定義,數(shù)據(jù)文件的擴(kuò)展名為 .MYD(MYData),索引文件的擴(kuò)展名是 .MYI(MYIndex)。


MEMORY 存儲(chǔ)引擎

MEMORY 存儲(chǔ)引擎將表中的數(shù)據(jù)存儲(chǔ)到內(nèi)存中,為查詢和引用其他表數(shù)據(jù)提供快速訪問。MEMORY 主要特性有:

1. MEMORY 表的每個(gè)表可以多達(dá) 32 個(gè)索引,每個(gè)索引 16 列,以及 500B 的最大鍵長(zhǎng)度。

2. MEMORY 存儲(chǔ)引擎引擎執(zhí)行 HASH 和 BTREE 索引。

3. 可以在一個(gè) MEMORY 表中有非唯一鍵。

4. MEMORY 不支持 BLOB 或 TEXT 列。

5. MEMORY 表使用一個(gè)固定的記錄長(zhǎng)度格式。

6. MEMORY 支持 AUTO_INCREMENT 列和對(duì)包含 NULL 值的列索引。

MEMORY 表內(nèi)容被存在內(nèi)存中,內(nèi)存是 MEMORY 表和服務(wù)器在查詢處理時(shí)的空閑中創(chuàng)建的內(nèi)部表共享。

7. MEMORY 表在所有客戶端之間共享(就像其他任何非 TEMPORARY 表)。

8. ????當(dāng)不再需要 MEMORY 表的內(nèi)容時(shí),要釋放被 MEMORY 表使用的內(nèi)存,應(yīng)該執(zhí)行 DELETE FROM 或 TRUNCATE TABLE,或者刪除整個(gè)表(使用 DROP TABLE)。


存儲(chǔ)引擎的選擇


InnoDB: 支持事務(wù)安全的引擎,支持外鍵、行鎖、事務(wù)是他的最大特點(diǎn)。如果有大量的update和insert,建議使用InnoDB,特別是針對(duì)多個(gè)并發(fā)和QPS較高的情況。

? ??1. 是否要支持事務(wù),如果要請(qǐng)選擇innodb,如果不需要可以考慮MyISAM;

? ? 2. 如果表中絕大多數(shù)都只是讀查詢,可以考慮MyISAM,如果既有讀也有寫,請(qǐng)使用? ?????????InnoDB。

? ? 3. 系統(tǒng)奔潰后,MyISAM恢復(fù)起來更困難,能否接受;


InnoDB和Myisam的差別

數(shù)據(jù)庫中常用的就兩種類型,默認(rèn)的InnoDB和Myisam(讀音:咪撒姆)。

具體差別如下:

1. InnoDB支持事務(wù),MyISAM不支持,對(duì)于InnoDB每一條SQL語言都默認(rèn)封裝成事務(wù),自動(dòng)提交,這樣會(huì)影響速度,所以最好把多條SQL語言放在begin和commit之間,組成一個(gè)事務(wù);?

2. InnoDB中不保存表的具體行數(shù),也就是說,執(zhí)行select count(*) from table時(shí),InnoDB要掃描一遍整個(gè)表來計(jì)算有多少行,但是MyISAM只要簡(jiǎn)單的讀出保存好的行數(shù)即可。注意的是,當(dāng)count(*)語句包含where條件時(shí),兩種表的操作是一樣的。

3.?InnoDB支持外鍵,而MyISAM不支持。對(duì)一個(gè)包含外鍵的InnoDB表轉(zhuǎn)為MYISAM會(huì)失?。?/b>

4. InnoDB支持表、行(默認(rèn))級(jí)鎖,而MyISAM支持表級(jí)鎖. ?InnoDB的行鎖是實(shí)現(xiàn)在索引上的,而不是鎖在物理行記錄上。潛臺(tái)詞是,如果訪問沒有命中索引,也無法使用行鎖,將要退化為表鎖。

5.?InnoDB表必須有主鍵(用戶沒有指定的話會(huì)自己找或生產(chǎn)一個(gè)主鍵),而Myisam可以沒有.

6.?Innodb存儲(chǔ)文件有frm、ibd,而Myisam是frm、MYD、MYI

? ? ?Innodb:frm是表定義文件,ibd是數(shù)據(jù)文件

? ? ?Myisam:frm是表定義文件,myd是數(shù)據(jù)文件,myi是索引文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容