【发布时间】:2015-01-06 13:06:21
【问题描述】:
我正在使用Postgresql 9.1,并且我有一个包含 36 列和近 10 cr 的表。 50 缺少 date time stamp 的记录 在这张表上,我们有一个复合 primary key (DEVICE ID TEXT AND DT_DATETIME timestamp without time zone)
现在要获得查询性能,我们有基于DT_DATETIME 字段的partition 和table day wise。现在在partition 之后,我看到query 数据检索时间比unpartition 表花费的时间更多。我在config 文件中有on 名为constraint_exclusion 的参数。
请提供相同的解决方案。
让我再解释一下 我在 40 GB 大小的表中有 45 天的 GPS 数据。每秒我们插入最少 27 条新记录(一天 250 万条记录)。为了使表格大小在 45 天保持稳定,我们每晚删除第 45 天的数据。现在,由于锁定,这在该表上造成了真空问题。如果我们有分区表,我们可以简单地删除第 45 天的子表。 因此,通过分区,我们希望提高查询性能并解决锁定问题。我们尝试了 pg_repack,但系统负载因子两次增加到 21,我们不得不重新启动服务器。 我们的系统是 24x7 系统,因此没有停机时间。
【问题讨论】:
-
分区通常不会提高查询性能,但会降低它。分区是为其他事情进行的,例如轮换数据。
-
我没有给你@usr你能不能给我发一些同样的链接。
-
你到底有什么不明白的?大多数情况下,分区会使查询变慢。这不是一个性能特性,所以不要期望性能提升。
-
所以会给我一些想法关于上述情况如何使我的查询检索更快。因为我看到可能有人推荐分区来提高查询性能。赞slideshare.net/Sperasoft/…这个
-
这是什么意思“几乎 10 cr. 50 缺少带有日期时间戳的记录”?而且我认为您的主键组合不是一个愉快的搜索解决方案。
标签: performance postgresql select partitioning