连接重用和事务(关系)

Connection-reuse and transactions (relationship)

R2DBC 如何实现事务处理。

据我所知,JDBC一次交易使用一个连接。所以在 Spring MVC 中我们有以下映射:1 个请求:1 个线程:1 个事务:1 个连接。

Webflux 与 R2DBC 的映射是什么? Webflux 是响应式的,那么当我们打开一个事务时,它是否使用一个连接直到事务结束?如果是这样,那么事务就像阻塞操作一样,因为当事务处于活动状态时,没有其他事务可以重用 Spring Webflux 中的连接。

假设我们在 R2DBC 中定义了 10 个连接,10 个 Webflux 请求打开了 10 个长事务。以下所有 Webflux 请求是否会等待这 10 个事务之一的结束,或者多个 Webflux 请求(带有事务)可以并行使用一个连接吗?

R2DBC 仅支持每个连接一个事务。据我所知,主要原因是很多数据库系统只支持每个连接一个事务,所以在一个连接上多路复用事务是不可能的。