其几天看书,看到书中对这个问题的解释,模棱两可,用专有名词解释专有名词,有点扯。个人认为,解释一个关键词时,不应该再给读者引入一个新的对他可能陌生的关键词来做解释,让人云里雾里。这里用业务含义通俗的解释下这几个关键词的含义。
repeatable read 可重复读
b事务中多次读取同一个值,b事务多次读的过程中,如果a事务把值改了,并且事务也提交了,这种情况下,b事务读的值依然是最开始读的那个值。
这个是mysql的默认隔离级别。可以使用:select @@transaction_isolation;
查询
read uncommitted 读未提交
b事务中多次读取同一个值,b事务多次读的过程中,如果a事务把值改了,尽管a事务没有提交,b事务也是可以读到a做出的更改。(脏读)
read committed 读已提交
b事务中多次读取同一个值,b事务多次读的过程中,如果a事务把值改了,只有a事务提交了,b事务才可以读到a事务所作的更改。
serializable 串行化
串行化的执行。
查询数据库隔离界别
SELECT @@GLOBAL.tx_isolation,@@tx_isolation;
select * from user for update ;会把查询出的内容加锁。