TiDB節點的SQL層,即TiDB Server,它負責將SQL翻譯成Key-Value操作,將其轉發給共用的分布式Key-Value存儲層TiKV,然后組裝TiKV返回的結果,最終將查詢結果返回給客戶端。這一層的節點都是無狀態的,節點本身并不存儲數據,節點之間完全對等。因此很容易實現失敗遷移,從而支持容錯。下圖詳細說明了TiDB SQL層的工作機制。
視頻講解如下 |
---|
【趙渝強老師】TiDB SQL層的工作機制 |
TiDB節點的SQL層主要負責接收并執行客戶端發送的SQL語句,其具體的執行過程如下:
- 首先SQL層會從會話的上下文中判斷該客戶端是否能夠訪問數據庫集群;
- 接下來會將客戶端的SQL語句發送給SQL解析器,SQL解析器負責解析SQL的語法和語義,并生成SQL語法樹發送給邏輯優化器;
- 邏輯優化器負責重寫SQL語句以提高SQL的執行效率,并將生成的邏輯執行計劃發送給物理優化器;
- 物理優化器會根據數據庫的統計信息生成最終的物理執行計劃,并交給本地執行器和分布式執行器;
- 本地執行器負責執行本地SQL,例如查詢本地的緩存表;
- 分布式執行器負責執行分布式SQL查詢TiKV集群中的數據;
- 本地執行器會接收所有查詢得到的數據,并最終將數據通過會話的上下文信息返回給客戶端