空region数比较大,这个有影响吗,一般是什么情况下,会产生大量的空region

【 TiDB 使用环境】生产环境
【 TiDB 版本】主库集群:v6.5.0 从库集群:v6.1.5
【复现路径】空region数比较大,这个有影响吗,一般是什么情况下,会产生大量的空region
【遇到的问题:问题现象及影响】上游的主库集群的empty region就比较少,下游的从库集群却比较多。正常情况下,主集群上的所有dml操作,都会同步到下游。

上游主库集群:

下游从库集群:

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

group by下空region 按表名和大小排序看看有什么规律

1 个赞

是查看哪张表,TIKV_STORE_STATUS?

CREATE TABLE TIKV_REGION_STATUS (
REGION_ID bigint(21) DEFAULT NULL,
START_KEY text DEFAULT NULL,
END_KEY text DEFAULT NULL,
TABLE_ID bigint(21) DEFAULT NULL,
DB_NAME varchar(64) DEFAULT NULL,
TABLE_NAME varchar(64) DEFAULT NULL,
IS_INDEX tinyint(1) NOT NULL DEFAULT ‘0’,
INDEX_ID bigint(21) DEFAULT NULL,
INDEX_NAME varchar(64) DEFAULT NULL,
EPOCH_CONF_VER bigint(21) DEFAULT NULL,
EPOCH_VERSION bigint(21) DEFAULT NULL,
WRITTEN_BYTES bigint(21) DEFAULT NULL,
READ_BYTES bigint(21) DEFAULT NULL,
APPROXIMATE_SIZE bigint(21) DEFAULT NULL,
APPROXIMATE_KEYS bigint(21) DEFAULT NULL,
REPLICATIONSTATUS_STATE varchar(64) DEFAULT NULL,
REPLICATIONSTATUS_STATEID bigint(21) DEFAULT NULL
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;

大佬,是这张表吗?

TIKV_REGION_STATUS 对group by DB_NAME, TABLE_NAME 看看 APPROXIMATE_SIZE和regions数量


有几张大张的region数量还是比较大的


APPROXIMATE_SIZE的大小情况

sum(APPROXIMATE_SIZE)/count(*) 看看是不是有的表regions数量多又很小

空region合并下吧,来回的raft心跳也浪费资源

默认自动合并,看看 admin show ddl jobs 中 是否有 truncate or drop big table 的操作。

经常有删除操作,导致的?region 自动合并 或分裂。

mark 一下,暂时没遇到过

一般来说是因为分区表。特别是按时间分区的分区表。
有些时间还没到,所以对应的region就没数据,是空的。

然后如果你还在分区表上加了诸如shade_row_id_bits之类的属性,就会产生更多空region。

https://docs.pingcap.com/zh/tidb/stable/table-attributes#使用表属性控制-region-合并

ALTER TABLE t ATTRIBUTES ‘merge_option=deny’;

还有就是通过表属性可以禁止region合并。不过这个比较高级了,一般人不太会设置表属性。
但是可以按这个思路查一查。

这个应该是大量的增删操作引起的。
会自动合并

空region一般上因为,region配置参数设置过大,尽管region有数据依然认为是空region.还有就是做了大批量的数据删除造成了空的region。空region会造成region重新负载,做数据迁移,region合并等,所以会影响服务性能。比如:增大cpu,内存,io,带宽的消耗

1 个赞

我也这样认为。

批量删除了应该

要进行合并,不合并浪费空间吧

之前好像有相似帖子
情况如下:

  1. 创建空分区表
  2. 小表 频繁 truncate 或者 drop