一、回顾事务
1、什么是事务:
是逻辑上的一组操作,要么都成功,要么都失败
2、事务的特性
A--原子性:确保整个动作要么全部完成,要么原封不动
C--一致性:业务形态是一致状态,不存在部分成功或失败
I--隔离性:事务之间是相互隔离的
D--持久性:结果要写入到持久化存储中
3、事务的定义信息
脏读、不可重复读、幻读
隔离级别:
未提交读:
已提交读:避免脏读
可重复读:避免脏读和不可重复读
串行化:可避免所有读问题
传播行为:
保证在同一个事务中
propagation_required:必须有事务,如果不存在事务,就新建一个
propagation_supports:支持事务,如果不存在事务,就不使用
propagation_mandatory:强制使用事务,如果不存在事务,就抛异常
保证没有在同一个事务中(事务嵌套)
propagation_REQUIRES_NEW:必须使用新的,如果有事务则当前事务挂起,创建一个新 的事务
propagation_NOT_SUPPORTED:不支持。如果有事务则挂起
propagation_NEVER:从不,如果有事务,就抛异常
propagation_NESTED:嵌套执行
超时信息:
事务执行时间不能过长,否则会大量占用数据库资源。如果没有执行完就自动回滚,不能一直等待
是否只读:
优化措施
MySql事务举例:
set autocommit = false;
INSERT INTO `school`.`student` (`sid`, `sname`, `sage`, `ssex`, `saddr`) VALUES ('1101', '张翠山', '22', '男', '南京');
savepoint a;
INSERT INTO `school`.`student` (`sid`, `sname`, `sage`, `ssex`, `saddr`) VALUES ('1102', '张翠山', '22', '男', '南京');
rollback to a;
commit;
版权归原作者 骑猪跑的少年 所有, 如有侵权,请联系我们删除。