美文网首页Java 杂谈我爱编程程序员
数据库事务四大特性以及隔离级别

数据库事务四大特性以及隔离级别

作者: BestbpF | 来源:发表于2018-07-25 22:06 被阅读58次

一、事务四大特性(ACID)

事务可以理解为一系列操作的集合,如果一个数据库支持事务操作,则该数据库必须满足以下四个特性:

1. 原子性(Atomicity)

事务内包含的操作要么全部成功,要么全部回滚,如转账业务,不会出现一方扣钱而另一方没收到钱的情况。

2. 一致性(Consistency)

一个事务在执行前和执行后状态保持一致。依旧时转账业务,两个人的总账户金额一定,不管他俩之间如何转账交易,总账户金额总是不变的。

3. 隔离性(Isolation)

允许多个线程并发访问数据库,数据库会为每个线程开启独立的事务,一个事务的操作不能被其他的干扰,并发事务之间需要隔离。
数据库提供了多种隔离级别来解决不同的隔离问题(后面介绍)。

4. 持久性(Durability)

提交的事务会被永久保留在数据库中。

二、隔离级别

隔离级别是为了解决不隔离时出现的一系列问题,主要分为三种:脏读、不可重复读以及幻读。

1. 脏读

当事务A修改了某个数据但没有提交,事务B并发的访问了该数据,就会造成数据的读取不一致。依旧是转账业务:

  • 操作1:A扣款1000
  • 操作2:B加款1000
    当事务A执行了操作1后,事务B发现A扣款了1000元,认为转账成功,但是事务A并没有提交,钱并没有扣成功,导致错误的发生。
2. 不可重复读

对于数据库中的一个数据,在一个事务内对该数据进行了多次重复查询,发现查询结果不一致。原因在于在该事务查询过程中,另一个事务修改了该数据并提交。
不可重复读和脏读的区别是,脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据。

3. 幻读

例如当事务A删除了所有的X类数据,此时事务B又向数据库插入一些X类数据并提交。操作事务A的用户发现自己好像并没有全部都删除,就如同产生了幻觉一样。

4. 隔离级别
事务隔离级别(√代表会出现该问题)
  • MySQL支持这四种隔离级别,默认为REPEATABLE READ
  • Oracle只支持READ COMMITTED 和 SERIALIZABLE,默认为READ COMMITTED

相关文章

  • 数据库事务的四大特性以及事务的隔离级别

    数据库事务的四大特性以及事务的隔离级别

  • 数据库锁

    常见问题 MyISAM与InnoDB关于锁方面的区别是什么 数据库事务的四大特性 事务隔离级别以及各级别下的并发访...

  • 3、事务

    事务具有四大特性:原子性、一致性、隔离性、持久性;两大属性:隔离级别、传播行为。1、事务四大特性数据库如果支持事务...

  • 事务

    事务四大特性 原子特性 一致性 隔离性 持久性 spring设置的事务隔离级别应该是针对的session 隔离级别...

  • Mybatis:颠覆你心中对事务的理解

    1.说到数据库事务,人们脑海里自然不自然的就会浮现出事务的四大特性、四大隔离级别、七大传播特性。 四大还好说,问题...

  • 数据库事务的四大特性及事务隔离级别

    数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 一个数据库声称支持事务操作,那么该数据库必...

  • 数据库事务的四大特性以及事务的隔离级别

    本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,...

  • 事务

    本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,...

  • 数据库事务的四大特性以及事务的隔离级别

    本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,...

  • 数据库隔离级别

    本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,...

网友评论

    本文标题:数据库事务四大特性以及隔离级别

    本文链接:https://www.haomeiwen.com/subject/sjbmmftx.html