学习笔记【一】事务

事务

ransaction 其实指的一组操作,里面包含许多个单一的逻辑。只要有一个逻辑没有执行成功,那么都算失败。 所有的数据都回归到最初的状态(回滚),事务是用来确保逻辑成功。

  • 代码逻辑:
    1. 通过conn.setAutoCommit(false )来关闭自动提交的设置;
    2. 提交事务 conn.commit();
    3. 回滚事务 conn.rollback();

事务特性

  • 原子性

指的是 事务中包含的逻辑,不可分割。

  • 一致性

指的是 事务执行前后。数据完整保持一致。

  • 隔离性

指的是 事务在执行期间不应该受到其他事务的影响

  • 持久性

指的是 事务执行成功,那么数据应该持久保存到磁盘上。

事务安全隐患


  • 1.脏读 :(读未提交)

个事务读到另外一个事务还未提交的数据

2.不可重复读(读已提交)

个事务读到了另外一个事务提交前 和提交后的数据 ,造成了前后两次查询结果不一致。

3.幻读

A事务中,读取表tab的数据有1000行,接着操作其他表,而在操作其他表的过程中,另一个事务B对表tab删除(或增加)了100行数据,此时A事务有需要又重新查看一次表tab,而这时表tab却只有900行数据,跟刚才读到的1000行不一致了!哪一个才是正确的?这就像幻像一样称为幻读。


  • 1.丢失更新
  • .两个事务先后开启,事务一修改数据后提交,事务二再修改数据,提交,造成事务一的数据修改无效。
  • .两个事务先后开启,事务一修改数据后提交,事务二再修改数据,回滚,造成事务一数据无效。

隔离级别

  • 读未提交
    引发问题: 脏读

  • 读已提交
    解决: 脏读 , 引发: 不可重复读。

  • 可重复读(不管另一个事务提没提交都是原始数v据。)
    解决: 脏读 、 不可重复读 , 未解决: 幻读

mySql 默认的隔离级别是 可重复读
Oracle 默认的隔离级别是 读已提交

  • 悲观锁

查询的时候,加入 for update

  • 乐观锁

自己控制加字段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值