数据库的隔离机制和事务传播机制

1.隔离机制

要了解数据库的隔离机制首先要知道数据库可能出现的几种问题:

  • 脏读:简单来说,就是事务1读取到了事务2未提交的数据,如果此时事务2回滚,事务1就是读取到了脏数据
  • 不可重复读:即前后多次读取,数据不一致
  • 幻读:多次读取,数据总量不一致

而为了解决这几个问题,引入了事务的隔离机制:

  • 读未提交:在这种隔离级别下,所有事务都可以读取到未提交的事务,可能出现脏读,无法解决脏读,不可重复读,幻读的问题。
  • 读已提交:在这种隔离级别下,所有事务只能读取到已提交的事务,可以解决脏读的问题,但是可能出现不可重复读的问题
  • 可重复读:在这种隔离级别下,所有事物读取到的数据内容是不变的,解决了不可重复读的问题。但无法解决幻读的问题。MySql默认的隔离级别
  • 可串行化:即事务一条一条进行。一个事务进行的时候不允许其他事务进行。可以解决所有问题。但效率较低。

2.事务传播机制

  • REQUIRED: 如果当前有事务则加入事务,没有则创建一个
  • NOT_SUPPORTED :不支持事务,如果当前有事务则挂起事务运行
  • REQUIRED_NEW:新建一个事务并在这个事务中运行,如果当前存在事务九江当前事务挂起。
  • MANDATORY:强制当前方法使用事务运行,如果当前没有事务则抛出异常
  • NEVER:当前方法不能存在事务,即非事务运行,如果存在事务则抛出异常
  • SUPPORTS:支持当前事务,如果当前没事务也支持非事务状态运行
  • NESTED:如果当前存在事务,则在嵌套事务内执行,嵌套事务的提交和回滚与父事务没有任务关系。反之,当父事务提交嵌套事务也提交,父事务回滚嵌套事务也回滚,如果当前没有事务,则新建一个事务运行
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值