为了账号安全,请及时绑定邮箱和手机立即绑定

多线程数据库事务通过连接池线程安全吗?

多线程数据库事务通过连接池线程安全吗?

哔哔one 2022-07-27 20:50:52
示例场景:在java中使用线程池,其中每个线程从连接池中获取一个新连接,然后所有线程继续并行执行一些数据库事务。例如将 100 个值插入到同一个表中。这会以某种方式混淆表/数据库,还是完全安全而无需在线程之间进行任何同步?我发现很难找到关于这个主题的可靠信息。从我收集的资料来看,数据库引擎自己处理这个/如果有的话(显然是从 9.X 版开始的 PostgresQL)。有没有写得好的文章进一步解释这一点?额外的问题:当数据库在单个硬盘上运行时,是否有必要使用并行事务?
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

只要数据库本身符合ACID就可以了(尽管有时有人会在一些非常奇怪的情况下发现错误)。

对于额外的问题:对于 PostgreSQL,只要您有时间收集并发事务(增加commit_delay的值),它就完全有意义,这有助于将磁盘 I/O 组合成批处理。还有其他用于事务吞吐量调整的参数,如果D urability 是您的主要关注点之一,则其中大多数参数可能非常危险。

另外,请记住,数据库客户端还需要在数据库调用之间做一些工作,当按顺序执行时,只会增加数据库的空闲时间。因此,即使在这里,并行性也会有所帮助(只要您有实际资源(CPU,...)。


查看完整回答
反对 回复 2022-07-27
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信