天天看點

TiDB架構分析

TiDB有三部分組成:

存儲層:TiKV

計算層:TiDB

排程層:PD(PlaceDriver)存儲中繼資料

存儲層TiKV

1)通過range分區算法将資料分成一個個region;

2)每個region預設有3個副本,一個leader 副本和兩個follower 副本,這些副本分布在不同節點上,通過raft協定保證資料一緻性;

3)如果副本數量發生了變化,pd會及時感覺,做出應對措施;

計算層TiDB

将SQL請求映射成對TiKV的請求

1)一個表有中繼資料、行資料、索引資料 三種資料,都是通過底層的kv來存儲的;

行資料:key=表id_行id,value=[col1,col2,col3,…]

唯一二級索引:key=表id_索引id_索引值,value=行id

普通二級索引:key=表id_索引id_索引值_行id,value=null

比如現在有一個普通二級索引name,一個SQL

select * from table where name=‘xxx’,這樣組成的key=t1_i1_xxx???,但是不知道具體的行id,猜想會将t1_i1_xxx進行編碼,字首相同的都會邏輯存儲在一起。

排程層PD

管理中繼資料