首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于PostgreSQL表来说,多大才算太大?

对于PostgreSQL表来说,多大才算太大?
EN

Stack Overflow用户
提问于 2014-02-19 05:45:40
回答 2查看 120K关注 0票数 178

我正在为我的公司设计一个RoR项目,我们的开发团队已经遇到了一些关于设计的争论,特别是数据库。

我们有一个名为Message的模型需要持久化。这是一个非常非常小的模型,除了id之外只有三个db列,但是当我们投入生产时,可能会有很多这样的模型。我们每天看到多达一百万次的插入。模型将仅通过其上的两个外键进行搜索,这两个外键可以被索引。同样,这些模型永远不会被删除,但我们也不需要在它们大约三个月大的时候保留它们。

所以,我们想知道的是,在Postgres中实现这个表是否会带来严重的性能问题?有没有人有过使用大型SQL数据库的经验,可以告诉我们这是否会是一个问题?如果是这样的话,我们应该选择什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-19 06:02:47

每个表的行数本身并不是问题。

因此,粗略地说,每天100万行,持续90天,相当于9000万行。我看不出Postgres不能处理这件事,因为我不知道你正在做什么的所有细节。

根据您的数据分布情况,您可以混合使用索引、过滤索引和某种类型的表分区,以便在看到可能存在或不存在的性能问题时加快速度。据我所知,您的问题在任何其他RDMS上都是一样的。如果你只需要在一个过程中进行3个月的数据设计来修剪掉你不再需要的数据。这样,表上的数据量将保持一致。你很幸运,你知道会有多少数据存在,测试一下你的数据量,看看你能得到什么。测试一个包含9000万行的表可能非常简单:

代码语言:javascript
复制
select x,1 as c2,2 as c3
from generate_series(1,90000000) x;

https://wiki.postgresql.org/wiki/FAQ

代码语言:javascript
复制
Limit   Value
Maximum Database Size       Unlimited
Maximum Table Size          32 TB
Maximum Row Size            1.6 TB
Maximum Field Size          1 GB
Maximum Rows per Table      Unlimited
Maximum Columns per Table   250 - 1600 depending on column types
Maximum Indexes per Table   Unlimited
票数 144
EN

Stack Overflow用户

发布于 2016-02-22 04:21:10

另一种在行数大于1亿行的表上显着提高查询速度的方法是在非工作时间对查询中最常用的索引上的表进行集群。我们有一个超过2.18亿行的表,并发现性能提高了30倍。

此外,对于非常大的表,在外键上创建索引也是一个好主意。

编辑:来自评论:

示例:

在本例中,我引用的表名为

  1. 查询中最常用的索引是(bankid,record_date)

下面是你的一步一步:

  1. psql -c "drop index investment_bankid_rec_dt_idx;“dbname
  2. psql -c "create index investment_bankid_rec_dt_idx on investment(bankid,record_date);"
  3. psql -c”investment;"
  4. vacuumdb -c investment_bankid_rec_dt_idx on ccbank -d -z -v -t investment

因此,在第一步和第二步中,我们删除索引并重新创建它。

票数 84
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21866113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档