数据库事务特性和隔离级别

事务

一组业务操作,要么全部成功,要么全部不成功。

----------------事务的特性--------------

原子性:一个事务是一个整体,不可分割,事务中的操作要么都成功,要么都失败。

一致性:事务必须是使数据库从一个一致性状态变到另一个一致性状态。事务执行前后,数据库的状态是一致的。

     例如:A有1000,元,B有1000元,加起来是2000,中间执行转账的操作,转账后两个人的钱加起来还是2000.

隔离性:两个或多个事务并发操作,之间会互相影响。数据库提供了隔离级别来消除这些影响。

持久性:一旦一个事务提交了,对数据库中的数据的影响就是永久的了,如果数据库出现故障或者其他操作都不应该再对其产生影响。

以上是事务的四个特性简称ACDI,重点是事务的隔离性,在对数据库进行操作的时候,开启多个事务同时进行操作,为了能够准确的获取数据,数据库要有隔离性。如果没有隔离性的话,会出现以下几个隔离问题:

----------------隔离问题----------------

脏读:一个事务读到了另一个事务未提交的数据

不可重复读:一个事务读到了另一个事务已经提交的数据(主要针对update)

幻读/虚读:一个事务读到了另一个事务已经提交的数据(主要针对insert)

----------------隔离级别----------------

为了避免这些问题,数据库提供了四种隔离级别(级别由低到高,效率由高到低)

read uncommitted:读未提交,最低级别,存在脏读,不可重复读,幻读三个问题

read committed:读已提交,只能在当前事务中读取到其他事务已经提交的数据。避免了脏读的问题。

repeatable read:可重复读,避免了脏读和不可重复读的问题。

serializable:串行化,避免脏读,不可重复读,幻读的发生。相当于给事务加了锁,效率会比较低。

在mysql数据库中,支持以上四种事务隔离级别,默认的事务隔离级别为repeatable read;

在oracle数据库中,支持read committed、serializable两种事务隔离级别,默认的隔离级别为read committed;

----------------jdbc对数据库事务管理----------------

使用jdbc来对数据库事务进行管理:对事务隔离级别的设置要在开启事务之前

部分代码:

savepoint(保存点):记录操作的当前位置,之后可以回滚到指定的位置

时间: 2024-10-09 17:30:41

数据库事务特性和隔离级别的相关文章

数据库事务中的隔离级别和锁+spring Transactional注解

数据库事务中的隔离级别和锁 数据库事务在后端开发中占非常重要的地位,如何确保数据读取的正确性.安全性也是我们需要研究的问题. ACID 首先总结一下数据库事务正确执行的四个要素(ACID): 原子性(Atomicity):即事务是不可分割的最小工作单元,事务内的操作要么全做,要么全不做,不能只做一部分:一致性(Consistency):在事务执行前数据库的数据处于正确的状态,而事务执行完成后数据库的数据还是处于正确的状态,即数据完整性约束没有被破坏:比如我们做银行转账的相关业务,A转账给B,要求

数据库的特性与隔离级别和spring事务的传播机制和隔离级别

首先数据库的特性就是 ACID: Atomicity 原子性:所有事务是一个整体,要么全部成功,要么失败 Consistency 一致性:在事务开始和结束前,要保持一致性状态 Isolation 隔离性: 对于同一个表的操作,每个事务都是单独的,不会影响其他事务. Durability 持久性: 事务一旦提交,数据库中的数据就是永久的了. 对于以上四种特性中的隔离性,不同的策略会有不同的弊端:脏读,不可重复读,幻读. 脏读: 就是一个事务读取了别的事务执行过程中未提交的数据. 不可重复读: 就是

MYSQL数据库事务4种隔离级别及7种传播行为

事务的特性: 原子性:事务的不可分割,组成事务的各个逻辑单元不可分割. 一致性:事务执行的前后,数据完整性保持一致. 隔离性:事务执行不应该受到其他事务的干扰. 持久性:事务一旦结束,数据就持久化到数据库中. 查看/设置隔离级别 查看:SELECT @@tx_isolation  设置:set tx_isolation='xxx' 事务的隔离级别 如果不考虑隔离性,引发一些安全问题 隔离性:一个事务的执行,不应该受到其他事务的干扰. 脏读:一个事务读到了另一个事务未提交的数据,导致查询结果不一致

数据库的四种隔离级别和事务的四特性

数据库事务的四大特性: 事务(Transaction)是并发控制的基本单位.所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行. 1.数据库事务必须具备ACID特性,ACID是Atomic(原子性).Consistency(一致性).Isolation(隔离性)和Durability(持久性)的英文缩写. 1)原子性(Atomicity) 一个事务(transactio

数据库事务的四大特性以及事务的隔离级别-与-Spring事务传播机制&隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. ⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执

数据库事务的4大特性与隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. ⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执

Spring事务的传播特性和隔离级别

事务的几种传播特性1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务.如果没有事务则开启2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务.如果没有事务,则非事务的执行3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务.如果没有一个活动的事务,则抛出异常.4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务.如果一个事务已经存在,则将这个存在的事务挂起.5. PROPAGA

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

数据库的事务:事务就是单个数据逻辑单元组成的对象操作集合,而数据库终极目标就是是数据库从一个一致的状态转换到另一个一致的状态. 事务的四大特性(ACID): 原子性 Atomicity 事物包含的所有数据库操作要么全部成功,要么全部失败回滚 一致性 Consistency 一个事务执行前后都必须处于一致性状态 隔离性 Isolation 一个事务未提交的业务结果对于其它事务不可见 持久性 Durability 一个事务一旦被提交了那么对数据库中数据的改变就是永久性的 数据库中读写时的安全问题:

事物的特性和隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级 别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两 篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到 数据库,如果操作失败则不能对数据库有任何影响. ⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就 是说一