mysql架構與歷史

2021-10-08 23:31:03 字數 796 閱讀 9923

最上層的服務並不是mysql獨有的,大多數基於網路的客戶端/服務端的工具或者服務都有類似的架構。比如連線處理、授權認證、安全等等

第二層架構是mysql比較有意思的部分,大多數mysql的核心功能都在這一層實現。其中分析器、優化器、執行器統稱為解析器。所有的內建函式、跨儲存引擎的功能都在這一層實現

第三層包含了儲存引擎。在mysql中負責儲存和提取。儲存引擎不會去解析sql,不同儲存引擎之間不會互相通訊,只是單純的響應上層伺服器的請求

每個客戶端連線都會在伺服器程序中有乙個執行緒,這個連線的查詢只會在這個單獨的執行緒中進行。該執行緒只能輪流在某個cpu核心或者cpu中執行,伺服器會負責快取執行緒,因此不需要為每乙個新建的連線建立或者銷毀執行緒。

(mysql5.5或者更新的版本中提供了乙個api,支援執行緒池外掛程式,可以使用池中的執行緒來服務大量的連線

當客戶端連線到mysql伺服器時,伺服器會對其進行驗證。認證基於使用者名稱、原始主機資訊和密碼。如果使用了安全套接字(ssl)方式連線,還可以使用x.509證書認證。一旦客戶端連線成功,伺服器會繼續驗證該客戶端是否具有某個特定查詢的許可權。

優化器並不關係表使用的是什麼儲存引擎,但儲存引擎對於優化查詢是有影響的。優化器會請求儲存引擎提供容量或某個具體操作的開銷資訊,以及表的統計資料等。例如,某些儲存引擎的某種索引,可能對一些特定的查詢有優化。

對於select語句,在解析查詢之前,伺服器會先檢查查詢快取(query cache),如果能夠在其中找到對應的查詢,伺服器就不必再執行查詢解析、優化和執行整個過程,而是直接返回查詢快取中的結果集。

加上sql nocache去跑sql,這樣跑出來的時間就是真實的查詢時間了。

MySQL架構與歷史

所以基於此,資料庫實現了各種死鎖檢測和死鎖超時機制目前innodb採取的方案是 將持有最少行級排他鎖的事務進行回滾。處理死鎖 大多數情況下只需要重新執行因死鎖回滾的事務即可。事務日誌 mysql中的事務 一般建議 除非禁用了自動提交 才可以使用lock tables之外 其他熱河時候都不要顯示的執行...

MySql歷史與架構

每個客戶端連線都會有乙個執行緒 認證基於使用者名稱,原始主機資訊和密碼 mysql會解析查詢並進行優化 對於select會先檢查查詢快取,能夠找到就直接返回結果集 鎖在commit或rollback時自動釋放 共享,不阻塞,多個使用者可以同時讀同乙個資源 保證只有乙個使用者寫入,防止其他使用者寫入或...

Mysql歷史架構筆記

開發5.0版,他將增加儲存過程 伺服器端游標,觸發器,檢視,xa事務,查詢優化器重大改進及許多其他特性。2004年10月4.1版穩定了 5.0版則在一年以後變得穩定,時間是2005年10月。mysql的架構 核心模組 可在伺服器識別出下列模組 伺服器初始化模組 連線管理器 執行緒管理器 使用者驗證模...