中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

通過(guò)使用命令查看mysql存儲(chǔ)引擎

本文主要給大家簡(jiǎn)單講講通過(guò)使用命令查看MySQL存儲(chǔ)引擎,相關(guān)專(zhuān)業(yè)術(shù)語(yǔ)大家可以上網(wǎng)查查或者找一些相關(guān)書(shū)籍補(bǔ)充一下,這里就不涉獵了,我們就直奔主題吧,希望通過(guò)使用命令查看mysql存儲(chǔ)引擎這篇文章可以給大家?guī)?lái)一些實(shí)際幫助。                                                          

創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比南陵網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式南陵網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋南陵地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴(lài)。

SHOW VARIABLES LIKE 'storage_engine';

一、InnoDB存儲(chǔ)引擎

1.InnoDB是事務(wù)型數(shù)據(jù)庫(kù)的首選引擎

支持事務(wù)安全表(ACID)

事務(wù)的ACID屬性:即原子性、一致性、隔離性、持久性

a.原子性:原子性也就是說(shuō)這組語(yǔ)句要么全部執(zhí)行,要么全部不執(zhí)行,如果事務(wù)執(zhí)行到一半出現(xiàn)錯(cuò)誤,數(shù)據(jù)庫(kù)就要回滾到事務(wù)開(kāi)始執(zhí)行的地方。

實(shí)現(xiàn):主要是基于MySQ日志系統(tǒng)的redo和undo機(jī)制。事務(wù)是一組SQL語(yǔ)句,里面有選擇,查詢、刪除等功能。每條語(yǔ)句執(zhí)行會(huì)有一個(gè)節(jié)點(diǎn)。例如,刪除語(yǔ)句執(zhí)行后,在事務(wù)中有個(gè)記錄保存下來(lái),這個(gè)記錄中儲(chǔ)存了我們什么時(shí)候做了什么事。如果出錯(cuò)了,就會(huì)回滾到原來(lái)的位置,redo里面已經(jīng)存儲(chǔ)了我做過(guò)什么事了,然后逆向執(zhí)行一遍就可以了。

b.一致性:事務(wù)開(kāi)始前和結(jié)束后,數(shù)據(jù)庫(kù)的完整性約束沒(méi)有被破壞。(eg:比如A向B轉(zhuǎn)賬,不可能A扣了錢(qián),B卻沒(méi)有收到)

c.隔離性:同一時(shí)間,只允許一個(gè)事務(wù)請(qǐng)求同一數(shù)據(jù),不同的事務(wù)之間彼此沒(méi)有任何干擾;

如果不考慮隔離性則會(huì)出現(xiàn)幾個(gè)問(wèn)題:

i、臟讀:是指在一個(gè)事務(wù)處理過(guò)程里讀取了另一個(gè)未提交的事務(wù)中的數(shù)據(jù)(當(dāng)一個(gè)事務(wù)正在多次修改某個(gè)數(shù)據(jù),而在這個(gè)事務(wù)中這多次的修改都還未提交,這時(shí)一個(gè)并發(fā)的事務(wù)來(lái)訪問(wèn)該數(shù)據(jù),就會(huì)造成兩個(gè)事務(wù)得到的數(shù)據(jù)不一致);(讀取了另一個(gè)事務(wù)未提交的臟數(shù)據(jù))

ii、不可重復(fù)讀:在對(duì)于數(shù)據(jù)庫(kù)中的某個(gè)數(shù)據(jù),一個(gè)事務(wù)范圍內(nèi)多次查詢卻返回了不同的數(shù)據(jù)值,這是由于在查詢間隔,被另一個(gè)事務(wù)修改并提交了;(讀取了前一個(gè)事務(wù)提交的數(shù)據(jù),查詢的都是同一個(gè)數(shù)據(jù)項(xiàng))

iii、虛讀(幻讀):是事務(wù)非獨(dú)立執(zhí)行時(shí)發(fā)生的一種現(xiàn)象(eg:事務(wù)T1對(duì)一個(gè)表中所有的行的某個(gè)數(shù)據(jù)項(xiàng)做了從“1”修改為“2”的操作,這時(shí)事務(wù)T2又對(duì)這個(gè)表中插入了一行數(shù)據(jù)項(xiàng),而這個(gè)數(shù)據(jù)項(xiàng)的數(shù)值還是為“1”并且提交給數(shù)據(jù)庫(kù)。而操作事務(wù)T1的用戶如果再查看剛剛修改的數(shù)據(jù),會(huì)發(fā)現(xiàn)還有一行沒(méi)有修改,其實(shí)這行是從事務(wù)T2中添加的,就好像產(chǎn)生幻覺(jué)一樣);(讀取了前一個(gè)事務(wù)提交的數(shù)據(jù),針對(duì)一批數(shù)據(jù)整體)

d.持久性:事務(wù)完成后,事務(wù)對(duì)數(shù)據(jù)庫(kù)的所有更新將被保存到數(shù)據(jù)庫(kù),不能回滾

2.InnoDB是mySQL默認(rèn)的存儲(chǔ)引擎

默認(rèn)的隔離級(jí)別是RR,并且在RR的隔離級(jí)別下更近一步,通過(guò)多版本并發(fā)控制(MVCC)解決不可重復(fù)讀問(wèn)題,加上間隙鎖(也就是并發(fā)控制)解決幻讀問(wèn)題。因此InnoDB的RR隔離級(jí)別其實(shí)實(shí)現(xiàn)了串行化級(jí)別的效果,而保留了比較好的并發(fā)性能。

MySQL數(shù)據(jù)庫(kù)為我們提供的四種隔離級(jí)別:

a、Serializable(串行化):可避免臟讀、不可重復(fù)讀、幻讀的發(fā)生;

b、Repeatable read(可重復(fù)讀):可避免臟讀、不可重復(fù)讀的發(fā)生;

c、Read committed(讀已提交):可避免臟讀的發(fā)生;

d、Read uncommitted(讀未提交):最低級(jí)別,任何情況都無(wú)法保證;

從a----d隔離級(jí)別由高到低,級(jí)別越高,執(zhí)行效率越低

3.InnoDB支持行級(jí)鎖。

行級(jí)鎖可以最大程度的支持并發(fā),行級(jí)鎖是由存儲(chǔ)引擎層實(shí)現(xiàn)的。

鎖:鎖的主要作用是管理共享資源的并發(fā)訪問(wèn),用于實(shí)現(xiàn)事務(wù)的隔離性

類(lèi)型:共享鎖(讀鎖)、獨(dú)占鎖(寫(xiě)鎖)

MySQL鎖的力度:表級(jí)鎖(開(kāi)銷(xiāo)小、并發(fā)性低),通常在云服務(wù)器層實(shí)現(xiàn)

行級(jí)鎖(開(kāi)銷(xiāo)大、并發(fā)性高),只會(huì)在存儲(chǔ)引擎層面進(jìn)行實(shí)現(xiàn)

4、InnoDB是為處理巨大數(shù)據(jù)量的最大性能設(shè)計(jì)。

它的CPU效率可能是任何基于磁盤(pán)的關(guān)系型數(shù)據(jù)庫(kù)引擎所不能匹敵的

5、InnoDB存儲(chǔ)引擎完全與MySQL云服務(wù)器整合

InnoDB存儲(chǔ)引擎為在主內(nèi)存中緩存數(shù)據(jù)和索引而維持它自己的緩沖池。InnoDB將它的表和索引在一個(gè)邏輯表空間中,表空間可以包含數(shù)個(gè)文件(或原始磁盤(pán)文件);

6、InnoDB支持外鍵完整性約束

存儲(chǔ)表中的數(shù)據(jù)時(shí),每張表的存儲(chǔ)都按照主鍵順序存放,如果沒(méi)有顯示在表定義時(shí)指定主鍵。InnoDB會(huì)為每一行生成一個(gè)6字節(jié)的ROWID,并以此作為主鍵

7、InnoDB被用在眾多需要高性能的大型數(shù)據(jù)庫(kù)站點(diǎn)上

8、InnoDB中不保存表的行數(shù)(eg:select count(*)from table時(shí),InnoDB需要掃描一遍整個(gè)表來(lái)計(jì)算有多少行);清空整個(gè)表時(shí),InnoDB是一行一行的刪除,效率非常慢;

InnoDB不創(chuàng)建目錄,使用InnoDB時(shí),MySQL將在MySQL數(shù)據(jù)目錄下創(chuàng)建一個(gè)名為ibdata1的10MB大小的自動(dòng)擴(kuò)展數(shù)據(jù)文件,以及兩個(gè)名為ib_logfile0和ib_logfile1的5MB大小的日志文件

二、InnoDB引擎的底層實(shí)現(xiàn)

InnoDB的存儲(chǔ)文件有兩個(gè),后綴名分別是 .frm和 .idb;其中 .frm是表的定義文件, .idb是表的數(shù)據(jù)文件。

1、InnoDB引擎采用B+Tree結(jié)構(gòu)來(lái)作為索引結(jié)構(gòu)

B-Tree(平衡多路查找樹(shù)):為磁盤(pán)等外存儲(chǔ)設(shè)備設(shè)計(jì)的一種平衡查找樹(shù)

系統(tǒng)從磁盤(pán)讀取數(shù)據(jù)到內(nèi)存時(shí)是以磁盤(pán)塊位基本單位的,位于同一磁盤(pán)塊中的數(shù)據(jù)會(huì)被一次性讀取出來(lái),而不是按需讀取。

InnoDB存儲(chǔ)引擎使用頁(yè)作為數(shù)據(jù)讀取單位,頁(yè)是其磁盤(pán)管理的最小單位,默認(rèn)page大小是16k.

系統(tǒng)的一個(gè)磁盤(pán)塊的存儲(chǔ)空間往往沒(méi)有那么大,因此InnoDB每次申請(qǐng)磁盤(pán)空間時(shí)都會(huì)是若干地址連續(xù)磁盤(pán)塊來(lái)達(dá)到頁(yè)的大小16KB。

InnoDB在把磁盤(pán)數(shù)據(jù)讀入到磁盤(pán)時(shí)會(huì)以頁(yè)為基本單位,在查詢數(shù)據(jù)時(shí),如果一個(gè)頁(yè)中的每條數(shù)據(jù)都能助于定位數(shù)據(jù)記錄的位置,這將會(huì)減少磁盤(pán)I/O的次數(shù),提高查詢效率。

B-Tree結(jié)構(gòu)的數(shù)據(jù)可以讓系統(tǒng)高效的找到數(shù)據(jù)所在的磁盤(pán)塊

B-Tree中的每個(gè)節(jié)點(diǎn)根據(jù)實(shí)際情況可以包含大量的關(guān)鍵字信息和分支,例

通過(guò)使用命令查看mysql存儲(chǔ)引擎

每個(gè)節(jié)點(diǎn)占用一個(gè)盤(pán)塊的磁盤(pán)空間,一個(gè)節(jié)點(diǎn)上有兩個(gè)升序排序的關(guān)鍵字和三個(gè)指向子樹(shù)根節(jié)點(diǎn)的指針,指針存儲(chǔ)的是子節(jié)點(diǎn)所在磁盤(pán)塊的地址。

以根節(jié)點(diǎn)為例,關(guān)鍵字為17和35,P1指針指向的子樹(shù)的數(shù)據(jù)范圍小于17,P2指針指向的子樹(shù)的數(shù)據(jù)范圍為17----35,P3指針指向的子樹(shù)的數(shù)據(jù)范圍大于35;

模擬查找關(guān)鍵字29的過(guò)程:

a.根據(jù)根節(jié)點(diǎn)找到磁盤(pán)塊1,讀入內(nèi)存。【磁盤(pán)I/O操作第一次】

b.比較關(guān)鍵字29在區(qū)間(17,35),找到磁盤(pán)塊1的指針P2;

c.根據(jù)P2指針找到磁盤(pán)塊3,讀入內(nèi)存。【磁盤(pán)I/O操作第二次】

d.比較關(guān)鍵字29在區(qū)間(26,30),找到磁盤(pán)塊3的指針P2;

e.根據(jù)P2指針找到磁盤(pán)塊8,讀入內(nèi)存。【磁盤(pán)I/O操作第三次】

f.在磁盤(pán)塊8中的關(guān)鍵字列表中找到關(guān)鍵字29.

MySQL的InnoDB存儲(chǔ)引擎在設(shè)計(jì)時(shí)是將根節(jié)點(diǎn)常駐內(nèi)存的,因此力求達(dá)到樹(shù)的深度不超過(guò)3,也就是I/O不需要超過(guò)三次;

分析上面的結(jié)果,發(fā)現(xiàn)需要三次磁盤(pán)I/O操作,和三次內(nèi)存查找操作。由于內(nèi)存中的關(guān)鍵字是一個(gè)有序表結(jié)構(gòu),可以利用二分法查找提高效率;而三次磁盤(pán)I/O操作時(shí)影響整個(gè)B-Tree查找效率的決定因素。

B+Tree

B+Tree是在B-Tree基礎(chǔ)上的一種優(yōu)化,使其更適合實(shí)現(xiàn)外存儲(chǔ)索引結(jié)構(gòu),B-Tree中每個(gè)節(jié)點(diǎn)中有key,也有data,而每一頁(yè)的存儲(chǔ)空間是有限的,如果data數(shù)據(jù)較大時(shí)將會(huì)導(dǎo)致每個(gè)節(jié)點(diǎn)(即一個(gè)頁(yè))能存儲(chǔ)的key的數(shù)量很小。當(dāng)存儲(chǔ)的數(shù)據(jù)量很大時(shí)同樣會(huì)導(dǎo)致B-Tree的深度較大,增大查詢時(shí)的磁盤(pán)I/O次數(shù),進(jìn)而影響查詢效率。

在B+Tree中所有數(shù)據(jù)記錄節(jié)點(diǎn)都是按照鍵值大小順序存放在同一層的葉子節(jié)點(diǎn)上,而非葉子節(jié)點(diǎn)上只存儲(chǔ)key值信息,這樣可以大大加大每個(gè)節(jié)點(diǎn)存儲(chǔ)的key值數(shù)量,降低B+Tree的高度;

通過(guò)使用命令查看mysql存儲(chǔ)引擎

通常在B+Tree上有兩個(gè)頭指針,一個(gè)指向根節(jié)點(diǎn),另一個(gè)指向關(guān)鍵字最小的葉子節(jié)點(diǎn),而且所有葉子節(jié)點(diǎn)(即數(shù)據(jù)節(jié)點(diǎn))之間是一種鏈?zhǔn)江h(huán)結(jié)構(gòu)。

因此可以對(duì)B+Tree進(jìn)行兩種查找運(yùn)算,一種是對(duì)于主鍵的范圍查找和分頁(yè)查找,另一種是從根節(jié)點(diǎn)開(kāi)始,進(jìn)行隨機(jī)查找。

InnoDB中的B+Tree

InnoDB是以ID為索引的數(shù)據(jù)存儲(chǔ)

采用InnoDB引擎的數(shù)據(jù)存儲(chǔ)文件有兩個(gè),一個(gè)定義文件,一個(gè)是數(shù)據(jù)文件。

InnoDB通過(guò)B+Tree結(jié)構(gòu)對(duì)ID建索引,然后在葉子節(jié)點(diǎn)中存儲(chǔ)記錄

通過(guò)使用命令查看mysql存儲(chǔ)引擎若建立索引的字段不是主鍵ID,則對(duì)該字段建索引,然后在葉子節(jié)點(diǎn)中存儲(chǔ)的是該記錄的主鍵,然后通過(guò)主鍵索引找到對(duì)應(yīng)記錄。

通過(guò)使用命令查看mysql存儲(chǔ)引擎就先給大家講到這里,對(duì)于其它相關(guān)問(wèn)題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會(huì)捕捉一些行業(yè)新聞及專(zhuān)業(yè)知識(shí)分享給大家的。

本文標(biāo)題:通過(guò)使用命令查看mysql存儲(chǔ)引擎
轉(zhuǎn)載來(lái)源:http://m.2m8n56k.cn/article18/jogdgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管關(guān)鍵詞優(yōu)化外貿(mào)網(wǎng)站建設(shè)定制開(kāi)發(fā)網(wǎng)站策劃面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
主站蜘蛛池模板: 国产三级观看 | 高清一区二区三区四区五区 | 精品国产亚洲一区二区三区 | 夜色成人性y | 亚洲国产午夜精品理论片的软件 | 91精品国产手机 | 手机毛片在线观看 | 午夜免费69性视频爽爽爽 | 日韩国产成人资源精品视频 | 91精品视频在线播放 | 欧美成人网7777视频 | 日本欧美一区二区三区不卡视频 | 99视频在线永久免费观看 | 亚洲综合一 | 2017天天爽夜夜爽精品视频 | 国产亚洲精品日韩已满十八 | 综合欧美一区二区三区 | 欧美日韩成人 | 99精品国产一区二区三区 | 毛片一级在线观看 | 欧美日韩精品一区二区另类 | 欧美另类交视频 | 国产精品毛片 | 操出白浆视频 | 亚洲欧美日韩国产精品一区 | 欧美日本高清视频在线观看 | 久草视频在线首页 | 国产伦久视频免费观看视频 | 久久er精品热线免费 | 亚洲美女福利视频在线 | 欧美最黄视频 | 在线免费精品视频 | 欧美韩国xxx | 亚洲视频在线观看网站 | 国内精品九一在线播放 | 午夜综合 | 国产美女午夜精品福利视频 | 国产爱视频 | 国产欧美在线观看不卡一 | 男女扒开双腿猛进入免费网站 | 国产亚洲精品看片在线观看 |