Postgres中每个事务可能有多个连接吗? Golang的用法
我相信交易不需要。
但是,如果多想 - 你可以做一个临时表,有几个程序填充它,然后在交易通过使用这样的传输大量数据“从选择插入”
谢谢。我也想过了。但为什么你认为这个交易不需要? 按要求如果进程在某一点失败,我们应该得到数据库在以前的条件。 – MasterJ
我假定您对下载的数据执行必要的检查不在业务逻辑层或阶段表中,然后在事务之外加载它们。 在任何情况下,大量数据的长时间运行事务都会导致性能DBMS的降级。 –
你可以尝试玩水平的绝缘。 1.选择所需的连接数(线程数)。将它们设置为隔离级别“阅读未提交”[link](https://www.postgresql.org/docs/9.6/static/transaction-iso.html)以查看其他主题中所做的更改 2.在每个他们开始一个事务 3.当线程完成加载数据时,它必须等待其他事务并且没有提交事务 4.当所有线程完成时 - 在所有线程上执行提交。 在所有线程的线程回滚更改之一出现SQL错误的情况下。 –
我不认为是可能通过不同的连接共享交易。请更好地解释你想做什么,也许增加一个例子,以便于理解。 –
我有一个golang命令,用于分析一组csv文件并在数据库中填充相应的表。这些文件非常大。解析器逐行读取文件并将它们放入通道。四个goroutines从一个通道获取这些结果并生成Exec()。如果我做db.Exec()整个过程需要25分钟,如果tx.Exec()超过4小时。 – MasterJ
此外,我无法在不同的事务中执行不同的文件,因为处理当前文件必须看到以前文件所做的更改。 (Postgres不支持READ UNCOMMITED)作为整个过程的结果,我只能使用一个连接。 – MasterJ