PostgreSQL-golang程序导致奇怪的锁

PostgreSQL-golang程序导致奇怪的锁,go,postgresql-11,Go,Postgresql 11,最近,当我们使用Go 1.13.8中的程序,使用标准库sql和pq处理ETL任务时,PostgreSQL 11.7上出现了非常奇怪的锁 ETL任务必须重命名表,但PostgreSQL显示此简单操作等待锁定关系并从PG wiki()中进行选择,PG wiki()应显示阻止过程显示命令“alter table….rename to…”被进程“COPY….to stdout”阻止,但来自完全不同的表 更新:我修改了PG wiki中的查询,它显示阻塞会话实际上在12小时内处于活动状态,尽管最近的COPY

最近,当我们使用Go 1.13.8中的程序,使用标准库sql和pq处理ETL任务时,PostgreSQL 11.7上出现了非常奇怪的锁

ETL任务必须重命名表,但PostgreSQL显示此简单操作等待锁定关系并从PG wiki()中进行选择,PG wiki()应显示阻止过程显示命令“alter table….rename to…”被进程“COPY….to stdout”阻止,但来自完全不同的表

更新:我修改了PG wiki中的查询,它显示阻塞会话实际上在12小时内处于活动状态,尽管最近的COPY命令只运行几分钟,并且来自完全不同的ETL任务

golang库是否可能没有正确关闭会话,并在不同ETL任务的完全不同的运行中重用它?虽然我在任何地方都会延迟db.close()

有时,甚至从某些表中进行的选择似乎也会被其他表上运行的复制命令所阻止。这是通过从PG wiki中选择相同的用于阻止查询来显示的


所有这些东西都来自golang程序。所以,问题可能不在PostgreSQL上,而在golang库中?

是否可能运行COPY语句的事务先前触及了您试图重命名的表,但尚未提交?@a_horse_with_no_name complete命令在本例中不相关。相信我。但你的第二个评论很可能是对的。我修改了select,使其显示锁并阻止会话运行约12小时。我将更新问题。您的更新听起来肯定像您没有正确结束您的交易。无需实际关闭连接,但需要确保事务已提交或回滚。检查查看
pg_stat_activity
中事务中空闲的会话