我打算按小时分区来存储1周的数据。每个分区将有2500万条记录(100万组每组产生25条记录)。我可以在30毫秒内为一组3到4个分区运行SELECT查询。
我的问题是: 使用数据创建这些分区需要花费大量时间。那么,我正在寻找专家知识来预测,查询170个分区需要多少时间?由于并行处理会有好处吗?
另一个问题是:预计表中约有42亿条记录。到目前为止我尝试了1.5亿条记录。进行得顺利。 POSTGRESQL数据库可以容纳近420万条记录吗?
答案 0 :(得分:1)
这些事情很难预测。
分区的创建将有多大帮助在很大程度上取决于查询优化器在规划查询期间排除分区的能力。查看查询的explain输出,以查看它是访问所有分区还是仅访问子集。如果它可以排除许多分区,这将使查询保持快速。
要从并行处理中获得最佳结果,您需要使用版本10.并行表扫描不需要分区,只需要足够大的表。请参阅配置参数min_parallel_table_scan_size
有关并行查询的详细信息,请阅读this。
Postgresql可以轻松保存42亿行。每个表的行数不受限制,表大小限制为32 TB,但是当您进行分区时,您将不会遇到数据库大小也没有限制。它的可用性在很大程度上取决于您的硬件查询和正确配置postgresql。