postgresqL的reindex问题

刘炳华 发布于 2012/11/23 22:35
阅读 320
收藏 0
在postgresql数据库中,同时使用index的select和reindex时,产生了死锁。能不能有方法在reindex执行时,不允许其他命令执行?
下面方法能行么?怎么实现?
postgresQL怎么自动实现:
多用户‐〉单用户‐〉执行reindex‐〉多用户‐〉单用户‐〉执行reindex‐〉多用户
主要在于怎么循环?
小弟在这谢谢了,感激不尽!
加载中
0
kenyon_君羊
kenyon_君羊
不清楚你为何经常性地reindex,一般情况下并不需要,除非大量索引页失效。

要实现单用户可以对用户连接属性做设置来实现,但这个情况其他用户连进来会报错。

不妨换个角度,用新的索引名新增一个新的索引,然后去掉老的索引。新建索引的时候适当调整maintance_work_mem和concurrently等参数可加速。

9.3新版本可能会降低锁消耗问题,参考:http://michael.otacoo.com/postgresql-2/postgres-9-3-proposal-reindex-and-cluster-concurrently-reorganize-table-with-low-level-locks/

0
kenyon_君羊
kenyon_君羊
补充一下,建index时select 不会产生锁,你产生的锁应该是DML操作引起的。加concurrently参数建索引可以避免在表上产生DML锁。
返回顶部
顶部