gpt4 book ai didi

java - 每个连接的 Postgres 并发事务

转载 作者:行者123 更新时间:2023-11-29 12:25:58 24 4
gpt4 key购买 nike

我正在阅读有关每个连接的并发事务数

我遇到了 jdbc.postgresql.org/documentation/91/thread .它说

If a thread attempts to use the connection while another one is using it, it will wait until the other thread has finished its current operation.

所以基于上面如果我有一个连接池 1 个连接(使用 cp03)在一个线程中我做了:

start transaction
Read query
sleep for 2 min
commit transaction

那么在第一个线程完成事务之前,其他线程应该无法运行任何查询...对吗?

但根据我的观察,我能够在第一个线程 hibernate 时让其他线程完成事务

这是为什么呢?我错过了什么?

编辑:CP03配置:

        <property name="hibernate.connection.provider_class" value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider" />                                               
<property name="hibernate.generate_statistics" value="false" />
<property name="hibernate.c3p0.max_size" value="1" />
<property name="hibernate.c3p0.min_size" value="0" />
<property name="hibernate.c3p0.acquire_increment" value="1" />
<property name="hibernate.c3p0.idle_test_period" value="300" />
<property name="hibernate.c3p0.max_statements" value="0" />
<property name="hibernate.c3p0.timeout" value="100" />

最佳答案

这里的关键字是wait。当有锁、wait 并且持有锁的线程进入sleepyield 时会发生什么?现在另一个线程可以使用连接了。

关于java - 每个连接的 Postgres 并发事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36907814/

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