MySQL服務的構成(二)

2022-07-21 18:54:12 字數 1641 閱讀 6339

這裡的例項不是類產生的例項物件,而是linux系統下的一種機制

1.mysql的後台程序+執行緒+預分配的記憶體結構。

2.mysql在啟動的過程中會啟動後台守護程序,並生成工作執行緒,預分配記憶體結構供mysql處理資料使用

2.1 連線層

提供鏈結協議(socket,tcp/ip) #這裡的socket也不是網路連線的socket,mysql的socket連線只能連線本地

驗證使用者的合法性(使用者名稱,密碼,白名單)

提供乙個專用連線線程(接收sql,返回結果,將sql語句交給sql層繼續處理)

2.2 sql層

接收到sql語句(判斷語法、判斷語義、判斷語句型別[dml、ddl、dcl、dql])

資料庫物件授權檢查

解析sql語句,生成多種執行計畫,mysql沒法直接執行sql語句,必須解析成執行計畫,執行執行計畫,最終生成如何去磁碟找資料的方式

優化器,選擇它認為成本最低的執行計畫

執行器,根據優化器的選,按照優化器建議執行sql語句,得到去哪兒找sql語句需要訪問的資料:a、具體在哪個資料檔案上的哪個資料頁中 b、將以上結果充送給下層繼續處理

接收儲存引擎層的資料,結構化成表的形式,通過連線層提供的專用線程,將表資料返回給使用者

提供查詢快取,快取之前查詢的資料,假如查詢的表是乙個經常變動的表,查詢快取不要設定太大, query_cache使用memcached或redis代替

日誌記錄(binlog)

2.3 儲存引擎層

接收上層的執行結果

取出磁碟檔案和相應資料

返回給sql層,結構化之後生成**,由專用線程返回給客戶端

儲存引擎用於:

儲存資料(將sql語句做的修改轉儲到磁碟上)

檢索資料(把存進去的資料在提取出來)

雙層處理 :

上層包括sql解析器和優化器

下層包含一組儲存引擎

sql層不依賴於儲存引擎:

引擎不影響sql處理

也有一些例外的情況

依賴於儲存引擎的功能:

儲存介質

事物功能

鎖定備份和恢復

優化特殊功能全文檢索

引用完整性

空間資料處理

接收到sql語句,語法判斷

判斷語義(判斷語句型別:dml,ddl,dcl,dql)

解析sql語句,生成多種執行計畫

優化器,選擇它認為成本最低的執行計畫(通俗講就是選擇速度快,消耗低的sql語句型別)

執行器根據優化器的選擇,按照優化器建議執行sql語句,得到去哪兒找sql語句需要訪問的資料

1.具體:在哪個資料檔案上的哪個資料頁中

2.將以上結果充送給下層繼續處理

接收儲存引擎層的資料,結構化成表的形式,通過連線層提供的專用線程

提供查詢快取

1.query_cache使用memcached或redis代替

日誌記錄(binlog)

mysql的伺服器構成

這裡的例項不是類產生的例項物件,而是linux系統下的一種機制 連線層1.提供鏈結協議 socket,tcp ip 這裡的socket也不是網路連線的socket,mysql的socket連線只能連線本地 2.驗證使用者的合法性 使用者名稱,密碼,白名單 3.提供乙個專用連線線程 接收sql,返回結...

BLE GATT服務構成

最上層協議為profile,profile 中由多個 server 組成,而 server 由0 或多個 include 和至少乙個 characteristic 組成。服務是指一系列由資料和相關行為組成的集合,為了去完成某個特定的功能或者特性。而乙個服務可以包含引用服務即 include 強制性和...

mysql 表 區 塊 頁 mysql的伺服器構成

什麼是例項 這裡的例項不是類產生的例項物件,而是linux系統下的一種機制 1.mysql的後台程序 執行緒 預分配的記憶體結構。2.mysql在啟動的過程中會啟動後台守護程序,並生成工作執行緒,預分配記憶體結構供mysql處理資料使用。mysql三層構成 連線層1.提供鏈結協議 socket,tc...