acid 订阅
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。 展开全文
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
信息
隔离性
隔离状态执行事务
一致性
在事务开始之前和事务结束以后
中文名
acid
原子性
整个事务中的所有操作
acid原子性
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
收起全文
精华内容
下载资源
问答
  • Acid

    2019-10-25 04:24:08
    Acid
  • 事务ACID理解

    万次阅读 多人点赞 2018-09-06 21:26:20
    事务管理(ACID) 谈到事务一般都是以下四点 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性(Consistency) 事务前后数据的完整性必须保持一致...

    事务管理(ACID)

    谈到事务一般都是以下四点

    原子性(Atomicity)
    原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
    一致性(Consistency)
    事务前后数据的完整性必须保持一致。
    隔离性(Isolation)
    事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
    持久性(Durability)
    持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

    举个简单的例子理解以上四点

    原子性

    针对同一个事务

    这里写图片描述

    这个过程包含两个步骤

    A: 800 - 200 = 600
    B: 200 + 200 = 400

    原子性表示,这两个步骤一起成功,或者一起失败,不能只发生其中一个动作

    一致性(Consistency)

    针对一个事务操作前与操作后的状态一致

    这里写图片描述

    操作前A:800,B:200
    操作后A:600,B:400

    一致性表示事务完成后,符合逻辑运算

    持久性(Durability)

    表示事务结束后的数据不随着外界原因导致数据丢失

    操作前A:800,B:200
    操作后A:600,B:400
    如果在操作前(事务还没有提交)服务器宕机或者断电,那么重启数据库以后,数据状态应该为
    A:800,B:200
    如果在操作后(事务已经提交)服务器宕机或者断电,那么重启数据库以后,数据状态应该为
    A:600,B:400

    隔离性(Isolation)

    针对多个用户同时操作,主要是排除其他事务对本次事务的影响

    这里写图片描述
    事务一)A向B转账200
    事务二)C向B转账100

    两个事务同时进行,其中一个事务读取到另外一个事务还没有提交的数据,执行步骤如图所示,按照数字顺序执行
    在这里插入图片描述
    隔离性用于解决以上问题


    事务的隔离级别

    脏读:

    指一个事务读取了另外一个事务未提交的数据。

    在这里插入图片描述

    不可重复读:

    在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)

    页面统计查询值
    这里写图片描述
    生成报表的时候,B有人转账进来300(B事务已经提交)
    这里写图片描述

    虚读(幻读)

    是指在一个事务内读取到了别的事务插入的数据,导致前后读取数量总量不一致。
    (一般是行影响,如下图所示:多了一行)

    这里写图片描述

    四种隔离级别设置

    数据库

    set transaction isolation level 设置事务隔离级别
    select @@tx_isolation 查询当前事务隔离级别

    设置 描述
    Serializable 可避免脏读、不可重复读、虚读情况的发生。(串行化)
    Repeatable read 可避免脏读、不可重复读情况的发生。(可重复读)
    Read committed 可避免脏读情况发生(读已提交)。
    Read uncommitted 最低级别,以上情况均无法保证。(读未提交)

    java

    适当的 Connection 方法,比如 setAutoCommit 或 setTransactionIsolation

    设置 描述
    TRANSACTION_SERIALIZABLE 指示不可以发生脏读、不可重复读和虚读的常量。
    TRANSACTION_REPEATABLE_READ 指示不可以发生脏读和不可重复读的常量;虚读可以发生。
    TRANSACTION_READ_UNCOMMITTED 指示可以发生脏读 (dirty read)、不可重复读和虚读 (phantom read) 的常量。
    TRANSACTION_READ_COMMITTED 指示不可以发生脏读的常量;不可重复读和虚读可以发生。

    事务演示

    在这里插入图片描述

    这里使用控制台演示,命令行登录方式

    mysql -h localhost -uroot -p
    

    数据测试准备

    create database db_test;
    use db_test;
    
    CREATE TABLE `AMOUNT` (
    `id`  varchar(10) NULL,
    `money`  numeric NULL
    )
    ;
    
    insert into amount(id,money) values('A', 800);
    insert into amount(id,money) values('B', 200);
    insert into amount(id,money) values('C', 1000);
    insert into amount(id,money) values('D', 1000);
    

    在这里插入图片描述
    操作成功如图所示,检查数据:select * from amount;

    mysql事务隔离性相关语句说明

    --  查询当前控制台(客户端)当前事务级别
    SELECT @@session.tx_isolation;   
    SELECT @@tx_isolation;  
    --  设置当前控制台(客户端)当前事务级别
    SET SESSION TRANSACTION ISOLATION LEVEL read uncommitted;  
    SET SESSION TRANSACTION ISOLATION LEVEL read committed;  
    SET SESSION TRANSACTION ISOLATION LEVEL repeatable read;  
    SET SESSION TRANSACTION ISOLATION LEVEL serializable;  
    
    --开启事务
    start transaction;
    --提交事务,同时事务结束
    commit;
    --回退事务,回退操作,同时事务结束
    rollback
    

    案列1:脏读演示,读到其他事务未提交的数据

    操作步骤

    1. 事务一(右):A向B转200,不提交事务
    2. 事务二(左):查看B金额
    3. 事务一(右):回滚事务
    4. 事务二(左):查看B金额

    改变事务二(左)事务级别为READ-UNCOMMITTED
    在这里插入图片描述

    gif演示
    在这里插入图片描述
    转账SQL

    update amount set money = money - 200 where id = 'A';
    update amount set money = money + 200 where id = 'B';
    

    事务二(左)在事务中,查询到其他事务还没有提交(commit/rollback)的事务

    其他事务级别请自行测试(与理论预期一致)

    • 案列2,将事务二(左)在事务设置为REPEATABLE-READ,再看看操作结果(操作步骤同案例1,步骤三改为提交事务-commit)
    • 案列3,将事务二(左)在事务设置为REPEATABLE-READ,再看看操作结果(操作步骤同案例1,步骤三改为提交事务-commit)
    • 案列4,将事务二(左)在事务设置为SERIALIZABLE,再看看操作结果(操作步骤同案例1)

    这里说明一下,SERIALIZABLE事务是串行执行,演示的时候只能由其中一个客户端操作,直到提交事务,另外一个客户端才能操作。

    展开全文
  • ACID

    2020-06-23 17:09:48
    14.2 InnoDB and the ACID Model ACID 模型是一组数据库的设计原则 ,这是重要的对于商业数据和关键任务应用程序 MySQL 包含组件 比如Innodb存储引擎和ACID 模型紧密结合 这样数据不会被破坏,结果不会被异常...
    
    14.2 InnoDB and the ACID Model
    
    
    ACID 模型是一组数据库的设计原则 ,这是重要的对于商业数据和关键任务应用程序 
    
    MySQL 包含组件 比如Innodb存储引擎和ACID 模型紧密结合 
    
    这样数据不会被破坏,结果不会被异常情况所失真,比如硬件和软件故障
    
    当你依赖于符合ACID的特性时,你不需要重新发明一致性检查和崩溃恢复机制 
    
    下面各节讨论mysql特性,特别是InnoDB存储引擎,如何与ACID 模型
    
    A: atomicity.
    
    C: consistency.
    
    I:: isolation.
    
    D: durability.
    
    Atomicity 原子性
    
    ACID 模型的原子性方面主要涉及InnoDB事务。
    
    Autocommit setting.
    
    COMMIT statement.
    
    ROLLBACK statement.
    
    
    Consistency
    
    ACID 模型的一致性 主要涉及Innodb 处理来防止crash ,相关的mysql功能包括:
    
    InnoDB doublewrite buffer.
    
    
    InnoDB crash recovery.
    
    
    Isolation 隔离 
    
    ACID 模型的隔离方面主要涉及InnoDB事务,特别是应用于每个事务的隔离级别:
    
    Autocommit setting.
    
    SET ISOLATION LEVEL statement.
    
    Durability 耐久性 
    
    ACID 模型的持久性方面涉及MySQL 软件功和特定的硬件配置有关系 
    
    InnoDB doublewrite buffer 开启和关闭通过 innodb_doublewrite 配置选项
    
    Configuration option innodb_flush_log_at_trx_commit.
    
    Configuration option sync_binlog.
    
    Configuration option innodb_file_per_table.
    

     

    展开全文
  • acid

    2013-03-28 22:36:00
    ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库系统,必需要具有这四种...
    ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库系统,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
     
    原子性
    整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
    一致性
    在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
    隔离性
    两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
    持久性
    在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
    由于一项操作通常会包含许多子操作,而这些子操作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新 以及修改的资料一次操作完毕,但实际上并不可行。
    目前主要有两种方式实现ACID:第一种是Write ahead logging,也就是日志式的方式。第二种是Shadow paging。

    转载于:https://www.cnblogs.com/duxp/archive/2013/03/28/2987793.html

    展开全文
  • ACID_pro4 ACID中文版本

    2021-03-09 13:49:31
    ACID_pro4 ACID中文版本

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,403
精华内容 38,561
关键字:

acid