【 TiDB 使用环境】生产环境 【 TiDB 版本】v.5.2.2 【遇到的问题】tidb 集群,3哥小时批量写入数据一次,发现 数据写入的时候 empty region 比较多,两三百个,可以在一个小时内,合并完regin 为啥 批量写入数据会有空region 产生 【复现路径】
做过哪些操作出现的问题`
【问题现象及影响】
tidb 集群,3哥小时批量写入数据一次,发现 数据写入的时候 empty region 比较多,两三百个,可以在一个小时内,合并完regin 为啥 批量写入数据会有空region 产生
【附件】
你好,一般产生大量空region的原因就是大量删除数据,请问您说的“写入”会有这种操作吗
还有一种情况就是建表的时候指定预分region,检查一下“写入”过程中是否有建表,检查建表sql是否有预分region
你好,我这个是批量插入数据,没有删除数据
表是自增ID 按道理是在一个region里面,也不会大量产生空的region 很难理解,每次写入就会这种情况出现要一个小时左右才合并完成
批量写入数据时达到一定量会预先分裂region,导致监控显示有些空region,可以看下写入数据的tidb日志
看表设计的结构,如果是聚簇索引的,会自动的处理 region 的问题
如果是普通的方式,则会按照预设的过程,对region 进行分裂,平衡 tikv 主机对于 Region 的写性能
发一下 建表语句
这个要看一个表结构了 插入的数据 也可以截个图
[quote=“wisdom, post:9, topic:664521, full:true”]
这个要看一个表结构了 插入的数据 也可以截个图
[/quote] 表结构如下
app_ark_day_six_dim_statistics | CREATE TABLE app_ark_day_six_dim_statistics
(
id
bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘主键’,
gmt_create
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
gmt_modify
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’,
level_one_dim_type
bigint(20) NOT NULL COMMENT ‘维度一type’,
level_one_dim_name
varchar(128) NOT NULL COMMENT ‘维度一name’,
level_one_dim_value
varchar(128) NOT NULL COMMENT ‘维度一value’,
level_two_dim_type
bigint(20) NOT NULL COMMENT ‘维度二type’,
level_two_dim_name
varchar(128) NOT NULL COMMENT ‘维度二name’,
level_two_dim_value
varchar(128) NOT NULL COMMENT ‘维度二value’,
level_three_dim_type
bigint(20) NOT NULL COMMENT ‘维度三type’,
level_three_dim_name
varchar(128) NOT NULL COMMENT ‘维度三name’,
level_three_dim_value
varchar(128) NOT NULL COMMENT ‘维度三value’,
level_four_dim_type
bigint(20) NOT NULL COMMENT ‘维度四type’,
level_four_dim_name
varchar(128) NOT NULL COMMENT ‘维度四name’,
level_four_dim_value
varchar(128) NOT NULL COMMENT ‘维度四value’,
level_five_dim_type
bigint(20) NOT NULL COMMENT ‘维度五type’,
level_five_dim_name
varchar(128) NOT NULL COMMENT ‘维度五name’,
level_five_dim_value
varchar(128) NOT NULL COMMENT ‘维度五value’,
level_six_dim_type
bigint(20) NOT NULL COMMENT ‘维度六type’,
level_six_dim_name
varchar(128) NOT NULL COMMENT ‘维度六name’,
level_six_dim_value
varchar(128) NOT NULL COMMENT ‘维度六value’,
statistics_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
metric_type
bigint(20) NOT NULL COMMENT ‘指标类型’,
metric_name
varchar(256) NOT NULL COMMENT ‘指标名称’,
metric_value
bigint(20) NOT NULL COMMENT ‘指标值’,
PRIMARY KEY (id
) /*T![clustered_index] CLUSTERED */,
UNIQUE KEY uniq_app_hyk_behavior_six_dim_statistics_uk
(level_one_dim_type
,level_two_dim_type
,level_three_dim_type
,level_four_dim_type
,level_five_dim_type
,level_six_dim_type
,statistics_time
,metric_type
,level_one_dim_value
(20),level_two_dim_value
(20),level_three_dim_value
(20),level_four_dim_value
(20),level_five_dim_value
(20),level_six_dim_value
(20))
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=9609607110
看批量插入时间的tidb.log 会有提前分裂region的信息,应该还有会有大事务的信息
是提前分裂导致的空region吗
提前分裂是产生一批region,不止是有数据的region分裂,你看下tidb.log
感谢,我分析下看看