数据库事务的四大特性(ACID) 您所在的位置:网站首页 数据库ocid 数据库事务的四大特性(ACID)

数据库事务的四大特性(ACID)

2024-06-02 12:11| 来源: 网络整理| 查看: 265

1.原子性(Atomicity)

指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对事物有任何影响。

2.读一致性(consistency)实现原理; --当有用户修改数据时,Oracle先把那部分原始数据备份到回滚段,在Commit之前,其他Session用户读到的这 --部分数据是回滚段上的; 在提交之后,回滚段被释放。

完整性约束a+b=10,一个事务改变了a,那么b也应随之改变。

3.隔离性(isolation)

4.持久性(Durability)

指事务的操作,一旦提交,对于数据库中数据的改变是永久性的,即使数据库发生故障也不能丢失已提交事务所完成的改变。

--------------------------------------------------------------------------------------------------------------------

隔离性:当多个线程都开启事务来操作数据库中的数据时,数据库系统要进行隔离操作,以保证各个线程获取数据的准确性。 不考虑事务的隔离性,会产生的几种问题:

脏读:一个事务读取了未提交事务执行过程中的数据。

不可重复读:不可重复读和脏读的区别,脏读是某一个事务读取另一个事务未提交的脏数据; 不可重复读则是读取前一事务提

当一个事务的操作正在多次修改数据,而在事务还未提交的时候,另外一个并发事务来读取了数据,就会导致读取到的数据并非是最终持久化之后的数据,这个数据就是脏读的数据。

幻读:幻读和不可重复读都读取另一条已经提交的事务,所不同的是不可重复读查询的都是同一数据项,而幻读针对的是一批数据整体。

A--100---->B

update account set money = money + 100 where username = 'B'; update account set money = money - 100 where username = 'A';

在这个事务执行过程中,另外一个事务读取结果发现B账户中的钱已经到账,提示B钱已到账,B就进行了下一步的操作。但是最终转账事务失败,导致操作回滚。实际上B并未收到钱,但是进行了下一步的操作,造成了损失,这就是脏读

数据库提供的四种隔离级别: 01:Read uncommitted(读未提交):最低级别,任何情况都会发生。 02:Read Committed(读已提交):可避免脏读的发生。 03:Repeatable read(可重复读):可避免脏读、不可重复读的发生。 04:Serializable(串行化):避免脏读、不可重复读,幻读的发生。  



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有