下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MySQ的設(shè)計(jì)架構(gòu)對(duì)于初學(xué)者可能MySQL是設(shè)計(jì)框架不是很了解,而其實(shí) 在了解內(nèi)存結(jié)構(gòu)等。下面小編就為大家分享下MySQL勺設(shè)計(jì)架構(gòu),一起來(lái)看一下吧。在使用 Impala 這種所謂大數(shù)據(jù)引擎勺時(shí)候,總會(huì)感覺(jué) 有些地方設(shè)計(jì)勺不是那么盡善盡美, 比如說(shuō)緩存, Impala 勺 查詢結(jié)果是沒(méi)有經(jīng)過(guò)緩存勺,也就是說(shuō)每次都相當(dāng)于需要重 新對(duì)文件執(zhí)行一遍查詢。MySQL基本架構(gòu)如下圖,是 MySQL勺邏輯架構(gòu)圖:最上層的服務(wù)并不是 MySQL所獨(dú)有的,大多數(shù)基于網(wǎng)絡(luò) 勺客戶端 / 服務(wù)器勺工具或者服務(wù)都有類似勺架構(gòu),比如連 接處理、授權(quán)認(rèn)證、安全等等。第二層架構(gòu)是MySQ止匕較有意思的部分大多數(shù) MySQ
2、啲 核心服務(wù)功能都在這一層。包括查詢解析、分析、優(yōu)化、緩 存以及所有的內(nèi)置函數(shù),所有跨存儲(chǔ)引擎的功能都在這一層 實(shí)現(xiàn):存儲(chǔ)過(guò)程、觸發(fā)器、視圖等。第三層包含了存儲(chǔ)引擎。存儲(chǔ)引擎負(fù)責(zé)MySQL中數(shù)據(jù)的存儲(chǔ)和提取。和 GNU/Linux 下的各種文件系統(tǒng)一樣,每個(gè)存 儲(chǔ)引擎都有它的優(yōu)勢(shì)和劣勢(shì)。服務(wù)器通過(guò) API 與存儲(chǔ)引擎進(jìn) 行通信。這些接口屏蔽了不同存儲(chǔ)引擎之間的差異。下面挑幾個(gè)模塊解釋一下:1. 解析器SQL 命令傳遞到解析器的時(shí)候會(huì)被解析器驗(yàn)證和解析解析器是由Lex和YACC實(shí)現(xiàn)的,是一個(gè)很長(zhǎng)的腳本。 主要功能:將SQL語(yǔ)句分解成數(shù)據(jù)結(jié)構(gòu),并將這個(gè)結(jié)構(gòu)傳遞到后續(xù)步驟,以后SQL語(yǔ)句的傳遞和處理
3、就是基于這個(gè)結(jié)構(gòu)的如果在分解構(gòu)成中遇到錯(cuò)誤,那么就說(shuō)明這個(gè) sql 語(yǔ)句 是不合理的2. 優(yōu)化器SQL 語(yǔ)句在查詢之前會(huì)使用查詢優(yōu)化器對(duì)查詢進(jìn)行優(yōu)化。 他使用的是“選取 - 投影-聯(lián)接”策略進(jìn)行查詢。用一個(gè)例子就可以理解: select uid,name from user where gender = 1;這個(gè) select 查詢先根據(jù) where 語(yǔ)句進(jìn)行選取,而不是 先將表全部查詢出來(lái)以后再進(jìn)行 gender 過(guò)濾這個(gè)select查詢先根據(jù)uid和name進(jìn)行屬性投影,而 不是將屬性全部取出以后再進(jìn)行過(guò)濾 將這兩個(gè)查詢條件聯(lián)接起來(lái)生成最終查詢結(jié)果。3. 緩存 如果查詢緩存有命中的查詢結(jié)果
4、,查詢語(yǔ)句就可以直接去查詢緩存中取數(shù)據(jù)。這個(gè)緩存機(jī)制是由一系列小緩存組成的。比如表緩存, 記錄緩存, key 緩存,權(quán)限緩存等。補(bǔ)充知識(shí)1. 查詢優(yōu)化和執(zhí)行 (Optimization and Execution)MySQL將用戶的查詢語(yǔ)句進(jìn)行解析,并創(chuàng)建一個(gè)內(nèi)部的 數(shù)據(jù)結(jié)構(gòu)分析樹(shù),然后進(jìn)行各種優(yōu)化,例如重寫(xiě)查詢、 選擇讀取表的順序,以及使用哪個(gè)索引等。查詢優(yōu)化器不關(guān)心一個(gè)表所使用的存儲(chǔ)引擎,但是存儲(chǔ) 引擎會(huì)影響服務(wù)器如何優(yōu)化查詢。優(yōu)化器通過(guò)存儲(chǔ)引擎獲取 一些參數(shù)、某個(gè)操作的執(zhí)行代價(jià)、以及統(tǒng)計(jì)信息等。在解析 查詢之前,服務(wù)器會(huì)先訪問(wèn)查詢緩存 (query cache) 它 存儲(chǔ)SELECT語(yǔ)句
5、以及相應(yīng)的查詢結(jié)果集。如果某個(gè)查詢結(jié) 果已經(jīng)位于緩存中, 服務(wù)器就不會(huì)再對(duì)查詢進(jìn)行解析、 優(yōu)化、 以及執(zhí)行。它僅僅將緩存中的結(jié)果返回給用戶即可,這將大 大提高系統(tǒng)的性能。2. 并發(fā)控制 (鎖粒度 )MySQL提供兩個(gè)級(jí)別的并發(fā)控制:服務(wù)器級(jí) (the server level) 和存儲(chǔ)引擎級(jí) (the storage engine level) 。加鎖是 實(shí)現(xiàn)并發(fā)控制的基本方法, MySQL中鎖的粒度:表級(jí)鎖:MySQL獨(dú)立于存儲(chǔ)引擎提供表鎖,例如,對(duì)于ALTER TABLE語(yǔ)句,服務(wù)器提供表鎖(table-I evel lock)。行級(jí)鎖: InnoDB 和 Falcon 存儲(chǔ)引擎提供行級(jí)鎖
6、, 此外, BDB支持頁(yè)級(jí)鎖。InnoDB的并發(fā)控制機(jī)制,下節(jié)詳細(xì)討論。另外,值得一提的是,MySQL的些存儲(chǔ)引擎(如InnoDB、BDB)除了使用封鎖機(jī)制外,還同時(shí)結(jié)合MVCC機(jī)制,即多版本兩階段圭寸鎖協(xié)議(Multiversion two-phrase locking protocal) ,來(lái)實(shí)現(xiàn)事務(wù)的并發(fā)控制,從而使得只讀事務(wù)不 用等待鎖,提高了事務(wù)的并發(fā)性。注意:行級(jí)鎖只在存儲(chǔ)引擎層實(shí)現(xiàn),而MySQL服務(wù)器層沒(méi)有實(shí)現(xiàn)。服務(wù)器層完全不了解存儲(chǔ)引種的鎖實(shí)現(xiàn)。3. 事務(wù)MySQL中, InnoDB和BDB都支持事務(wù)處理。這里主要討 論 InnoDB 的事務(wù)處理。事務(wù)的ACID特性:事務(wù)是由一
7、組SQL語(yǔ)句組成的邏輯處理單元,事務(wù)具有 以下4個(gè)屬性,通常簡(jiǎn)稱為事務(wù)的ACID屬性。原子性 (Atomicity) :事務(wù)是一個(gè)原子操作單元,其對(duì) 數(shù)據(jù)的修改,要么全都執(zhí)行,要么全都不執(zhí)行。一致性 (Consistent) :在事務(wù)開(kāi)始和完成時(shí),數(shù)據(jù)都必 須保持一致?tīng)顟B(tài)。這意味著所有相關(guān)的數(shù)據(jù)規(guī)則都必須應(yīng)用 于事務(wù)的修改,以保持?jǐn)?shù)據(jù)的完整性 ; 事務(wù)結(jié)束時(shí),所有的 內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如B樹(shù)索引或雙向鏈表)也都必須是正確的。隔離性 (Isolation) :數(shù)據(jù)庫(kù)系統(tǒng)提供一定的隔離機(jī)制, 保證事務(wù)在不受外部并發(fā)操作影響的“獨(dú)立”環(huán)境執(zhí)行。這 意味著事務(wù)處理過(guò)程中的中間狀態(tài)對(duì)外部是不可見(jiàn)的,反之 亦
8、然。持久性 (Durable) :事務(wù)完成之后,它對(duì)于數(shù)據(jù)的修改 是永久性的,即使出現(xiàn)系統(tǒng)故障也能夠保持。事務(wù)處理帶來(lái)的相關(guān)問(wèn)題: 由于事務(wù)的并發(fā)執(zhí)行,帶來(lái)以下一些著名的問(wèn)題: 更新丟失 (Lost Update) :當(dāng)兩個(gè)或多個(gè)事務(wù)選擇同一 行,然后基于最初選定的值更新該行時(shí),由于每個(gè)事務(wù)都不 知道其他事務(wù)的存在,就會(huì)發(fā)生丟失更新問(wèn)題 - 最后的更新 覆蓋了由其他事務(wù)所做的更新。臟讀 (Dirty Reads) :一個(gè)事務(wù)正在對(duì)一條記錄做修改, 在這個(gè)事務(wù)完成并提交前,這條記錄的數(shù)據(jù)就處于不一致?tīng)?態(tài); 這時(shí),另一個(gè)事務(wù)也來(lái)讀取同一條記錄, 如果不加控制, 第二個(gè)事務(wù)讀取了這些 “臟”數(shù)據(jù),并據(jù)此做進(jìn)一步的處理, 就會(huì)產(chǎn)生未提交的數(shù)據(jù)依賴關(guān)系。這種現(xiàn)象被形象地叫做” 臟讀”。不可重復(fù)讀 (Non-Repeatable Reads) :一個(gè)事務(wù)在讀取 某些數(shù)據(jù)后的某個(gè)時(shí)間,再次讀取以前讀過(guò)的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 土方工程合同(2篇)
- 地接合作協(xié)議書(shū)(2篇)
- 外貿(mào)業(yè)務(wù)員聘用合同
- 招投標(biāo)合同履行監(jiān)管講座
- 婚禮司儀助理招聘合同
- 水利大壩加固沉井施工合同
- 建筑項(xiàng)目管理會(huì)計(jì)合同模板
- 金融機(jī)構(gòu)公租房租賃合同
- 水上救生鉆深水井施工合同
- 合租醫(yī)療機(jī)構(gòu)租賃合同
- HRB500級(jí)鋼筋施工要點(diǎn)ppt課件
- 中醫(yī)內(nèi)科學(xué)----泄瀉精品課件
- 大數(shù)據(jù)平臺(tái)及風(fēng)險(xiǎn)預(yù)警系統(tǒng)采購(gòu)項(xiàng)目需求說(shuō)明書(shū)天津?yàn)I海農(nóng)村商業(yè)銀行【模板】
- 清華抬頭信紙
- 八年級(jí)心理健康教育《自控力——成功的標(biāo)尺》課件
- 施工現(xiàn)場(chǎng)節(jié)電方法
- 水利工程安全生產(chǎn)組織機(jī)構(gòu)
- 廣東省佛山市南海區(qū)人民法院
- 我縣教育發(fā)展面臨的問(wèn)題及對(duì)策建議
- 口腔修復(fù)學(xué)專業(yè)英語(yǔ)詞匯整理
- 家庭、學(xué)校、社會(huì)協(xié)同育人PPT課件
評(píng)論
0/150
提交評(píng)論