3

R2DBC 如何实现事务处理。

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

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

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

4

1 回答 1

3

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

于 2020-11-07T15:01:02.733 回答