您好,登錄后才能下訂單哦!
這篇文章主要介紹“MySQL架構由什么組成”,在日常操作中,相信很多人在MySQL架構由什么組成問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MySQL架構由什么組成”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
MySQL 由連接池、SQL 接口、解析器、優化器、緩存、存儲引擎等組成,可以分為三層,即 MySQL Server 層、存儲引擎層和文件系統層。MySQL Server 層又包括連接層和 SQL 層。
如上圖mysq支持多種不同的客戶端,對于java程序員來說,最眼熟的應該就是JDBC了。
連接池是一種創建和管理連接的技術,該連接池可供需要它們的任何線程使用 。連接池可以大大提高Java應用程序的性能,同時減少總體資源使用量。
大多數應用程序在主動處理事務時,只需要一個線程即可訪問JDBC連接 ,通常只需幾毫秒即可完成。當不處理事務時,連接處于空閑狀態。連接池使空閑連接可以被其他一些線程用來完成有用的工作。
實際上,當線程需要針對具有JDBC的MySQL或其他數據庫進行工作時,它將請求池中的連接。使用連接完成線程后,它將把它返回到池中,以便任何其他線程都可以使用它。
從池中借出連接后,請求該線程的線程將獨占使用該連接。從編程的角度來看,這就像線程在DriverManager.getConnection()每次需要JDBC連接時都調用 它一樣。使用連接池,線程可能最終會使用新連接或已經存在的連接。
連接池組件主要具有以下的功能:1)連接驗證2)線程重用3)連接限制4)內存校驗5)緩存
連接池存在的意義?1)減少連接創建時間。創建新的JDBC連接仍然會引起網絡和JDBC驅動程序開銷,如果回收連接可以避免這些開銷。
2)簡化的編程模型。使用連接池時,每個單獨的線程都可以像創建自己的JDBC連接一樣工作,從而使您可以使用直接的JDBC編程技術。
3)受控的資源使用。如果每次線程需要一個連接而不使用連接池時都創建一個新連接,則應用程序的資源使用可能會很浪費,并且在負載很重的情況下,可能會導致應用程序發生無法預料的行為。
提供對MySQL的集成管理,如備份、副本、恢復、安全管理等。
接受用戶的SQL命令,并且返回用戶需要查詢的結果。比如select from就是調用SQL Interface。
SQL命令傳遞到解析器的時候會被解析器驗證和解析。
主要有以下兩個功能:1)將SQL語句進行語義和語法的分析,分解成數據結構,然后按照不同的操作類型進行分類,然后做出針對性的轉 發到后續步驟,以后SQL語句的傳遞和處理就是基于這個結構的。
2)如果在分解過程中遇到錯誤,那么就說明這個sql語句是不合理的。
SQL語句在查詢之前會使用查詢優化器對查詢進行優化。explain語句查看的SQL語句執行計劃,就是由查詢優化器生成的。
將客戶端提交給MySQL的select請求的返回結果集cache到內存中,與該query的一個hash值做一個對應。
該 Query 所取數據的基表發生任何數據的變化之后, MySQL 會自動使該 query 的Cache 失效。
在讀寫 比例非常高的應用系統中,查詢緩存對性能的提高是非常顯著的。當然它對內存的消耗也是非常大的。 如果查詢緩存有命中的查詢結果,查詢語句就可以直接去查詢緩存中取數據。
這個緩存機制是由一系列小緩存組成 的。比如表緩存,記錄緩存,key緩存,權限緩存等
mysql是Pluggable Storage Engine Architecture(可插拔的存儲引擎架構),相比于oracle和SQL Server等只有一種存儲引擎的數據庫,mysql可以有多種存儲引擎。
而且存儲引擎是針對表的,用戶可以根據不同的需求為數據表選擇不同的存儲引擎,用戶也可以根據自己的需要編寫 自己的存儲引擎。也就是說,同一數據庫不同的表可以選擇不同的存儲引擎。
這也是學習mysql的必備知識點,后面會針對存儲引擎專門去介紹。
MySQL是通過文件系統對數據和索引進行存儲的。
MySQL從物理結構上可以分為日志文件和數據索引文件。
這里也是重點,后續會詳細講解。
針對上面提到的所用組件,大概有以下的流程,只要為了幫助大家記住以上組件:
到此,關于“MySQL架構由什么組成”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。