tidb数据量count(*)查询语句过亿数据查询速度优化

现在跑时间是多少?期望时间是多少?

9亿数据在140秒 加 EXPLAIN ANALYZE 快了20秒

大批量查询会导致tikv9002

有更优的解决方案了吗?学习学习

主要是这是要干啥?

楼主的问题,本质上是一个加速count的调优问题。

Count 本身就是暴力扫表,可以使用 tidb_distsql_scan_concurrency 变量加大并发。
TiDB 每次执行查询时,都要访问 TiKV,所以加大并发度需要同时考虑 CPU 和 I/O 资源,避免调整过大占用过多集群资源,影响业务访问。

机器够的话,也可以扩容部署tiflash来处理,这个的速度提升是质的变化。

tiflash吧

不需要,scale-out一个tiflash节点,然后给对应的表增加一个tiflash replica副本就行。

TiFlash最适

什么场景呢?感觉可以把每次统计的结果记录下来,然后下次统计时直接把增量的数量和上一次结果求和,不然每次都统计一遍性能没保证

试试这招吧

tidb 及 mysql 这种有事务的,只能傻傻地去算。不像其他无事务的,直接拿count的值

主键计算

tiflash搞起

tiflash 走起

上tiflash

表没有主键

调了,现在一查就cpu爆了,内存也爆,然后tikv重启

无主键,表不规范,而且不能改

tiflash对资源要求有点高,现在集群就7台服务器而且配置不低,那么高要求的资源有点申请不下来了