1. 程式人生 > >High Performance MySQL 翻譯 第一章 MySQL架構和歷史

High Performance MySQL 翻譯 第一章 MySQL架構和歷史

《High Performance MySQL》是OneCoder正在閱讀的書,利用茶餘飯後時間進行的閱讀和翻譯,日積月累。

MySQL與其他資料庫服務有很大的不同,它的架構特性使得它在廣泛領域內成為一種實用而“廉價”的選擇。MySQL並不是完美的,但是他足夠靈活以適應特定的需求環境,如網路應用。同時,MySQL也可以支援嵌入式應用,資料倉庫,內容索引和軟體分發,高可用系統,聯機事務處理等等。

為了充分的利用MySQL,你需要理解其設計,從而利用而不是抗拒它。MySQL在很多方面是靈活的。例如,它支援的硬體範圍很廣,你可以在各種硬體環境下配置和執行它,並且,它支援多種資料型別。然而,MySQL最不尋常和重要的特性是它的儲存引擎,它在設計上將查詢程序和其他服務任務與資料儲存和檢索分離。這種分離的特性讓你可以據需選擇資料的儲存方式以及想要怎樣的效能,特性和其他特徵。

本章概要介紹MySQL的架構,儲存引擎的主要區別及其重要性。最後將介紹一些歷史背景和基準資料。我們檢視通過簡化細節和展示樣例的方式介紹了MySQL。這個討論對於資料庫新手和其他資料庫的專家都非常有幫助。

MySQL 邏輯架構

一個好的展現MySQL各個元件如何協同工作的圖會幫助你更好的理解MySQL。圖1-1展示了MySQL的邏輯架構。

圖1-1

最上層是業務層,不侷限於MySQL。他們大多是基於網路的客服端/服務端工具或者服務,需要進行連線管理,許可權認證,安全等等。

第二層開始變得“有趣”。MySQL大部分的“大腦”都在這層,包括查詢解析程式碼,分析,優化,快取以及所有內嵌函式(如,dates, times, math 和 encryption)。提供的所有訪問儲存引擎的函式都在該層,例如:儲存過程, 觸發器和檢視。

第三層包括儲存引擎。他們負責儲存和檢索儲存在MySQL中的所有資料。就跟GNU/Linue的各種可用的檔案系統一樣,不同儲存引擎也有其優缺點。服務端通過儲存引擎介面(API)與其通訊。該API遮蔽了不同儲存引擎的區別,使他們對查詢層是透明的。該API包含了大量的底層函式,執行諸如"開始一個事務"或者"查詢包含該主鍵的行"等操作。儲存引擎不解析SQL(注1)或者與彼此通訊;他們只負責響應來自服務端的請求。

注1:一個例外是在InnoDB引擎解析外來鍵定義,因為MySQL服務本身並沒有實現該功能。