Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在Postgres中,每个事务是否可能有多个连接?戈朗用法_Postgresql_Go_Transactions - Fatal编程技术网

Postgresql 在Postgres中,每个事务是否可能有多个连接?戈朗用法

Postgresql 在Postgres中,每个事务是否可能有多个连接?戈朗用法,postgresql,go,transactions,Postgresql,Go,Transactions,我需要使用多个连接同时填充Postgres中的表,但要在单个事务的范围内。可能吗 我看不出有什么办法可以避免这个瓶颈 谢谢我相信这笔交易不需要进行 但是,如果您非常愿意,您可以创建一个暂存表,用几个例程填充它,然后在事务中使用“从选择插入”来批量传输数据。我认为不可能通过不同的连接共享事务。请更好地解释您想要做什么,也许添加一个示例以使其易于理解。我有一个golang命令,用于解析csv文件集并在数据库中填充适当的表。这些文件很大。解析器逐行读取文件并将其放入通道。四个goroutine从一个通

我需要使用多个连接同时填充Postgres中的表,但要在单个事务的范围内。可能吗

我看不出有什么办法可以避免这个瓶颈


谢谢

我相信这笔交易不需要进行


但是,如果您非常愿意,您可以创建一个暂存表,用几个例程填充它,然后在事务中使用“从选择插入”来批量传输数据。

我认为不可能通过不同的连接共享事务。请更好地解释您想要做什么,也许添加一个示例以使其易于理解。我有一个golang命令,用于解析csv文件集并在数据库中填充适当的表。这些文件很大。解析器逐行读取文件并将其放入通道。四个goroutine从一个通道获取这些结果并生成Exec()。如果我执行db.Exec(),整个过程需要25分钟,如果tx.Exec()超过4小时。此外,我不能在不同的事务中处理不同的文件,因为处理当前文件必须看到以前文件所做的更改。(Postgres不支持READ Uncommitted)因此在整个过程中,我只能使用一个连接。谢谢。我也想过。但为什么你认为交易不需要?根据要求,如果流程在某一点上失败,我们应该在前面的条件下获取数据库。我假设您对下载的数据执行必要的检查,这些数据不在业务逻辑层或阶段表中,然后将它们加载到事务之外。在任何情况下,在大量数据上长时间运行事务都会导致DBMS性能下降。您可以尝试使用隔离级别。1.选择所需的连接数(线程数)。将它们设置为隔离级别“readuncommitted”,以查看在另一个线程2中所做的更改。在每种情况下,启动一个事务3。当线程完成加载数据时,它必须等待其他线程,并且没有提交事务4。当所有线程完成时-在所有线程上执行提交。如果其中一个线程发生SQL错误,则回滚对所有线程的更改。