Try Everything Different In My Life.

Spring事务设置read-only在Oracle数据库中不起作用

2019.10.08

在多个SQL读中,我们开启read-only可以提高数据库的性能

为啥要read-only

在一次执行多个读的时候,为了保持数据的一致性我们要开启事务。

e.g 统计报表的时候要执行多个查询,但是没有增删改的操作,但是需要保持数据一致性

为了保持数据一致性我们需要开启事务,但是都是查,所以开启read only的时候

  • 不记录回滚段
  • 不记录回滚日志

问题

在一次项目中开启事务的read only后并没有生效,但是在抛出异常的时候事务是生效启动回滚。

根源

查了一下,是因为Oracle数据库不支持JDBC级别的read only。

Read-only connections are supported by the Oracle server, but not by the Oracle JDBC drivers.

文章链接:Oracle Doc