gpt4 book ai didi

postgresql - Postgres分区?

转载 作者:行者123 更新时间:2023-11-29 11:39:07 25 4
gpt4 key购买 nike

我的软件每 30 分钟运行一次 cronjob,从 Google Analytics/社交网络中提取数据并将结果插入 Postgres 数据库。

数据如下所示:

url text NOT NULL,    
rangeStart timestamp NOT NULL,
rangeEnd timestamp NOT NULL,
createdAt timestamp DEFAULT now() NOT NULL,
...
(various integer columns)

由于一个查询返回 10000 多个项目,将这些数据存储在单个表中显然不是一个好主意。按照这个速度,cronjob 每天将生成大约 480,000 条记录,每月生成大约 1450 万条记录。

我认为解决方案是使用多个表,例如我可以使用一个特定的表来存储给定月份生成的数据:stats_2015_09、stats_2015_10、stats_2015_11 等。

我知道 Postgres 支持表分区。但是,我是这个概念的新手,所以我不确定最好的方法是什么。在这种情况下我需要分区,还是应该手动创建这些表?或者有更好的解决方案?

稍后将以各种方式查询数据,并且这些查询预计会运行得很快。

编辑:

如果我最终有 12-14 个表,每个表存储 10-20 百万行,Postgres 应该仍然能够快速运行 select 语句,对吗?插入不必非常快。

最佳答案

分区在各种情况下都是一个好主意。我想到的两个是:

  • 您的查询有一个 WHERE 子句,可以很容易地映射到一个或几个分区。
  • 您想要一种快速删除历史数据的方法(删除分区比删除记录更快)。

如果不了解您要运行的查询类型,就很难说分区是否是个好主意。

我想我可以说将数据拆分到不同的表中是一个的想法,因为它是维护的噩梦:

  • 表中不能有外键引用。
  • 跨多个表的查询很麻烦,所以简单的问题很难回答。
  • 维护表变成了一场噩梦(添加/删除列)。
  • 如果您的用户具有不同的角色,则必须谨慎维护权限。

无论如何,从 Postgres 的分区文档开始,它是 here .我应该注意到 Postgres 的实现比其他数据库更笨拙,因此您可能需要查看 MySQL 或 SQL Server 的文档以了解它在做什么。

关于postgresql - Postgres分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32796982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com