强迫症,事务
事务通过锁来实现原子特性,如果隔离级别不是可重复读以上,select持有的共享锁会在查询结束后释放,因此,是否放在事务中,跟你的隔离级别和业务逻辑有关系,单纯从代码上看,放在一起,是最简单无脑的
如果单纯一个方法,方法里就这些操作,可以把查询的操作 放到事物的前面,但是如果再循环里用事物,而且当中要查询表 然后进行事物插入操作,那这个查询是带事物还是不带事物的好??
错了 应该是事物中有循环插入,并且里面带select
@efreer: 在循环中使用事务吧,,如果事务中应用循环,可能会导致表长时间锁定,影响并发性
@悦光阴:我想问的是 事物中的select 是应该带上事物,还是不带好,但是我看到有个文章中说 事物代码中的任何sql 必须全部用事物,否则会产生锁的问题。
带不带你自己看自己的逻辑啊,如果两次修改需要一致性那就带上咯,反之就不用了。
是我看到有个文章中说 事物代码中的任何sql 必须全部用事物,否则会产生锁的问题。
@efreer: 事务和锁没任何关系,事务只考虑隔离级别。语句才产生锁。
是否会死锁取决于你的事务中的语句的加锁顺序是否一致,如果有地方不一致就可能会导致死锁。
可以是可以
不过你也可以在事务之前就查出来啊。
完全没必要放在事务中查
如果你想搞事务进行中的数据 你这个select 也没用
因为有时候必须在事物里查,比如 很多复杂的计算,一个插入操作会单独写在另一个方法里,这个方法里有select,插入在这个方法里 带事物的
存不存在你操作过程中,第二步的查询数据被修改的可能性?!考虑到整体操作块的读写一致性,不太了解你的实际场景,不过,看你的代码段,放事务中可能会好一些。
你的写法,已经是1,2,3都包含在事物中了。如果你的1和3是要保证原子性的,那么就像你现在这样就可以了。