Java事务

事务的ACID

1,原子性:原子性是说将事务看成一个整体,一个不可分割的单位,操作时要么同时成功,要么同时失败。

2,一致性:一致性是指事务的前后数据的完整性保持一致。

3,隔离性:隔离性是指多个用户并发访问数据库时,数据库给每一个用户开启一个事务,一个事务在操作数据时,不能被其他事务所干扰,并发事务之间要相互隔离。

4,持久性:持久性是指事务一旦被提交,那么对数据库的改变将是永久性的。

事务的隔离级别

1,读未提交:另一个事务修改了数据但未提交,本事务中的select会读到这些违背提交的数据,也叫做脏读。

2,读已提交:事务能看到的数据都是其他事务已经提交修改的数据,也就保证不会看到任何中间性的状态,不会出现脏读。

3,可重复读:保证同一个事务中多次读取的数据是一致的。

4,串行:并发事务之间是串行化的,读取需要获取共享读锁,更新需要获取排他写锁,如果有条件语句,还会获取区间锁,这是最高隔离级别。

不考虑事务的隔离级别会产生什么样的问题?

1,并发事务可能会造成脏读,不可重复读,幻读等问题,这些问题实际上都是数据库读一致性问题,必须由数据库提供一定的隔离机制来解决

什么是脏读?

1,脏读就是一个事务在处理过程中读取了另一个事务未提交的数据。

什么是不可重复读?

1,事务A在多次读取同一数据,事务B在数据A多次读取数据的过程中对数据进行了更新并提交,导致事务A前后读取的数据不一致。

什么是幻读?

1,可重复读的隔离级别解决了不可重复读的问题,保证了同一个事务里查询到的数据都是开始时的状态。

Mysql默认的隔离级别是什么?

1,Mysql默认的隔离级别是可重复读。

2,事务的隔离级别要得到底层数据库引擎的支持,而不是应用程序或者框架的支持。

3,事务的隔离级别越高,越能保证数据的完整性和一致性,同时对并发性能的影响也越大。

4,可以优先把数据库的事务隔离级别设置成Read Committed,它能够避免脏读取,并且有较好的并发性能。尽管它会导致不可重复读和幻读问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或者乐观锁来控制。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值