【发布时间】:2012-10-08 17:32:31
【问题描述】:
我尝试使用外部表来链接 2 个 postgresql 数据库
一切都很好,我可以检索我想要的所有数据
唯一的问题是数据包装器似乎锁定了外部服务器中的表,并且在我对代码进行单元测试时非常烦人
如果我不执行任何选择请求,我可以初始化数据并截断本地服务器中的表和远程服务器中的表 但我执行一个选择语句远程服务器上的截断命令似乎处于死锁状态
你知道我怎样才能避免这个锁吗?
谢谢
[编辑]
我使用这个数据包装器链接 2 个 postgresql 数据库:http://interdbconnect.sourceforge.net/pgsql_fdw/pgsql_fdw-en.html
我在db2中使用db1的table1作为外部表
当我在 db2 的 foreign_table1 中执行选择查询时,db1 中的 table1 有一个 AccessShareLock 查询很简单:select * from foreign_table1
锁永远不会释放,所以当我在单元测试结束时执行截断命令时,会发生冲突,因为截断添加了一个 AccessExclusiveLock
我不知道如何释放第一个 AccessShareLock,但我认为它会由包装器自动完成...
希望有帮助
【问题讨论】:
-
你真的需要提供更多细节。特别是国外服务器是什么?您使用的是什么外国数据包装器?如果它不是来自股票 PostgreSQL 发行版,你从哪里得到它?您正在使用什么查询(请提供代码)?如果远程服务器支持查询日志记录,那么当您使用 fdw 时,远程服务器上会记录哪些查询?