MySQL高級(jí)學(xué)習(xí)筆記(三):Mysql邏輯架構(gòu)介紹、mysql存儲(chǔ)引擎詳解

MySQL邏輯架構(gòu)介紹總體概覽

公司主營(yíng)業(yè)務(wù):做網(wǎng)站、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出上高免費(fèi)做網(wǎng)站回饋大家。

和其它數(shù)據(jù)庫(kù)相比,MySQL有點(diǎn)與眾不同,它的架構(gòu)可以在多種不同場(chǎng)景中應(yīng)用并發(fā)揮良好作用。主要體現(xiàn)在存儲(chǔ)引擎的架構(gòu)上,插件式的存儲(chǔ)引擎架構(gòu)將查詢(xún)處理和其它的系統(tǒng)任務(wù)以及數(shù)據(jù)的存儲(chǔ)提取相分離 。 這種架構(gòu)可以根據(jù)業(yè)務(wù)的需求和實(shí)際需要選擇合適的存儲(chǔ)引擎。

MySQL高級(jí)學(xué)習(xí)筆記(三):Mysql邏輯架構(gòu)介紹、mysql存儲(chǔ)引擎詳解

controller層:
Connectors:連接層,c 、java等連接mysql

業(yè)務(wù)邏輯處理成:
Connection Pool:連接層 c3p0連接池等
Manager Service util:備份、容災(zāi)恢復(fù)、集群等
sql interface:存儲(chǔ)過(guò)程、視圖觸發(fā)器
parser:查詢(xún)事物、對(duì)象的權(quán)限
如果是select開(kāi)頭的就認(rèn)為是讀的操作,insert開(kāi)頭的就是寫(xiě)的操作,
sql語(yǔ)句的加載從from開(kāi)始,轉(zhuǎn)換成mysql能夠讀懂的形式
optimizer:mysql優(yōu)化器 ,經(jīng)過(guò)前面的轉(zhuǎn)換,這里mysql會(huì)優(yōu)化成mysql自己認(rèn)為最優(yōu)的方式
,并不是我們?nèi)藶榈膬?yōu)化
caches & buffers:緩沖

可拔插式的存儲(chǔ)引擎
plugin storage engine
大部分用的是myism和innodb

文件存儲(chǔ)層 計(jì)算機(jī)硬件
file system
file & logs

1.連接層

最上層是一些客戶端和連接服務(wù),包含本地sock通信和大多數(shù)基于客戶端/服務(wù)端工具實(shí)現(xiàn)的類(lèi)似于tcp/ip的通信。主要完成一些類(lèi)似于連接處理、授權(quán)認(rèn)證、及相關(guān)的安全方案。在該層上引入了線程池的概念,為通過(guò)認(rèn)證安全接入的客戶端提供線程。同樣在該層上可以實(shí)現(xiàn)基于SSL的安全鏈接。服務(wù)器也會(huì)為安全接入的每個(gè)客戶端驗(yàn)證它所具有的操作權(quán)限。

2.服務(wù)層

2.1 Management Serveices & Utilities : 系統(tǒng)管理和控制工具

2.2 SQL Interface : SQL接口
接受用戶的SQL命令,并且返回用戶需要查詢(xún)的結(jié)果。比如select from就是調(diào)用SQL Interface

2.3 Parser : 解析器
SQL命令傳遞到解析器的時(shí)候會(huì)被解析器驗(yàn)證和解析。

2.4 Optimizer : 查詢(xún)優(yōu)化器。
SQL語(yǔ)句在查詢(xún)之前會(huì)使用查詢(xún)優(yōu)化器對(duì)查詢(xún)進(jìn)行優(yōu)化。
用一個(gè)例子就可以理解: select uid,name from user where gender= 1;
優(yōu)化器來(lái)決定先投影還是先過(guò)濾。

2.5 Cache和Buffer: 查詢(xún)緩存。
如果查詢(xún)緩存有命中的查詢(xún)結(jié)果,查詢(xún)語(yǔ)句就可以直接去查詢(xún)緩存中取數(shù)據(jù)。
這個(gè)緩存機(jī)制是由一系列小緩存組成的。比如表緩存,記錄緩存,key緩存,權(quán)限緩存等
緩存是負(fù)責(zé)讀,緩沖負(fù)責(zé)寫(xiě)。

3.引擎層

存儲(chǔ)引擎層,存儲(chǔ)引擎真正的負(fù)責(zé)了MySQL中數(shù)據(jù)的 存儲(chǔ)和提取 ,服務(wù)器通過(guò)API與存儲(chǔ)引擎進(jìn)行通信。不同的存儲(chǔ)引擎具有的功能不同,這樣我們可以根據(jù)自己的實(shí)際需要進(jìn)行選取。后面介紹MyISAM和InnoDB

4.存儲(chǔ)層

數(shù)據(jù)存儲(chǔ)層,主要是將數(shù)據(jù)存儲(chǔ)在運(yùn)行于裸設(shè)備的文件系統(tǒng)之上,并完成與存儲(chǔ)引擎的交互。

總體概覽

查詢(xún)流程圖:

MySQL高級(jí)學(xué)習(xí)筆記(三):Mysql邏輯架構(gòu)介紹、mysql存儲(chǔ)引擎詳解

首先,mysql的查詢(xún)流程大致是:
•mysql客戶端通過(guò)協(xié)議與mysql服務(wù)器建連接,發(fā)送查詢(xún)語(yǔ)句,先檢查查詢(xún)緩存,如果命中(一模一樣的sql才能命中),直接返回結(jié)果,否則進(jìn)行語(yǔ)句解析,也就是說(shuō),在解析查詢(xún)之前,服務(wù)器會(huì)先訪問(wèn)查詢(xún)緩存(query cache)——它存儲(chǔ)SELECT語(yǔ)句以及相應(yīng)的查詢(xún)結(jié)果集。如果某個(gè)查詢(xún)結(jié)果已經(jīng)位于緩存中,服務(wù)器就不會(huì)再對(duì)查詢(xún)進(jìn)行解析、優(yōu)化、以及執(zhí)行。它僅僅將緩存中的結(jié)果返回給用戶即可,這將大大提高系統(tǒng)的性能。

語(yǔ)法解析器和預(yù)處理:首先mysql通過(guò)關(guān)鍵字將SQL語(yǔ)句進(jìn)行解析,并生成一顆對(duì)應(yīng)的“解析樹(shù)”。mysql解析器將使用mysql語(yǔ)法規(guī)則驗(yàn)證和解析查詢(xún);預(yù)處理器則根據(jù)一些mysql規(guī)則進(jìn)一步檢查解析數(shù)是否合法。
查詢(xún)優(yōu)化器當(dāng)解析樹(shù)被認(rèn)為是合法的了,并且由優(yōu)化器將其轉(zhuǎn)化成執(zhí)行計(jì)劃。一條查詢(xún)可以有很多種執(zhí)行方式,最后都返回相同的結(jié)果。優(yōu)化器的作用就是找到這其中最好的執(zhí)行計(jì)劃。。
然后,mysql默認(rèn)使用的BTREE索引,并且一個(gè)大致方向是:無(wú)論怎么折騰sql,至少在目前來(lái)說(shuō),mysql最多只用到表中的一個(gè)索引。

mysql存儲(chǔ)引擎

查看命令

1 如何用命令查看

看你的 mysql 現(xiàn)在已提供什么存儲(chǔ)引擎 :

mysql> show engines;

MySQL高級(jí)學(xué)習(xí)筆記(三):Mysql邏輯架構(gòu)介紹、mysql存儲(chǔ)引擎詳解

InnoDB 默認(rèn)的,支持事物支持外鍵,且是行鎖

看你的 mysql 當(dāng)前默認(rèn)的存儲(chǔ)引擎 :

mysql> show variables like ‘%storage_engine%';

MySQL高級(jí)學(xué)習(xí)筆記(三):Mysql邏輯架構(gòu)介紹、mysql存儲(chǔ)引擎詳解

默認(rèn)的是InnoDB
當(dāng)前的也是InnoDB

各個(gè)引擎簡(jiǎn)介

1、InnoDB存儲(chǔ)引擎

InnoDB是MySQL的默認(rèn) 事務(wù)型引擎 ,它被設(shè)計(jì)用來(lái)處理大量的短期(short-lived)事務(wù)。除非有非常特別的原因需要使用其他的存儲(chǔ)引擎,否則應(yīng)該優(yōu)先考慮InnoDB引擎。 行級(jí)鎖,適合高并發(fā)情況

2、MyISAM存儲(chǔ)引擎

MyISAM提供了大量的特性,包括全文索引、壓縮、空間函數(shù)(GIS)等,但MyISAM 不支持事務(wù)和行級(jí)鎖(myisam改表時(shí)會(huì)將整個(gè)表全鎖住) ,有一個(gè)毫無(wú)疑問(wèn)的缺陷就是崩潰后無(wú)法安全恢復(fù)。

3、Archive引擎

Archive存儲(chǔ)引擎 只支持INSERT和SELECT 操作,在MySQL5.1之前不支持索引。
Archive表適合日志和數(shù)據(jù)采集類(lèi)應(yīng)用。 適合低訪問(wèn)量大數(shù)據(jù)等情況。
根據(jù)英文的測(cè)試結(jié)論來(lái)看,Archive表比MyISAM表要小大約75%,比支持事務(wù)處理的InnoDB表小大約83%。

4、Blackhole引擎

Blackhole引擎沒(méi)有實(shí)現(xiàn)任何存儲(chǔ)機(jī)制,它會(huì)丟棄所有插入的數(shù)據(jù),不做任何保存。但服務(wù)器會(huì)記錄Blackhole表的日志,所以可以用于復(fù)制數(shù)據(jù)到備庫(kù),或者簡(jiǎn)單地記錄到日志。但這種應(yīng)用方式會(huì)碰到很多問(wèn)題,因此并不推薦。

5、CSV引擎

CSV引擎可以將普通的CSV文件作為MySQL的表來(lái)處理,但不支持索引。
CSV引擎可以作為一種數(shù)據(jù)交換的機(jī)制,非常有用。
CSV存儲(chǔ)的數(shù)據(jù)直接可以在操作系統(tǒng)里,用文本編輯器,或者excel讀取。

6、Memory引擎

如果需要快速地訪問(wèn)數(shù)據(jù),并且這些數(shù)據(jù)不會(huì)被修改,重啟以后丟失也沒(méi)有關(guān)系,那么使用Memory表是非常有用。Memory表至少比MyISAM表要快一個(gè)數(shù)量級(jí)。(使用專(zhuān)業(yè)的內(nèi)存數(shù)據(jù)庫(kù)更快,如redis)

7、Federated引擎

Federated引擎是訪問(wèn)其他MySQL服務(wù)器的一個(gè)代理,盡管該引擎看起來(lái)提供了一種很好的跨服務(wù)器的靈活性,但也經(jīng)常帶來(lái)問(wèn)題,因此默認(rèn)是禁用的。

MyISAM和InnoDB(重點(diǎn))

對(duì)比項(xiàng)MyISAMInnoDB
主外鍵不支持支持
事務(wù)不支持支持
行表鎖表鎖,即使操作一條記錄也會(huì)鎖住整個(gè)表,不適合高并發(fā)的操作行鎖,操作時(shí)只鎖某一行,不對(duì)其它行有影響, 適合高并發(fā)
緩存只緩存索引,不緩存真實(shí)數(shù)據(jù)不僅緩存索引還要緩存真實(shí)數(shù)據(jù),對(duì)內(nèi)存要求較高,而且內(nèi)存大小對(duì)性能有決定性的影響
表空間
關(guān)注點(diǎn)性能事務(wù)
默認(rèn)安裝YY
默認(rèn)安裝YY
默認(rèn)安裝YY
用戶表默認(rèn)使用NY
自帶系統(tǒng)表使用YN

innodb 索引 使用 B+TREE myisam 索引使用 b-tree
innodb 主鍵為聚簇索引,基于聚簇索引的增刪改查效率非常高。

阿里巴巴、淘寶用哪個(gè)

MySQL高級(jí)學(xué)習(xí)筆記(三):Mysql邏輯架構(gòu)介紹、mysql存儲(chǔ)引擎詳解

• Percona 為 MySQL 數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行了改進(jìn),在功能和性能上較 MySQL 有著很顯著的提升。該版本提升了在高負(fù)載情況下的 InnoDB 的性能、為 DBA 提供一些非常有用的性能診斷工具;另外有更多的參數(shù)和命令來(lái)控制服務(wù)器行為。

•該公司新建了一款存儲(chǔ)引擎叫 xtradb 完全可以替代 innodb, 并且在性能和并發(fā)上做得更好,

•阿里巴巴大部分 mysql 數(shù)據(jù)庫(kù)其實(shí)使用的 percona 的原型加以修改。
•AliSql+AliRedis

以上所述是小編給大家介紹的Mysql邏輯架構(gòu)介紹、mysql存儲(chǔ)引擎詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!

名稱(chēng)欄目:MySQL高級(jí)學(xué)習(xí)筆記(三):Mysql邏輯架構(gòu)介紹、mysql存儲(chǔ)引擎詳解
文章來(lái)源:http://bm7419.com/article28/igeijp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、定制開(kāi)發(fā)、虛擬主機(jī)、小程序開(kāi)發(fā)、品牌網(wǎng)站制作自適應(yīng)網(wǎng)站

廣告

聲明:本網(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;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司