【发布时间】:2019-12-01 08:14:08
【问题描述】:
我有一个 40 GB 磁盘空间的表,大约 500 MM 行。 我正在运行一个查询
select col0 , col1, group_concat('(', col2 , ',' , col4 , ')') as
str from table
group by col0, col1
当我运行查询时,磁盘空间利用率直线上升了 20 倍,并且我的节点空间不足。
如此高的磁盘使用率背后的原因是什么?也许,这可能与 group by 在 mysql 中的工作方式有关
我可以在查询中做些什么不同的事情来获取我正在寻找的数据?
【问题讨论】:
-
我可能会想到两件事,但我不知道是哪一个。一个是分组只占用空间的事实,尤其是在您进行顺序表扫描时。一是默认情况下,大多数客户端库将批量接收结果集。首先是看
EXPLAIN。第二个是查看流数据集是否会减少磁盘负载(如果您在(col0, col1)上有一个合理的索引,我认为这可能是可能的)。但是你没有发布EXPLAIN,没有架构,也没有客户端库/语言,所以.... shrug