iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0

TiDB裡頭的TiDB,聽起來有點饒舌,為了避免混淆,後面會加個server來做區別。TiDB server主要功能是負責SQL層的部分。
https://ithelp.ithome.com.tw/upload/images/20210831/20113220kPkUWlpEFY.png

引用pingcap官網架構圖


其結構主要可以分為兩部分,首先是Protocol Layer,負責解析MySQL協議,以及最終將查詢結果回傳到使用者手中。TiDB支持MySQL大部分語法的特點,對於原本就使用MySQL的使用者來說十分親切,替換資料庫基本上可以做到無痛轉移。

第二個部分則是SQL Layer,首先將語法解析成AST樹,簡單來說就是將語法中COLUMN,FROM,WHERE拆解成樹狀結構,優化後產生執行計畫然後透過DistSQL API傳遞給TIKV,處理完成後再將結果拋回Protocol Layer。優化器分為邏輯優化與物理優化兩種,邏輯優化會依據TIDB實作的優化規則分析語法。例如語法中有Group By,如果Group By的欄位是Unique key,就不需做聚合。除此之外還有許多已經實作的優化規則,如OUTER JOIN,Max/Min,Subquery等等。而物理優化則決定哪些計算該在TiDB還是TiKV做,該用什麼index。
舉例來說

Select sum(count(1)) from table where name = 'TIDB'

物理優化會決定這些資料該從每個TiKV node 做完count之後再回到TiDB做sum的動作。接著交給Executor執行。

另外TiDB本身無法做到負載平衡,但是可以在前面加上Load Balancer如F5等等,達到負載平衡的目的。


上一篇
Day 4 - TiDB架構說明
下一篇
Day 6 - TiKV架構
系列文
TiDB學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言