【发布时间】:2021-12-07 17:41:20
【问题描述】:
在过去的几年里,我和我的团队一直在为我们的一个项目使用 crate。我们有一张包含数亿条记录的表,性能是关键。
随着我们在这个项目上开发越来越多的功能,我们遇到了有趣的问题。我们在这个表上有一个标记为“persist_date”的列,这是记录实际保存到表中的时间。这些日期可能并不总是一致,我们的 start_date 可能是 2021-06-21,persist_date 是 2021-10-14。
到目前为止,我们所有的查询都可以轻松地添加针对 start_date 的分区。现在我们遇到了一个问题,需要我们使用非分区列(persist_date)来查询。
据我了解,crateDB 确实非常高效,但仅当您一次查询 1 个特定分区时才可以。我现在的问题是如何在不重复数据的情况下为其他日期列创建分区?除了分区之外还有什么可能有帮助的,比如表的集群方式?
【问题讨论】:
-
请问您的个人分片/分区有多大?没错,CrateDB 将尝试将查询限制在可以保存数据的分区/分片上,即分区值用于过滤掉分片。但是无论如何查询都将以高度并行化的方式完成,并且非分区列上的选择也应该很快。
-
我们的分区目前在“开始日期”按周。在persist_date(非分区列)上搜索了几个星期,我发现查询需要90秒以上,大多数大约30秒。使用分区或查询较小的日期范围后,我会在一秒钟内得到结果。
标签: cratedb