健康度显示问题

【 Bug 的影响】
使用 SHOW STATS_HEALTHY where TABLE_NAME = ‘day_partition2’;查看分区表健康度,分区表共732个分区,只显示其中178分区的健康度,其余分区健康度查询不到。
【可能的问题复现步骤】
创建表:

CREATE TABLE `test`.`day_partition2` (
  `oc` varchar(15) NOT NULL,
  `sd` int(11) NOT NULL,
  `ti` varchar(30) NOT NULL,
  `si` varchar(30) NOT NULL,
  `bc` varchar(32) NOT NULL,
  `sn` decimal(18,0) DEFAULT NULL,
  `asn` decimal(18,0) DEFAULT NULL,
  `asnb` decimal(18,0) DEFAULT NULL,
  `sa` decimal(18,6) DEFAULT NULL,
  `sab` decimal(18,6) DEFAULT NULL,
  `sabc` decimal(18,6) DEFAULT NULL,
  `asa` decimal(18,6) DEFAULT NULL,
  `asab` decimal(18,6) DEFAULT NULL,
  `sm` decimal(18,6) DEFAULT NULL,
  `smc` decimal(18,6) DEFAULT NULL,
  `asm` decimal(18,6) DEFAULT NULL,
  `asmc` decimal(18,6) DEFAULT NULL,
  `gp` decimal(18,6) DEFAULT NULL,
  `agp` decimal(18,6) DEFAULT NULL,
  `asrr` decimal(18,6) DEFAULT NULL,
  `asrrc` decimal(18,6) DEFAULT NULL,
  `asrrg` decimal(18,6) DEFAULT NULL,
  `asrrgc` decimal(18,6) DEFAULT NULL,
  `stab` decimal(18,6) DEFAULT NULL,
  `stm` decimal(18,6) DEFAULT NULL,
  `stag` decimal(18,6) DEFAULT NULL,
  `cbn` decimal(18,0) DEFAULT NULL,
  `cabn` decimal(18,0) DEFAULT NULL,
  `cabnb` decimal(18,0) DEFAULT NULL,
  `cssa` decimal(18,6) DEFAULT NULL,
  `cssaba` decimal(18,6) DEFAULT NULL,
  `csabab` decimal(18,6) DEFAULT NULL,
  `cbm` decimal(18,6) DEFAULT NULL,
  `cabm` decimal(18,6) DEFAULT NULL,
  `ts` decimal(18,0) DEFAULT NULL,
  `ii` varchar(32) DEFAULT NULL,
  `in` varchar(64) DEFAULT NULL,
  `bi` varchar(32) DEFAULT NULL,
  `bdi` varchar(32) DEFAULT NULL,
  `k` varchar(8) DEFAULT NULL,
  `ps` varchar(32) DEFAULT NULL,
  `ou` decimal(18,6) DEFAULT NULL,
  PRIMARY KEY (`sd`,`oc`,`ti`,`si`,`bc`) /*T![clustered_index] NONCLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T! SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=4 */
PARTITION BY RANGE (`sd`)
(PARTITION `prt_before` VALUES LESS THAN (20210101),
 PARTITION `prt_20210101` VALUES LESS THAN (20210102),
 PARTITION `prt_20210102` VALUES LESS THAN (20210103),
 PARTITION `prt_20210103` VALUES LESS THAN (20210104),
 PARTITION `prt_20210104` VALUES LESS THAN (20210105),
 PARTITION `prt_20210105` VALUES LESS THAN (20210106),
 PARTITION `prt_20210106` VALUES LESS THAN (20210107),
......
 PARTITION `prt_20221228` VALUES LESS THAN (20221229),
 PARTITION `prt_20221229` VALUES LESS THAN (20221230),
 PARTITION `prt_20221230` VALUES LESS THAN (20221231),
 PARTITION `prt_20221231` VALUES LESS THAN (20230101),
 PARTITION `prt_after` VALUES LESS THAN (MAXVALUE))

全部建表SQL见最后附件。
使用lighting导入约1.8亿数据,backend使用local
【看到的非预期行为】
使用 SHOW STATS_HEALTHY where TABLE_NAME = ‘day_partition2’;查看分区表健康度,分区表共732个分区,只显示其中178分区的健康度,其余分区健康度查询不到。
【期望看到的行为】
使用 SHOW STATS_HEALTHY where TABLE_NAME = ‘day_partition2’;查看分区表健康度,分区表共732个分区,显示732个分区。
【相关组件及具体版本】
tidb 5.4.0
【其他背景信息或者截图】
测试环境规模如下:
image
部署架构如下:
image
建表SQL:create_table.sql (41.0 KB)

1 个赞

analyze table day_partition2;再试试呢

1 个赞

正在尝试,表比较大,时间很长,其实提出这个问题,是因为如我这般粗心的人,扫上一眼看到是100就以为没问题了,没想到还要去核对分区数量,可能这不是个bug,也许是个用户体验问题。

我建了个测试的空表试了下,数量是一点一点增长到732的,我觉得可能是只有第一次检查完健康度之后才能显示。

2 个赞

我等一晚上试试,我这表建了一个月了,始终是170多,估计是导完数之后的analyze因为某种原因失败后,统计信息就没再更新,印象中当时lighting结尾有自动的analyze,都失败了,可能跟我环境有关系。

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