mysql 事务
2022-05-16 10:32:28 3 举报
mysql事务流程
作者其他创作
大纲/内容
客户端
records
操作1 操作2
写入缓存
缓存
T1
T2
数据库自动提交事务我们开始事务手动提交
read uncommit 读未提交,可能会读到其他事务未提交的数据,也叫做脏读。⽤户本来应该读取到id=1的⽤户age应该是10,结果读取到了其他事务还没有提交的事务,结果读取结果age=20,这就是脏读。read commit 读已提交,两次读取结果不⼀致,叫做不可重复读。不可重复读解决了脏读的问题,他只会读取已经提交的事务。⽤户开启事务读取id=1⽤户,查询到age=10,再次读取发现结果=20,在同⼀个事务⾥同⼀个查询读取到不同的结果叫做不可重复读。repeatable read 可重复复读,这是mysql的默认级别,就是每次读取结果都⼀样,但是有可能产⽣幻读。serializable 串⾏,⼀般是不会使⽤的,他会给每⼀⾏读取的数据加锁,会导致⼤量超时和锁竞争的问题。
books
提交到数据文件
操作1数据 age=10
借书记录修改库存
数据文件
执行SQL语句
如果出现异常则回滚 缓清空缓存
数据数据文件
客户端1
两个同时成功才提交数据
客户端2
age=20;
0 条评论
回复 删除
下一页