在MemSQL中查询超过10亿行的分组依据

在MemSQL中查询超过10亿行的分组依据,sql,bigdata,database-performance,singlestore,Sql,Bigdata,Database Performance,Singlestore,我有一个有13亿行的表,MemSQL,columnstore模式。我需要在3个字段id1、id2和文本上查询GROUPBY,并获取每个3元组的最新记录。该表通过安装在EFS文件夹上的管道填充。目前,它有大约200k个csv文件,每个文件2MB 我需要帮助为这个案例编写一个优化的查询,或者是否可以通过其他方式完成 编辑:我在网上找不到任何博客/帮助,他们中的大多数都谈到了涉及创建额外表的解决方案,这对我来说是不可能的,因为在这种情况下,内存占用非常大 下面这样的操作不起作用,导致我的5节点集群崩溃

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

我需要帮助为这个案例编写一个优化的查询,或者是否可以通过其他方式完成

编辑:我在网上找不到任何博客/帮助,他们中的大多数都谈到了涉及创建额外表的解决方案,这对我来说是不可能的,因为在这种情况下,内存占用非常大

下面这样的操作不起作用,导致我的5节点集群崩溃:


按id1、id2、field1从表1组中选择maxeventTime这里有几个注意事项。 1 columnstore表的切分键是什么? 2您使用的是最新版本的MemSQL 6.5吗? 3您是否查阅了有关优化表数据结构的资源

确保columnstore中所有查询的公共列都是键,以改进段消除。 如果数据是按顺序插入的,比如时间戳,最好将该列放在columnstore键的第一位,以最小化后台合并过程的工作量。 如果复合键的一个键中有许多不同的值,请将其放在最后。将清晰度较低的关键部分放在第一位,以增加片段消除将影响后续列的可能性

另外,如果运行,会有帮助 解释按id1、id2、field1从表1组中选择maxeventTime;
这样我们就可以看到解释计划了。

这需要很长时间,因为它需要对数据库进行适当的设计。因此,您必须选择shard键作为这三列id1、id2和field1。我建议对该查询使用列存储而不是行存储。

显示您的重试代码。@R.García问题更多的是如何对这样多的行进行分组,而不是如何编写查询。您认为id1、id2、field1从table1组中选择maxeventTime这样的详细信息会有所帮助吗?一点也不。@umeshksingla-这个问题有些开放性,需要“推荐”。@Andrew你能帮我提供更多吗?@umeshksingla-架构详细信息,包括索引详细信息、不适合你的查询的查询计划,说明为什么不适合。e、 g.提供细节。在13亿条记录中,有多少个唯一的元组?数据直方图信息也有助于理解更好的选项。