首页 > 解决方案 > 在 MemSQL 中对 1+ 亿行查询 GROUP BY

问题描述

我有一个包含 13 亿行的表(MemSQL,列存储模式)。我需要在 3 个字段(id1、id2、文本)上查询 GROUP BY 并获取每个 3 元组的最新记录。该表通过安装在 EFS 文件夹上的管道填充。目前,它有大约 200k 个 2MB 的 csv 文件。

我需要帮助为这种情况编写优化查询,或者是否可以通过其他方式完成。

编辑:我无法在网上找到任何博客/帮助,他们中的大多数人都在谈论涉及创建额外表的解决方案,这对我来说现在是不可能的(在这种情况下内存使用量非常大)。

像下面这样的东西是行不通的,并且会关闭我的 5 节点集群:

select max(eventTime) from table1 group by id1, id2, field1

标签: sqlbigdatadatabase-performancesinglestore

解决方案


这需要很长时间,因为它需要对数据库进行适当的设计。所以你必须选择分片键作为这三列(id1,id2,field1)。我建议对该查询使用列存储而不是行存储。


推荐阅读