DBLink 查询即使在完成后也不会终止

DBLink query doesn't terminate even after it completes

我有一个 Dblink 查询 Amazon RDS (Postgres),它使用来自 Amazon Redshift 集群的行执行 INSERT。 查询在 15/20 分钟后终止,如果不是更多的话,但我可以看到所有行都在几分钟后被插入。 我 运行 通过 JetBrains 的 DataGrip 处理这些查询。

同一连接上的其他一些类似的 dblink,按预期终止。 我看到的唯一区别是 table 的大小,在第一种情况下更大。

所有这些查询都是简单地复制整个 table。差不多像这样:

insert into rds_table(
  select *
  from db_link('foreign_server',
    $REDSHIFT$
      select *
      from redshift_table
    $REDSHIFT$) as table_n(...)
);

其中 "foreign server" 是我与 Redshift 的联系。 我知道查询已完成,因为 rds_table 的行数与 redshift_table.

的行数相同

DataGrip 显示查询仍为 运行ning:

并且在我手动停止查询之前不会让我 运行 其他查询。 如果我这样做,插入的行将保留在数据库中,这意味着事务已经提交。

为什么会这样?是 DataGrip 还是 Postgres 的问题? 我该如何解决?

有没有其他更好的方法可以将数据从 Redshift 迁移到 RDS?

如果并发事务已经可以看到插入的数据,则意味着插入事务和因此 INSERT 语句必须已经完成。

如果 DataGrip 显示语句仍然 运行,那是在骗你。

所以这一定是 DataGrip 错误。