怎么理解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执行完;如果先

posted @ 2021-11-01 23:59  一半生活一半理想  阅读(39)  评论(0)    收藏  举报