数据库事务

1.事务用来解决的问题

确保一组数据库操作都执行或者都不执行。使这一组操作对外具有原子性。

2.数据库事务

数据库事务最终支持方是数据库,数据库支持事务我们在代码中写相应事务才有意义。

2.1支持事务的数据库

mysql数据库以InnoDB作为引擎的表,MyISAM引擎是不支持事务的,oracle,非关系型数据库redis也支持事务

3.spring事务

不同的orm实现事务的方式不一样,为了屏蔽差异,spring使用AOP,通过注解方式提供事务支持。
因为使用了AOP,所以方法必须是public,并且不可以内部方法间调用,因为这样AOP就不起作用。

4.事务四个属性

ACID

  1. 原子性(Atomicity)事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。
  2. 一致性(Consistency)几个并行执行的事务,其执行结果必须与按某一顺序 串行执行的结果相一致。
  3. 隔离性(Isolation)事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
  4. 持久性(Durability) 对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障

5.事务导致的问题

事务的并发执行会导致出现一些问题。脏读,不可重复读和幻读,还有更新丢失。参考
事务的隔离级别就是解决这个问题的。不同数据库默认隔离级别不同,mysql默认是Repeatable read。隔离级别越高并发性越差。oracle默认是Read committed 。

6.注意事项

避免在事务中做很耗时的操作,这会导致长事务,占用过多数据库资源。

7.事务种类

  • 本地事务
  • 分布式事务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值