共計 2106 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章給大家分享的是有關 MySQL 數據庫基礎架構是怎么樣的的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。
1.Application Layer
MySQL 的應用層提供各種用戶對數據庫的訪問,也就是為數據庫提供一個訪問接口,讓外部世界與數據連接起來,起一個橋的作用。實際生活中,我們會遇見很多不同功能橋,最初簡陋的獨木橋,現在的過街天橋,跨江的公路橋鐵路橋,它們都各施其職。而在 MySQL 應用層中也有這么三種用戶:administrators,clients and query users。Administrators 可以使用管理型的接口和工具對數據庫進行維護操作;比如:只有管理員用戶才有權使用 mysqladmind 去關閉數據庫服務,以及對數據庫進行創(chuàng)建和徹底刪除操作,還有一些分析調優(yōu)的工具 isamchk 和 myisamchk、對數據庫進行備份恢復操作的 mysqldump, 也都需要在 administrators 的權限才能執(zhí)行。Clients 是通過一些接口或是工具利用 MySQL APIs 對數據庫進行訪問。Query users 是通過查詢接口,就是 mysql 這個命令,去連接數據庫,近而發(fā)出一些查詢請求。
2.Logical Layer
邏輯層是 MySQL 數據庫中核心的功能層,它主要有三大塊:查詢處理 (Query Processor)、事務管理(Transaction Management)、恢復管理(Recovery Management) 和存儲管理(Storage Management)。
2.1 Query Processor
當用戶希望對底層數據庫進行查看和處理操作,在這期間發(fā)生的查詢都會被查詢處理器進行提取并最優(yōu)化以后執(zhí)行輸出,接下來我們說說整個的流程。
當用戶出一個請求,查詢處理器 (QueryProcessor) 會先去判斷請求的類型,也就是前面我們說的,由誰發(fā)出的,如果是 admin,就由 DDL 編譯器 (DDL Compiler) 編譯后,直接由執(zhí)行引擎 (Excution Engine) 對底層數據庫進行操作。如果是 client, 那么,先通過內部 DML 預編譯器 (DDL Precompiler) 將用戶的命令轉化成相應的查詢語句,接下來查詢分析器 (Query Parser) 將語句分解成解析書的結構,以便接下來的組件可以理解,預查詢編譯器 (Query Preprocesor) 會檢查這個 sql 語句是否正確有效,然后安全管理器 (Security/Integration Manager) 將會核實該用戶是否具有對該數據庫有接入訪問的權限,這些都確認之后,會由查詢優(yōu)化器 (Query Optimizer) 對 sql 查詢最優(yōu)化執(zhí)行,正因為有了這個機制,執(zhí)行引擎 (Excution Engine) 在進行查詢處理時可以盡可能快速地完成,這也是 MySQL 數據庫性能優(yōu)于其他的數據庫系統(tǒng)的原因。
2.2 Transaction Management
事務處理分為兩個部分:事務管理器 (Transaction Manager) 和并發(fā)控制器(Concurrency-Control Manager),它們各自發(fā)揮著自己的多種職能。TM 負責確保事務的自動化地記入日志和執(zhí)行,還有解析死鎖以及運行 COMMIT 和 ROLLBACK SQL 命令;CCM 通過鎖定機制確保事務分別獨立的運行。
2.3 Recovery Management
回復管理也有兩部分構成:日志管理器 (Log Manger) 和恢復管理器(Recovery Manager)。這兩個功能從字面上就很好理解,LM 負責紀錄對數據庫的每一項操作,RM 則負責將數據庫恢復到最近一次穩(wěn)定狀態(tài)。
2.4 存儲管理(Storage Management)
在存儲管理中,緩沖器管理 (Buffer Manager) 著內存和虛擬存儲中的緩沖紀錄,同時資源管理器 (Resource Manager) 和存儲管理器 (Storage Manager) 也一起協(xié)同它完成對物理層數據庫的操作。
3.Physical Layer
物理層其實就是實際數據的存放地,比如:數據文件、日志文件、統(tǒng)計資料、原數據、索引等等。
到此,以上就是整個 MySQL 數據庫理論性的結構 ,我們已經對 MySQL 數據庫的內部結構有了一個初步的認識,原來就是這樣。接下來就可以通過一些具體的實踐操作,進一步深入體會這些部分在 MySQL 數據庫中的功能特性。、
幾點說明:
1. 在功能上,MySQL 是基于組件的模塊化設計,但事實上,MySQL 既不是嚴格基于組件也非真正的模塊化
2. MySQL 的源代碼中混合使用 C 和 C ++, 而且面向過程的代碼中使用了很多類,這些類僅是負責數據類型的表示,沒有太多體現面向對象編程的思想
3. MySQL 系統(tǒng)是用基于函數庫和數據結構的方式整合代碼的
4. MySQL 的結構師一個類似與子系統(tǒng)組成的架構,子系統(tǒng)通過緊密和高效的配合,組成一個可靠的數據庫系統(tǒng)
感謝各位的閱讀!關于“MySQL 數據庫基礎架構是怎么樣的”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!