有时候,我们会看到代码里面,有如下语句:
@Transactional(ReadOnly=true)
是不是没有用处呢?
其实是有用处的,mysql支持只读事务的。
只读事务内,不能增加、修改、删除内容,否则报Cannot execute statement in a READ ONLY transaction。
只读事务内,只能读取到执行时间点前的内容,期间修改的内容不能读取到。
只读事务作为ORM框架优化执行的一个暗号,比如放弃加锁,或者flush never。
mysql5.6验证过程如下:
1. 建表
create table test(
id int not null default 0,
name varchar(10) not null default ”
) engine=innodb default charset=utf8;
insert into test values (1,’zhangsan’);
2. 开启只读事务
mysql> start transaction read only;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test where id=1;
+—-+———-+
| id | name |
+—-+———-+
| 1 | zhangsan |
+—-+———-+
1 row in set