gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:45:17 25 4
gpt4 key购买 nike

示例场景:

在 Java 中使用线程池,其中每个线程从连接池获取一个新连接,然后所有线程继续并行执行一些数据库事务。例如,将 100 个值插入到同一个表中。

这会不会以某种方式扰乱表/数据库,或者如果线程之间不需要任何类型的同步,它是否完全安全?


我发现很难找到关于这个主题的可靠信息。根据我收集的信息,数据库引擎会自行处理/如果有的话(PostgresQL 显然是从 9.X 版开始)。是否有任何写得很好的文章进一步解释这一点?

额外的问题:当数据库在单个硬盘上运行时,是否还有必要使用并行事务?

最佳答案

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

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

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

关于java - 通过连接池线程安全的多线程数据库事务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55085501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com