TIDB 数据分片一些疑问

看了一下官方文档,TiKV 自动将底层数据按照 Key 的 Range 进行分片,以 Region 为单位,将数据分散在集群中所有的节点上,一个 Region 的数据会保存多个副本,一个 Region 的多个 Replica 会保存在不同的节点上,构成一个 Raft Group。

那我理解的就是,比如99万数据过来,TIKV把数据按Range进行分片,分别分配到比如3个节点上,防止100万数据压力都在一个节点上,另外两个节点没东西。比如每个节点都存33万,但是我这里有一个疑问,上面也说了一个 Region有多个副本,副本又在不同的节点,那这个意思不就是 比如一份33万的数据存在A节点上,另外2个副本存在B C节点上,另一份33万数据存在B节点上,这份数据的副本又存在A C两个节点上,这样的话每个节点都还是存了99万(一份33万数据,两份BC 节点的副本,加起来就是33+33+33=99W) 的数据呀,每个节点压力都没有减轻呀,哪里理解错了呢? 还有另外一个疑问TIKV存储模型是Key-Value 模型,mysql存储模型是什么呢,这个没有查到,还希望大佬们解答下这两个疑问,感谢

每个region会有leader分布在三个节点上,查询的时候就会在3个节点上查询不同的3个33万数据,不是分摊压力了么?

写入是基于LEADER进行写入,三个节点有不同的LEADER写入压力分担了呀,同时读取时也可以读取FOLLWER来分担读压力

你理解没错,3tik默认3副本就是99万数据过来每个tikv都存一份,默认配置下读写只访问leader的那个region,那读写负载还是能分摊在3个节点上

有leader节点和follwer节点之分。leader的数据可以读写,follwer只读查询

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。