新聞中心
MySQL 由連接池、SQL 接口、解析器、優(yōu)化器、緩存、存儲(chǔ)引擎等組成,可以分為三層,即 MySQL Server 層、存儲(chǔ)引擎層和文件系統(tǒng)層。MySQL Server 層又包括連接層和 SQL 層,下面為大家簡(jiǎn)單介紹一下MySQL架構(gòu)。

長順網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站從2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
1、客戶端
如上圖mysq支持多種不同的客戶端,對(duì)于java程序員來說,最眼熟的應(yīng)該就是JDBC了。
2、連接池組件
連接池是一種創(chuàng)建和管理連接的技術(shù),該連接池可供需要它們的任何線程使用 。連接池可以大大提高Java應(yīng)用程序的性能,同時(shí)減少總體資源使用量。
大多數(shù)應(yīng)用程序在主動(dòng)處理事務(wù)時(shí),只需要一個(gè)線程即可訪問JDBC連接 ,通常只需幾毫秒即可完成。當(dāng)不處理事務(wù)時(shí),連接處于空閑狀態(tài)。連接池使空閑連接可以被其他一些線程用來完成有用的工作。
實(shí)際上,當(dāng)線程需要針對(duì)具有JDBC的MySQL或其他數(shù)據(jù)庫進(jìn)行工作時(shí),它將請(qǐng)求池中的連接。使用連接完成線程后,它將把它返回到池中,以便任何其他線程都可以使用它。
從池中借出連接后,請(qǐng)求該線程的線程將獨(dú)占使用該連接。從編程的角度來看,這就像線程在DriverManager.getConnection()每次需要JDBC連接時(shí)都調(diào)用 它一樣。使用連接池,線程可能最終會(huì)使用新連接或已經(jīng)存在的連接。
連接池組件主要具有以下的功能:1)連接驗(yàn)證2)線程重用3)連接限制4)內(nèi)存校驗(yàn)5)緩存
連接池存在的意義?1)減少連接創(chuàng)建時(shí)間。創(chuàng)建新的JDBC連接仍然會(huì)引起網(wǎng)絡(luò)和JDBC驅(qū)動(dòng)程序開銷,如果回收連接可以避免這些開銷。
2)簡(jiǎn)化的編程模型。使用連接池時(shí),每個(gè)單獨(dú)的線程都可以像創(chuàng)建自己的JDBC連接一樣工作,從而使您可以使用直接的JDBC編程技術(shù)。
3)受控的資源使用。如果每次線程需要一個(gè)連接而不使用連接池時(shí)都創(chuàng)建一個(gè)新連接,則應(yīng)用程序的資源使用可能會(huì)很浪費(fèi),并且在負(fù)載很重的情況下,可能會(huì)導(dǎo)致應(yīng)用程序發(fā)生無法預(yù)料的行為。
3、管理服務(wù)和工具組件
提供對(duì)MySQL的集成管理,如備份、副本、恢復(fù)、安全管理等。
4、SQL接口組件
接受用戶的SQL命令,并且返回用戶需要查詢的結(jié)果。比如select from就是調(diào)用SQL Interface。
5、查詢分析器組件
SQL命令傳遞到解析器的時(shí)候會(huì)被解析器驗(yàn)證和解析。
主要有以下兩個(gè)功能:1)將SQL語句進(jìn)行語義和語法的分析,分解成數(shù)據(jù)結(jié)構(gòu),然后按照不同的操作類型進(jìn)行分類,然后做出針對(duì)性的轉(zhuǎn) 發(fā)到后續(xù)步驟,以后SQL語句的傳遞和處理就是基于這個(gè)結(jié)構(gòu)的。
2)如果在分解過程中遇到錯(cuò)誤,那么就說明這個(gè)sql語句是不合理的。
6、優(yōu)化器組件
SQL語句在查詢之前會(huì)使用查詢優(yōu)化器對(duì)查詢進(jìn)行優(yōu)化。explain語句查看的SQL語句執(zhí)行計(jì)劃,就是由查詢優(yōu)化器生成的。
7、緩沖(查詢緩存)組件
將客戶端提交給MySQL的select請(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 失效。
在讀寫 比例非常高的應(yīng)用系統(tǒng)中,查詢緩存對(duì)性能的提高是非常顯著的。當(dāng)然它對(duì)內(nèi)存的消耗也是非常大的。 如果查詢緩存有命中的查詢結(jié)果,查詢語句就可以直接去查詢緩存中取數(shù)據(jù)。
這個(gè)緩存機(jī)制是由一系列小緩存組成 的。比如表緩存,記錄緩存,key緩存,權(quán)限緩存等
8、插件式存儲(chǔ)引擎
mysql是Pluggable Storage Engine Architecture(可插拔的存儲(chǔ)引擎架構(gòu)),相比于oracle和SQL Server等只有一種存儲(chǔ)引擎的數(shù)據(jù)庫,mysql可以有多種存儲(chǔ)引擎。
而且存儲(chǔ)引擎是針對(duì)表的,用戶可以根據(jù)不同的需求為數(shù)據(jù)表選擇不同的存儲(chǔ)引擎,用戶也可以根據(jù)自己的需要編寫 自己的存儲(chǔ)引擎。也就是說,同一數(shù)據(jù)庫不同的表可以選擇不同的存儲(chǔ)引擎。
這也是學(xué)習(xí)mysql的必備知識(shí)點(diǎn),后面會(huì)針對(duì)存儲(chǔ)引擎專門去介紹。
9、物理文件
MySQL是通過文件系統(tǒng)對(duì)數(shù)據(jù)和索引進(jìn)行存儲(chǔ)的。
MySQL從物理結(jié)構(gòu)上可以分為日志文件和數(shù)據(jù)索引文件。
這里也是重點(diǎn),后續(xù)會(huì)詳細(xì)講解。
針對(duì)上面提到的所用組件,大概有以下的流程,只要為了幫助大家記住以上組件:
mysql架構(gòu)mysql架構(gòu)
當(dāng)前題目:淺談MySQL架構(gòu)
本文URL:http://www.dlmjj.cn/article/dpgejse.html


咨詢
建站咨詢
