explain analyze分析tidb cpu 内存直接打满

cpu 8核
内存32g
数据集在2亿条左右
执行一条select count(*) num,imei from test group by imei order by num desc
cpu和内存居高不下
想请教是否是版本(V6.1.0)的问题还是使用的问题

:thinking: imei 的分辨率是多少? 发下执行计划吧。
explain analyze 相当于执行了 SQL

去掉order by看看

从分布式计算原理上分析,tikv进行聚合计算,每个tikv节点将自身计算结果给到tidb节点。tidb节点进行汇总计算,排序。所以应该是不会有任何改善。这应该完全由imei的离散度决定。离散度越大,tidb节点的排序消耗越大。离散读越小,tidb节点的消耗越小。

你这数据量很大吧?还要排序

这个加索引速度就快了

把排序干掉 order by null , 外面自己排序去 , imei 加索引了么 , 没有就加上

加了索引的,现在直接把服务跑挂


执行计划中还是用到tiflash的方式,直接跑服务都挂掉

cpu 8核
内存32g
数据集在2亿条左右
执行一条select count(*),imei from test group by imei
这样跑 imei 建索引

只要不嫌慢,不妨试下:
set tidb_distsql_scan_concurrency=3;
看执行计划是否生效:
explain select /+ stream_agg() / count() num,imei from test group by imei order by num desc;
执行:
explain analyze select /
+ stream_agg() / count() num,imei from test group by imei order by num desc;

我帮他解决了这个问题 这个老师把tidb pd tikv部署在同一台服务器内 还另外加了tifalsh。 系统资源不够了。已经让他重新部署了 。每个组件独立部署。

2 个赞

:+1: :+1: :+1: