怎么理解mysql的事务的隔离级别
数据库事务隔离级别本质是数据库处理数据时的不同锁策略:
假如有一张user表,有id,name两个列;
| id | name |
| 1 | 张三 |
| 2 | 李四 |
1.如果事务1中将id=1的列name修改为张小三,另一个事务2将id=1的列name修改为张大三;结果会怎样?
我们知道第一个事务会锁住user表,不允许第二个事务修改,第二个事务会处理阻塞等待状态;
2.如果事务1中将id=1的列name修改为张小三,另一个事务2读取(查询)id=1的列name呢?
此时有两种处理策略:允许事务2读,不允许事务2读;
允许事务2读的策略被称作:Read uncommitted(读未提交),即:事务1 uncommitted 事务2可以read;此时事务2读会是啥结果呢?会读出name是张小三。如果事务1rollbak了,此时表里的name实际上还是张三;但是事务2读到了张小三这种现象俗称脏读;
不允许事务2读的策略被称作:Read committed(读提交),即:事务1 committed 事务2才可以read;事务2读会是啥结果呢?会阻塞,需要等待事务1执行完;如果先

浙公网安备 33010602011771号