免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3469 | 回复: 5
打印 上一主题 下一主题

postgresql 分区大问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-16 11:07 |只看该作者 |倒序浏览
大家好:
    在使用分区的时候,在主表以及分区表上都建立主键约束,但是发现各个分区相对独立,只要在不同的分区里面,就可以插入相同的主键值。大家有没有遇到,或者有什么解决方案!

论坛徽章:
0
2 [报告]
发表于 2012-02-16 11:51 |只看该作者
分区表设置触发器行不行?

论坛徽章:
0
3 [报告]
发表于 2012-03-19 22:04 |只看该作者
主键使用序列来实现.应该不会有重复的

论坛徽章:
0
4 [报告]
发表于 2012-03-31 16:12 |只看该作者
可以之间对分区表操作啊

论坛徽章:
0
5 [报告]
发表于 2012-04-02 18:06 |只看该作者
所有分区表使用同一个seq即可,即 CREATE TABLE时 PKid 不要定义成 serial类型而是使用 pkid next(seq)的标准方式

论坛徽章:
0
6 [报告]
发表于 2012-04-08 12:12 |只看该作者
回复 1# leoxu8703


  • 这是PostgreSQL的机制所决定,无法改动。
  • 在实际进行表分区Partitioning时,要指定子表的CHECK约束,最好可以使用经常要进行查询的字段,如:消费记录使用“时间”、地区记录使用“地区”
  • 在为每个表建立主键时可以考虑使用第2点中的CHECK字段加上ID作为主键,这样就可以避免全表的主键冲突
  • 一定要在CHECK字段上建立index
  • postgresql.conf文件的设置

      8.x:constraint_exclusion = on
      9.x:constraint_exclusion = partition
      注意:partition是9.x版本中新加入的操作模式,此参数如果设为on模式,在每次的query中都导致对check约束的检查,这会对性能造成不少的影响;因此9.x中加入了partition模式,它只会在分区表中才会进行check约束的检查

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP