我正在尝试在我的生产箱上的表格上创建唯一索引。为此:
在我的生产数据库(即Postgres)上执行以下命令
Create UNIQUE INDEX CONCURRENTLY idx_id_unique on TABLE1(COLUMN1)
这是抛出错误(一段时间后):
2014-10-07 20:46:49.056 EDT ERROR:由于语句超时而取消声明
2014-10-07 20:46:49.056 EDT声明:在TABLE1(COLUMN1)上同时创建唯一索引idx_id_unique
我的问题是:
答案 0 :(得分:0)
这种超时失败的可能原因是什么?注意:作为 这是生产数据库服务器,我们有数千个 同时运行的查询/事务,所以这个CREATE INDEX .... 将需要大量的时间。但是,仍然会这个查询 抛出超时异常?
嗯,它告诉你:cancelling statement due to statement timeout
。所以,是的。
- POSTGRES是否会同时为CREATE UNIQUE INDEX抛出语句超时错误?由于此查询需要多个小时才能完成大型表格。
醇>
是的,它只是告诉过你。
- 可能的解决办法是什么?
醇>
增加创建索引的会话的语句超时限制?
编辑:添加手册链接
有关statement_timeout
的详细信息,请参阅手册:http://www.postgresql.org/docs/current/static/runtime-config-client.html#GUC-STATEMENT-TIMEOUT
同样如何设置配置设置:http://www.postgresql.org/docs/current/static/sql-set.html
我对您正在使用的这个TransactionTemplate事物一无所知,但谷歌建议它有文档。大概有一些方法可以通过它发出原始SQL,如果没有其他的话。
顺便说一句,如果您:
,您会发现您的开发更容易