l 事务:一组业务操作ABCD,要么全部成功,要么全部不成功。
l 特性:ACID
原子性:整体
一致性:完成
隔离性:并发
持久性:结果
l 隔离问题:
脏读:一个事务读到另一个事务没有提交的数据
不可重复读:一个事务读到另一个事务已提交的数据(update)
虚读(幻读):一个事务读到另一个事务已提交的数据(insert)
l 隔离级别:
read uncommitted:读未提交。存在3个问题
read committed:读已提交。解决脏读,存在2个问题
repeatable read:可重复读。解决:脏读、不可重复读,存在1个问题。
serializable :串行化。都解决,单事务。
l mysql 事务操作–简单ABCD 一个事务Connection conn = null;try{ //1 获得连接 conn = …; //2 开启事务 conn.setAutoCommit(false); A B C D //3 提交事务 conn.commit();} catche(){ //4 回滚事务 conn.rollback();} l mysql 事务操作–Savepoint需求:AB(必须),CD(可选) Connection conn = null;Savepoint savepoint = null; //保存点,记录操作的当前位置,之后可以回滚到指定的位置。(可以回滚一部分)try{ //1 获得连接 conn = …; //2 开启事务 conn.setAutoCommit(false); A B savepoint = conn.setSavepoint(); C D //3 提交事务 conn.commit();} catche(){ if(savepoint != null){ //CD异常 // 回滚到CD之前 conn.rollback(savepoint); // 提交AB conn.commit(); } else{ //AB异常 // 回滚AB conn.rollback(); }}
事务管理
最新推荐文章于 2024-09-11 12:59:52 发布