日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql引擎总结_MySQL存储引擎对比总结

發(fā)布時(shí)間:2023/12/3 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql引擎总结_MySQL存储引擎对比总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

存儲(chǔ)引擎是數(shù)據(jù)庫(kù)的核心,對(duì)于mysql來(lái)說(shuō),存儲(chǔ)引擎是以插件的形式運(yùn)行的。雖然mysql支持種類繁多的存儲(chǔ)引擎,但是常用的就那么幾種。這篇文章主要是對(duì)其進(jìn)行一個(gè)總結(jié)和對(duì)比。

一、引言

在mysql5之后,支持的存儲(chǔ)引擎有十幾個(gè),但是常用的就那么幾種,而且默認(rèn)支持的也是InnoDB,既然要進(jìn)行一個(gè)對(duì)比,我們就要從不同的維度來(lái)看一下。

我們可以使用命令來(lái)看看當(dāng)前數(shù)據(jù)庫(kù)可以支持的存儲(chǔ)引擎有哪些。

在這里我們發(fā)現(xiàn)默認(rèn)支持了9種。還是比較多的,下面我們進(jìn)行一個(gè)對(duì)比。

不同的存儲(chǔ)引擎都有各自的特點(diǎn),以適應(yīng)不同的需求,如表所示。為了做出選擇,首先要考慮每一個(gè)存儲(chǔ)引擎提供了哪些不同的功能。

在這里我們列舉了一些特點(diǎn)并作出了比較。下面我們來(lái)具體分析對(duì)比一下。

二、存儲(chǔ)引擎

1、MyISAM

使用這個(gè)存儲(chǔ)引擎,每個(gè)MyISAM在磁盤(pán)上存儲(chǔ)成三個(gè)文件。

(1)frm文件:存儲(chǔ)表的定義數(shù)據(jù)

(2)MYD文件:存放表具體記錄的數(shù)據(jù)

(3)MYI文件:存儲(chǔ)索引

frm和MYI可以存放在不同的目錄下。MYI文件用來(lái)存儲(chǔ)索引,但僅保存記錄所在頁(yè)的指針,索引的結(jié)構(gòu)是B+樹(shù)結(jié)構(gòu)。下面這張圖就是MYI文件保存的機(jī)制:

從這張圖可以發(fā)現(xiàn),這個(gè)存儲(chǔ)引擎通過(guò)MYI的B+樹(shù)結(jié)構(gòu)來(lái)查找記錄頁(yè),再根據(jù)記錄頁(yè)查找記錄。并且支持全文索引、B樹(shù)索引和數(shù)據(jù)壓縮。

支持?jǐn)?shù)據(jù)的類型也有三種:

(1)靜態(tài)固定長(zhǎng)度表

這種方式的優(yōu)點(diǎn)在于存儲(chǔ)速度非常快,容易發(fā)生緩存,而且表發(fā)生損壞后也容易修復(fù)。缺點(diǎn)是占空間。這也是默認(rèn)的存儲(chǔ)格式。

(2)動(dòng)態(tài)可變長(zhǎng)表

優(yōu)點(diǎn)是節(jié)省空間,但是一旦出錯(cuò)恢復(fù)起來(lái)比較麻煩。

(3)壓縮表

上面說(shuō)到支持?jǐn)?shù)據(jù)壓縮,說(shuō)明肯定也支持這個(gè)格式。在數(shù)據(jù)文件發(fā)生錯(cuò)誤時(shí)候,可以使用check table工具來(lái)檢查,而且還可以使用repair table工具來(lái)恢復(fù)。

有一個(gè)重要的特點(diǎn)那就是不支持事務(wù),但是這也意味著他的存儲(chǔ)速度更快,如果你的讀寫(xiě)操作允許有錯(cuò)誤數(shù)據(jù)的話,只是追求速度,可以選擇這個(gè)存儲(chǔ)引擎。

2、InnoDB

InnoDB是默認(rèn)的數(shù)據(jù)庫(kù)存儲(chǔ)引擎,他的主要特點(diǎn)有:

(1)可以通過(guò)自動(dòng)增長(zhǎng)列,方法是auto_increment。

(2)支持事務(wù)。默認(rèn)的事務(wù)隔離級(jí)別為可重復(fù)度,通過(guò)MVCC(并發(fā)版本控制)來(lái)實(shí)現(xiàn)的。

(3)使用的鎖粒度為行級(jí)鎖,可以支持更高的并發(fā);

(4)支持外鍵約束;外鍵約束其實(shí)降低了表的查詢速度,但是增加了表之間的耦合度。

(5)配合一些熱備工具可以支持在線熱備份;

(6)在InnoDB中存在著緩沖管理,通過(guò)緩沖池,將索引和數(shù)據(jù)全部緩存起來(lái),加快查詢的速度;

(7)對(duì)于InnoDB類型的表,其數(shù)據(jù)的物理組織形式是聚簇表。所有的數(shù)據(jù)按照主鍵來(lái)組織。數(shù)據(jù)和索引放在一塊,都位于B+數(shù)的葉子節(jié)點(diǎn)上;

當(dāng)然InnoDB的存儲(chǔ)表和索引也有下面兩種形式:

(1)使用共享表空間存儲(chǔ):所有的表和索引存放在同一個(gè)表空間中。

(2)使用多表空間存儲(chǔ):表結(jié)構(gòu)放在frm文件,數(shù)據(jù)和索引放在IBD文件中。分區(qū)表的話,每個(gè)分區(qū)對(duì)應(yīng)單獨(dú)的IBD文件,分區(qū)表的定義可以查看我的其他文章。使用分區(qū)表的好處在于提升查詢效率。

對(duì)于InnoDB來(lái)說(shuō),比較大的特點(diǎn)在于支持事務(wù)。但是這是以損失效率來(lái)?yè)Q取的。

3、Memory

將數(shù)據(jù)存在內(nèi)存,為了提高數(shù)據(jù)的訪問(wèn)速度,每一個(gè)表實(shí)際上和一個(gè)磁盤(pán)文件關(guān)聯(lián)。文件是frm。

(1)支持的數(shù)據(jù)類型有限制,比如:不支持TEXT和BLOB類型,對(duì)于字符串類型的數(shù)據(jù),只支持固定長(zhǎng)度的行,VARCHAR會(huì)被自動(dòng)存儲(chǔ)為CHAR類型;

(2)支持的鎖粒度為表級(jí)鎖。所以,在訪問(wèn)量比較大時(shí),表級(jí)鎖會(huì)成為MEMORY存儲(chǔ)引擎的瓶頸;

(3)由于數(shù)據(jù)是存放在內(nèi)存中,一旦服務(wù)器出現(xiàn)故障,數(shù)據(jù)都會(huì)丟失;

(4)查詢的時(shí)候,如果有用到臨時(shí)表,而且臨時(shí)表中有BLOB,TEXT類型的字段,那么這個(gè)臨時(shí)表就會(huì)轉(zhuǎn)化為MyISAM類型的表,性能會(huì)急劇降低;

(5)默認(rèn)使用hash索引。

(6)如果一個(gè)內(nèi)部表很大,會(huì)轉(zhuǎn)化為磁盤(pán)表。

在這里只是給出3個(gè)常見(jiàn)的存儲(chǔ)引擎。使用哪一種引擎需要靈活選擇,一個(gè)數(shù)據(jù)庫(kù)中多個(gè)表可以使用不同引擎以滿足各種性能和實(shí)際需求,使用合適的存儲(chǔ)引擎,將會(huì)提高整個(gè)數(shù)據(jù)庫(kù)的性能

本文由 @Java幫 發(fā)布于 職涯寶 ,未經(jīng)作者許可,禁止轉(zhuǎn)載,歡迎您分享文章

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的mysql引擎总结_MySQL存储引擎对比总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。