【发布时间】:2016-11-08 14:56:34
【问题描述】:
我需要使用多个连接同时在 Postgres 中填充表,但在单个事务的范围内。有可能吗?
我看不出有什么办法可以避免这个瓶颈。
谢谢
【问题讨论】:
-
我认为不可能通过不同的连接共享事务。请更好地解释您想要做什么,也许添加一个示例以便于理解。
-
我有一个 golang 命令,它解析一组 csv 文件并在数据库中填充适当的表。这些文件很大。 Parser 逐行读取文件并将它们放入通道。四个 goroutine 从一个通道中获取这些结果并执行 Exec()。如果我做 db.Exec() 整个过程需要 25 分钟,如果 tx.Exec() 超过 4 小时。
-
此外,我不能在不同的事务中处理不同的文件,因为处理当前文件必须看到以前文件所做的更改。 (Postgres 不支持 READ UNCOMMITED)因此整个过程我只能使用一个连接。
标签: postgresql go transactions