目錄
1. TiDB Server架構
2. sql語句的解析和編譯
2.1 Parse
?編輯?2.2 compile
3. 行轉化為KV對(聚簇表)
?編輯4. SQL 讀寫相關模塊
4.1 DistSQL(復雜查詢)
4.2 KV(簡單查詢)
5. 在線DDL相關模塊
6. GC機制與相關模塊
7. TiDB Server的緩存
8. 熱點小表緩存
9. 總結
1. TiDB Server架構
- protocol layer:處理客戶端的連接
- Parse、Compile:負責sql解析,生成sql執行計劃,生成sql執行計劃后,Excutor、DistSQL、KV分批的執行sql的執行計劃
- Transaction、KV:負責事務相關執行
- PD client:負責與PD,TSO是通過PD Client去和PD進行交互得到
- TiKV Client:負責與TiKV的交互,所有的sql請求都是通過TiKV Client去對TiKV進行交互
- schema、worker、start job:主要負責online DDL,不會阻塞讀寫
- memBuffer:負責緩存讀出來的數據及元數據,登錄的認證信息,統計信息等
TiDB Server 主要功能
- 處理客戶端的連接(protocol layer)
- SQL語句的解析和編譯(Parse、Compile)
- 關系型數據與 KV 的轉化
- SQL語句的執行(Excutor)
- Online DDL 的執行(schema load、worker、start job)
- 垃圾回收(GC)
- 熱點小表緩存 V6.0(cache table)
2. sql語句的解析和編譯
2.1 Parse
?2.2 compile
3. 行轉化為KV對(聚簇表)
表ID+主鍵值為KEY,行里面其他值作為Value,存放在region里面
當一個region的大小達到144M時就分裂為兩個region,以region為單位就可以分布式的存在各個TiKV Node
4. SQL 讀寫相關模塊
4.1 DistSQL(復雜查詢)
執行計劃分為兩種,第一種是較為復雜的查詢,比如join、嵌套查詢等等,為了避免復雜查詢對TiKV存取耦合性高,把TiKV請求封裝起來提供一個簡單的select方法變為一個一個單表操作的計算任務的組合發送給TiKV
4.2 KV(簡單查詢)
比如主鍵、唯一鍵等值查詢
DistSQL和KV都會經過TiKV Client發送給TiKV集群
transaction提交會向PD獲取一個TSO?
5. 在線DDL相關模塊
同一時間只能有一個TiDB Server(owner)做DDL操作
- start job:接收DDL語句,接收后會放在TiKV一個隊列中
- wokrer:owner中的worker模塊去取job queue中第一個job然后執行,執行完后把該job放在history queue中,然后再去取下一個job。每個owner有任期,任期結束后會選舉新的owner
- schema load:TiDB Server成為owner后,將最新的表schema信息同步到內部的緩存中,wokrer根據這些信息去執行job queue中的job
job放在TiKV中持久化存儲
6. GC機制與相關模塊
- 其中一臺TiDB Server是GC leader
- 假如現在是14:00,safe_point=10:00,那么14:00到10:00的歷史數據是保留的,10:00之前的GC就回收
- GC每10分鐘觸發一次(GC life time) ,默認值
7. TiDB Server的緩存
TiDB Server 緩存組成
- SQL 結果
- 線程緩存
- 元數據,統計信息
TiDB Server 緩存管理
- tidb_mem _quota_query(控制每條查詢默認使用的緩存)
- oom-action(當查詢使用的緩存超過了tidb_mem _quota_query值的處理操作,記錄到日志或者報錯)
8. 熱點小表緩存
- 表的數據量不大
- 只讀表或者修改不頻繁的表
- 表的訪問很頻繁
alter table users CACHE;
tidb table cache lease = 5,默認值5秒,在5秒內都不能修改這張表,5秒后可以修改,并且修改是在TiKV中,不管在5秒內還是5秒后都可以讀取,5秒內在cache table中讀取,5秒后在Tikv中讀取,當修改完成后,重新refresh到cache table中
熱點小表緩存-應用
- TiDB 對于每張緩存表的大小限制為 64 MB
- 適用于查詢頻繁、數據量不大、極少修改的場景
- 在租約(tidb_table_cache_lease)時間內,寫操作會被阻塞
- 當租約到期(tidb table cache lease)時,讀性能會下降
- 不支持對緩存表直接做 DDL 操作,需要先關閉
- 對于表加載較慢或者極少修改的表,可以適當延長 tidb table cache lease 保持讀性能穩定
9. 總結
- TiDB Server 的整體架構
- TiDB Server 的主要功能
- TiDB Server 的進程與緩存?
?來自TiDB官方資料