可见版本数过多会导致查询变慢么?

【 TiDB 使用环境】生产环境
【 TiDB 版本】v5.1.0
简单的一个聚合查询,可以命中索引,但是查询时间超过1分钟,检查GC设置的是24h。
可见副本过多会导致查询慢么?

select aa,sum(c_amount) from table 
where c_date > '2023-05-01' 
and c_date < '2023-07-01'  
group by aa
order by aa
limit 10

会,从一大串数据中去读取的时候,需要 skip,会减慢get 的速度

有需要的话,可以手动释放版本

1 个赞

还发现一个问题,为什么hashagg了两次 :sweat_smile:

一次 tikv,一次 tidb

每个tikv 节点 group by 拿到分组结果后,汇总到 tidb 在分组排序…

这样才能保证拿到正确的结果… (毕竟数据是分散在各个 tikv 上的,不能一次性完成分组汇总)

那为什么IndexRangeScan一遍,又TableRowIDScan了一遍?

当然会慢了,tidb的mvcc把历史数据和当前数据放一起了

有影响的。

TableRangeScan:带有范围的表数据扫描.
TableRowIDScan:根据上层传递下来的 RowID 扫描表数据。时常在索引读操作后检索符合条件的行。

具体来说就是通过c_date 列上的索引查到具体的rowid,然后,回表通过rowid查数据

1300万数据量加没有gc的数据快不了

回表了

:rofl:强制用了一下TiFlash,1分钟变7秒,看来还是得强制用TiFlash啊

1 个赞

第一次是group by 第二次是limit。hashagg之后立刻topn这就是limit。

:wink:收到,已经决定用tiflash了

2 个赞

如何手动释放版本呢?

逻辑上数据被删除了,这个操作得有

然后通过手动控制 tikv 的 GC 来实现释放

参考文档:
https://docs.pingcap.com/zh/tidb/stable/tikv-control#手动-compact-单个-tikv-的数据

2 个赞

get~ :+1:

:call_me_hand: :call_me_hand: :call_me_hand:

1 个赞

date和aa有组合索引?

没有,只有c_date有索引

1 个赞

尝试组合索引

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