我什么时候应该使用postgresql 10声明性分区函数?

时间:2018-02-26 05:52:20

标签: postgresql partitioning

official explain是: 只有当一张桌子非常大时,这些好处通常才有价值。表从分区中受益的确切点取决于应用程序,但经验法则是表的大小应超过数据库服务器的物理内存。

当桌子很大的时候?如何判断一张桌子是非常大的? 经验法则是表的大小应该超过数据库服务器的物理内存?这句话是什么意思?

1 个答案:

答案 0 :(得分:2)

表分区(不限于Postgres)的典型用例是:

清理数据

如果需要从大型表中删除可由单个分区识别的行。

在这种情况下,drop partition比使用delete更快批次。典型的用例是在时间跨度(周,月,年)上的范围分区表

改善查询

如果您使用的所有(或几乎所有)查询都在分区键上包含条件。

一个典型的用例是分区"命令"例如表格国家和所有查询都会涉及where country_code = 'de'或类似的条件。然而,与非分区表上的查询相比,查询(包括分区键)将会更慢。

什么是"大"?这在很大程度上取决于您的硬件和系统。但我不会考虑一个行数少于1亿行的表格#34;大而且#34;索引(包括部分索引)可以让你在Postgres中走得更远。

注意Postgres 10分区仍然严重受限,例如Oracle或SQL Server。其中一个最大的限制是缺乏对外键和全局索引的支持(​​即确保所有分区的唯一性的主键)。因此,如果您需要,分区不适合您。