我之前一般都是开事务的,但是后来发现其实大多数情况下,业务需求并不需要保证 Repetable Read 。MySQL RR 级别下,只读操作不开启事务,可以看成效果和 RC 级别一样吗?
1
kingcanfish 2022-03-08 23:36:52 +08:00
只读操作是指 mysql 所有的数据都是只读的 还是指 单个业务只读?前者的话当然可以不需要 后者的话 不行 你还要保证其他 业务的操作 不对当前读操作造成影响
|
2
visitant 2022-03-09 02:42:01 +08:00
这要看具体的业务场景了,这种问题肯定是由业务决定
|
3
wangyu17455 2022-03-09 03:11:21 +08:00 via Android
不开的话,一条 sql 一个事务会不会影响性能?不是很懂
|
4
jorneyr 2022-03-09 07:43:50 +08:00
一次执行 100 条 select 开启事务和不开启事务效率差别还是比较大的,写程序测试过。
|
6
simonlu9 2022-03-09 09:02:16 +08:00 1
读也是有开事务的,只是 mysql 默认是 autocommit,你不需要手动标记事务开始与结束而已
|
7
yibo2018 2022-03-09 10:34:44 +08:00
@simonlu9 可重复读的事务级别下,读没有事务好吧,除非你加上 for update 这种 X 锁,或者 S 锁
update 才会默认 autocommit |