欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

MySQL邏輯體系架構(gòu)的示例分析

這篇文章主要為大家展示了“MySQL邏輯體系架構(gòu)的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“MySQL邏輯體系架構(gòu)的示例分析”這篇文章吧。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、移動(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)站回饋大家。

Mysql邏輯體系架構(gòu)(大致架構(gòu)分為三層)

第一層:連接線程處理

  • 客戶端——>連接線程處理(連接處理,授權(quán)認(rèn)證,安全)

所包含的服務(wù)并不是mysql所獨(dú)有的技術(shù),他們都是服務(wù)于C/S程序或者這些程序所需要的(連接處理,授權(quán)認(rèn)證,安全性等等)

第二層:包含大部分mysql核心服務(wù)

  • 查詢緩存——>解析器——>優(yōu)化器——>執(zhí)行查詢

查詢緩存,解析,分析,優(yōu)化,緩存,所有內(nèi)置函數(shù)(日期,時(shí)間,數(shù)學(xué)和加密函數(shù))同時(shí),所有的存儲(chǔ)引擎提供的功能都集中在這一層(存儲(chǔ)過(guò)程,觸發(fā)器,視圖)

流程:在解析查詢之前,要先查詢緩存,緩存只能保存查詢的信息和結(jié)果數(shù)據(jù),如果請(qǐng)求一個(gè)查詢?cè)诰彺嬷写嬖?,就不需要解析,?yōu)化和執(zhí)行查詢了,直接返回緩存中所存放的這個(gè)查詢的結(jié)果

第三層:包含存儲(chǔ)引擎

  • 存儲(chǔ)引擎負(fù)責(zé)mysql中數(shù)據(jù)的存儲(chǔ)和提?。ê蚅inux下的文件系統(tǒng)類似)

每種存儲(chǔ)引擎都有優(yōu)勢(shì)及劣勢(shì),中間的服務(wù)層通過(guò)API和存儲(chǔ)引擎進(jìn)行通信,這些API接口屏蔽了不同存儲(chǔ)引擎之間的差異,對(duì)于查詢層盡可能的透明化。

存儲(chǔ)引擎API包含了十幾個(gè)底層函數(shù),如執(zhí)行 “ 開(kāi)始一個(gè)事務(wù) ” ,或取出有特定主鍵的行,但存儲(chǔ)引擎一般不會(huì)去解析SQL,(InnoDB會(huì)解析外鍵定義,因?yàn)槠浔旧頉](méi)有實(shí)現(xiàn)該功能),不同存儲(chǔ)引擎之間也不會(huì)相互通信,而只是簡(jiǎn)單的響應(yīng)上層的服務(wù)器請(qǐng)求。

Mysql邏輯體系架構(gòu)—詳細(xì)介紹(分為八個(gè)步驟)

1.Connectors

  • 指的是不同預(yù)言中與SQL的交互

Nactive C API,JDBC,ODBC,.NET,PHP,Python,Perl,Ruby,VB

2. Enterprise Management Services & Utilities

  • 系統(tǒng)管理和控制工具

Backup & Recovery,Security,Replication,Cluster,Partitioning,Instance Manager,INPORMATICN_SCHEMA,Administrator,Workbench,Query Browser,Migration Toolkit

3. Connection Pool(連接池)

  • 管理緩沖用戶連接,線程處理等需要緩存的需求。

  • 負(fù)責(zé)監(jiān)聽(tīng)對(duì)MySQL Server的各種請(qǐng)求,接受連接請(qǐng)求,轉(zhuǎn)發(fā)所有連接請(qǐng)求到線程管理模塊。

  • 每一個(gè)連接上MySQL Server的客戶端請(qǐng)求都會(huì)被分配(創(chuàng)建)一個(gè)連接線程為其單獨(dú)服務(wù),并對(duì)連接線程進(jìn)行了緩存,因此不需要為每個(gè)client連接單獨(dú)創(chuàng)建和銷毀,而連接線程的主要工作就是負(fù)責(zé)MySQL Server與客戶端的通信,接收客戶端的命令請(qǐng)求,傳遞Server端的結(jié)果信息,線程管理模塊則負(fù)責(zé)管理維護(hù)這些連接線程,包括線程的創(chuàng)建,線程的cache等等

Authentication -Thread Reuse - Connection Limits - Check Memory -Caches

4.SQL Interface(SQL接口)

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

DML,DDL,Stored Procedures,Views,Triggers,etc

5.Parser(解析器)

  • SQL命令傳遞到解析器的時(shí)候會(huì)被解析器驗(yàn)證和解析,解析器是由Lex和YACC實(shí)現(xiàn)的,是一個(gè)很長(zhǎng)的腳本,在MySQL中我們習(xí)慣將所有Client端發(fā)給Server端的命令都稱為query,在MySQL Server里面,連接線程接收到客戶端的一個(gè)Query后,會(huì)直接將query傳遞給專門(mén)負(fù)責(zé)將各種Query進(jìn)行分類然后轉(zhuǎn)發(fā)給各個(gè)對(duì)應(yīng)的處理模塊

主要功能:

  • a. 將SQL語(yǔ)句進(jìn)行語(yǔ)義和語(yǔ)法分析,分解成數(shù)據(jù)結(jié)構(gòu),然后按照+同的操作類型進(jìn)行分類,做出針對(duì)性的轉(zhuǎn)發(fā)到后續(xù)步驟,以后SQL語(yǔ)句的傳遞和處理就是基于這個(gè)結(jié)構(gòu)的

  • b. 如果在分解構(gòu)成中遇到錯(cuò)誤,那么就說(shuō)明這個(gè)sql語(yǔ)句是不合理的

Query Translation,Object Privilege

6.Optimizer(查詢優(yōu)化器)

SQL語(yǔ)句在查詢之前會(huì)使用查詢優(yōu)化器對(duì)查詢進(jìn)行優(yōu)化,就是優(yōu)化客戶端請(qǐng)求query,根據(jù)客戶端請(qǐng)求的query語(yǔ)句和數(shù)據(jù)庫(kù)中的一些統(tǒng)計(jì)信息,在一系列算法基礎(chǔ)上進(jìn)行分析,得出一個(gè)最優(yōu)策略,告訴后面的程序如何取得這個(gè)query語(yǔ)句的結(jié)果,使用的是 “選取-投影-聯(lián)接” 策略進(jìn)行查詢;<br/>比如:select uid,name from user where gender=1;<br/>這個(gè)查詢語(yǔ)句先根據(jù)where后面的語(yǔ)句進(jìn)行選取,而不是先將表全部查詢出來(lái)以后再進(jìn)行g(shù)ender過(guò)濾,然后根據(jù)uid和name進(jìn)行屬性投影,而不是將所有的屬性全部取出來(lái)以后再進(jìn)行過(guò)濾,最后將這兩個(gè)查詢條件聯(lián)接起來(lái)生成最終的查詢結(jié)果

Access Paths,Statistics

7.Cache 和 Buffer(查詢緩存)

主要功能是將客戶端提交給 Mysql 的 Select的類query請(qǐng)求的返回的結(jié)果集cache到內(nèi)存中,與該query的一個(gè)hash值做一個(gè)對(duì)應(yīng),該query所取數(shù)據(jù)的基表發(fā)生任何數(shù)據(jù)的變化之后,MySQL會(huì)自動(dòng)使該query的Cache失效,在讀寫(xiě)比例非常高的的應(yīng)用系統(tǒng)中,Query Cache對(duì)性能的提高是非常顯著的,當(dāng)然它對(duì)內(nèi)存的消耗也是非常大的。<br/>如果查詢緩存中有有效的命中查詢結(jié)果,查詢語(yǔ)句就可以直接去查詢緩存中取數(shù)據(jù),這個(gè)緩存機(jī)制是由一系列小緩存組成的,比如表緩存,記錄緩存,Key緩存,權(quán)限緩存等等

Global and Engine Specific Caches & Buffers

8.pluggable storage Engines(插件式存儲(chǔ)引擎)

  • 存儲(chǔ)引擎接口:MySQL區(qū)別于其他數(shù)據(jù)庫(kù)的最重要的特點(diǎn)就是其插件式的表存儲(chǔ)引擎。

  • MySQL插件式的存儲(chǔ)引擎架構(gòu)提供了一系列標(biāo)準(zhǔn)的管理和服務(wù)支持,這些標(biāo)準(zhǔn)與存儲(chǔ)引擎本身無(wú)關(guān),可能是每個(gè)數(shù)據(jù)庫(kù)系統(tǒng)都必須的,比如SQL分析器和優(yōu)化器等,而存儲(chǔ)引擎是底層物理結(jié)構(gòu)的實(shí)現(xiàn)。每個(gè)存儲(chǔ)引擎開(kāi)發(fā)者都可以按照自己的意愿進(jìn)行開(kāi)發(fā)。

9.file system

  • 文件系統(tǒng),數(shù)據(jù),日志(redo,undo)索引,錯(cuò)誤日志,查詢記錄,慢查詢等

注意:存儲(chǔ)引擎是基于表的,而不是數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)的工作流程

建立TCP連接——>驗(yàn)證用戶——>創(chuàng)建線程解析SQL——>生成執(zhí)行計(jì)劃——>開(kāi)表——>搜尋buffer看所需數(shù)據(jù)頁(yè)是否被緩存——>從磁盤(pán)掃描數(shù)據(jù)——>獲取數(shù)據(jù)并寫(xiě)入buffer pool——>返回?cái)?shù)據(jù)給客戶端——>關(guān)閉表——>關(guān)閉線程——>關(guān)閉連接

  • 最上層:客戶端連接

1.連接處理:客戶端同數(shù)據(jù)庫(kù)服務(wù)層建立TCP連接,連接管理模塊會(huì)建立連接,并請(qǐng)求一個(gè)連接線程,如果連接池中有空閑的連接線程,則分配給這個(gè)連接,如果沒(méi)有,在沒(méi)有超過(guò)最大線程連接數(shù)的情況下,創(chuàng)建新的連接線程負(fù)責(zé)這個(gè)客戶端

2.授權(quán)認(rèn)證:在query操作之前,還需要調(diào)用用戶模塊進(jìn)行授權(quán)檢查,來(lái)驗(yàn)證用戶是否有權(quán)限,通過(guò)后,方才提供服務(wù),連接線程開(kāi)始接受并處理來(lái)自客戶端的SQL語(yǔ)句

  • 第二層:核心服務(wù)

1.連接線程接收到SQL語(yǔ)句之后,將語(yǔ)句交給SQL語(yǔ)句解析模塊進(jìn)行語(yǔ)法和語(yǔ)義分析。

2.如果是一個(gè)查詢語(yǔ)句,則可以先看查詢緩存中是否有結(jié)果,如果有結(jié)果則直接返回給客戶端。

3.如果查詢緩存中沒(méi)有結(jié)果,則需要查詢數(shù)據(jù)庫(kù)引擎層,將SQL語(yǔ)句發(fā)給優(yōu)化器,進(jìn)行查詢的優(yōu)化,如果是表變更,則分類交給insert,update,delete,create,alert處理模塊進(jìn)行處理

  • 第三層:數(shù)據(jù)庫(kù)引擎層

1.打開(kāi)表,如果需要的話獲取相應(yīng)的鎖。

2.先查詢緩存頁(yè)中有沒(méi)有相應(yīng)的數(shù)據(jù),如果有則可以直接返回,如果沒(méi)有則從磁盤(pán)上去讀取

3.當(dāng)在磁盤(pán)中找到相應(yīng)的數(shù)據(jù)之后,則會(huì)加載到緩存中來(lái),從而使得后面的查詢更加的高效,由于緩存有限,多采用變通的LRU表來(lái)管理緩存頁(yè),保證緩存的都是經(jīng)常訪問(wèn)的數(shù)據(jù)。

4.最后,獲取數(shù)據(jù)后返回給客戶端,關(guān)閉連接,釋放連接線程。

FAQ分析

1.什么是插件式存儲(chǔ)引擎

存儲(chǔ)引擎就是將數(shù)據(jù)對(duì)磁盤(pán)進(jìn)行讀寫(xiě)操作,不同的存儲(chǔ)引擎,讀寫(xiě)操作方式也不同,事務(wù),鎖等都不一樣因?yàn)槲覀冇胁煌臉I(yè)務(wù)需求,所以會(huì)有很多的存儲(chǔ)引擎,在一個(gè)數(shù)據(jù)庫(kù)中,因?yàn)榇鎯?chǔ)引擎是基于表的,所以不同的表可以有不同的存儲(chǔ)引擎,允許將存儲(chǔ)引擎加載到正在運(yùn)行的MySQL服務(wù)器中,這就是插件式存儲(chǔ)引擎

2.什么是LRU緩存

一種緩存淘汰機(jī)制策略算法,因?yàn)榫彺娴膬?nèi)存總是有限的,所以緩存滿了就要?jiǎng)h除一些內(nèi)容,給新內(nèi)容騰位置,而在LRU機(jī)制下,淘汰的數(shù)據(jù)被稱為無(wú)用數(shù)據(jù),LRU的全稱是Least Recently Used,也就是我們認(rèn)為最近使用過(guò)的數(shù)據(jù)都是有用的,很久都沒(méi)用過(guò)的數(shù)據(jù)應(yīng)該就是無(wú)用的,內(nèi)存滿了就優(yōu)先刪除那些最近很久沒(méi)用過(guò)的數(shù)據(jù)

  • 在JVM中Ehcache的緩存策略包含

  1. LRU - least recently used(最近最少使用)

  2. LFU - least frequently used(最不經(jīng)常使用)

  3. FIFO - first in first out, the oldest element by creation time(清除最早緩存的數(shù)據(jù),不關(guān)心是否經(jīng)常使用)

以上是“MySQL邏輯體系架構(gòu)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前名稱:MySQL邏輯體系架構(gòu)的示例分析
本文來(lái)源:http://chinadenli.net/article20/ppsgco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、外貿(mào)建站、定制開(kāi)發(fā)

廣告

聲明:本網(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)

綿陽(yáng)服務(wù)器托管
国产亚洲二区精品美女久久| 欧美激情区一区二区三区| 国产精品超碰在线观看| 97精品人妻一区二区三区麻豆| 欧美日韩国产欧美日韩| 国产一区二区三区四区中文| 国产又色又粗又黄又爽| 性欧美唯美尤物另类视频| 清纯少妇被捅到高潮免费观看| 九九热精彩视频在线播放| 插进她的身体里在线观看骚| 91精品国产综合久久不卡| 日韩欧美高清国内精品| 日韩一级欧美一级久久| 国产精品免费视频久久| 国产欧美日本在线播放| 日本一二三区不卡免费| 国产视频一区二区三区四区| 黄色片一区二区在线观看| 东北女人的逼操的舒服吗| 五月婷婷欧美中文字幕| 日韩精品在线观看一区| 国产日韩精品激情在线观看| 国产精品尹人香蕉综合网| 欧美国产在线观看精品| 草草视频精品在线观看| 欧美整片精品日韩综合| 欧美一区二区三区视频区| 日韩精品视频高清在线观看| 韩国日本欧美国产三级| 亚洲国产av在线视频| 丰满熟女少妇一区二区三区| 亚洲熟女少妇精品一区二区三区| 黄色片一区二区三区高清| 欧美不卡高清一区二区三区| 午夜国产精品福利在线观看| 精品国产亚洲免费91| 色涩一区二区三区四区| 欧美同性视频免费观看| 精品人妻久久一品二品三品| 日本熟女中文字幕一区|