region分裂时是否会产生大量磁盘写入?

【 TiDB 版本】
v5.1.2
集群配置,4台tikv

【遇到的问题】
磁盘写入速度较高,是否可能为region分裂导致?

【问题现象及影响】
目前我正在load数据到tidb

我发现存储dump文件的服务器,出口带宽速度为40mb/s
而4台tikv的服务器磁盘写入速度为500mb/s,磁盘读取速度为6mb/s。网络速度上传下载均为700MB/s。
这种比例是否正常?

考虑到我并未提前打散region,是否可能是region不断分裂,导致分裂时产生的大量网络io和磁盘写入呢?

另外如果是region分裂导致,那为何磁盘读取速度才6mb/s?
不应该疯狂读取磁盘再写入来进行region分裂么?

1 个赞

LSM Tree 的特性就是写优化
region 的分裂是通过调度来实现的,调度受 PD 以及 表结构特性设定的影响

至于写入和读取,会有热点情况,说明未能将数据有效的分散到各个 tikv 节点中,这种情况是需要优化的

tikv 之间是通过 raft 来满足一致性的能力,所以 一份数据写入到一个节点之后,会通过raft 传递到其他的节点,对于网络肯定是有要求的

如果是测试 或者 POC 最好按照官网的要求配置的参数来进行,遵循一些规则会少走很多弯路


注:raft 协议 支持奇数, tikv 4个节点不太合适…

2 个赞

region是逻辑概念,和虚拟内存似的,把key空间划分成一段段的,由于数据不断写入,当region内key的大小近似值达到最大参数约束值后就会分裂,而不是分裂后导致写入,分裂后仅是一些管理元数据的变化,不影响下层rocksdb ,另外在写表数据时,还有索引、lock、raft log等数据都要写到磁盘上

2 个赞

4台tikv磁盘io都跑到顶了,没发现特别的热点
目前的服务器是64核512G运存,带宽10G的内网

磁盘io这么高,是受LSM合并影响大一些,还是数据导入影响大一些呢?
tidb能否专门指定某个表来停止自动合并,以此来取的更好的load性能?我看lightning是将整个集群停止对外服务,没有单独作用于某个表的方法

关于4个tikv节点,是因为资源有限,3个节点的话宕1个就丢数据,5个节点的话没机器了

下面是load期间的监控,可以看到load期间合并很频繁

1 个赞

会,会搬运到其他节点,或者合并region,就会有新增和删除的

1 个赞

你说的合理

2 个赞

应该要打散region,这样提高IO性能,这样才能提升导入导出性能

region只是逻辑管理上概念,跟底层文件不是一一对应的。所以分裂合并不会带来大量的磁盘写入。大量的磁盘读写可能是RocksDB本身的compaction产生的。

1 个赞

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