精华内容
下载资源
问答
  • 主要介绍了浅谈数据库事务四大特性,小编觉得挺不错的,这里分享给大家,供需要的朋友参考。
  • java——事务四大特性

    2020-07-05 17:36:09
    事务四大特性(ACID): 1、原子性(Atomicity):化学中的原子指不可再分的基本微粒,数据库中原子性强调事务是一个不可分割的整体,事务开始后所有操作要**么全部成功,要么全部失败,不可能停滞在中间某个环节。*...

    事务四大特性(ACID):
    1、原子性(Atomicity):化学中的原子指不可再分的基本微粒,数据库中原子性强调事务是一个不可分割的整体,事务开始后所有操作要么全部成功,要么全部失败,不可能停滞在中间某个环节。如果事务执行过程中出错就会回滚到事务开始前的状态,所有的操作就像没有发生一样不会对数据库有任何影响。

    2、一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态,即一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还是5000,这就是事务的一致性。

    3、隔离性(Isolation):当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离,比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转入钱。

    4、持久性(Durability):一个事务一旦被提交,则对数据库的所有更新将被保存到数据库中,不能回滚。

    展开全文
  • 事务四大特性

    2017-06-17 11:07:34
    原子性(atomicity):多件事看成一件操作,生死与共 一致性(consistency):前后数据总量宏观上不会发生变化,例如:总金额为2000,互相转账后应保证总数...持久性(durability):事务提交后,必须马上写入持久化的硬盘中

    原子性(atomicity):多件事看成一件操作,生死与共
    一致性(consistency):前后数据总量宏观上不会发生变化,例如:总金额为2000,互相转账后应保证总数不变
    隔离性(isolation):解决数据的并发问题,例如:脏读,不可重读,幻读的问题
    持久性(durability):事务提交后,必须马上写入持久化的硬盘中

    展开全文
  • 事物的四大特性? ACID 1.原子性 atomicity 一个事物是一个不可分割的工作单位,其中的操作,要么都做,要么不做。不存在中间状态。 2.一致性 consisitency 事物执行的前后,数据必须处于一种合法的状态。...

    事物的四大特性?
        ACID
        1.原子性 atomicity
            一个事物是一个不可分割的工作单位,其中的操作,要么都做,要么不做。不存在中间状态。
        2.一致性 consisitency
            事物执行的前后,数据必须处于一种合法的状态。(可以自己定义 ,保持数据的一致性。)
        3.隔离性 lsolation
            多个事物并发执行的时候,事物内部的操作与其他事物是隔离的,并发执行,互不干扰。
        4.持久性 Durability
            事物一旦提交,对数据库的改变是永久性的。不受任何影响。

    四大特性的实现原理?
        1.mysql如何保证一致性的?
            两个层面。
    /*        
            1.数据库    通过原子性, 持久性,隔离性,来保证一致性。
                        AID 三大特性,是前提。
            2.应用层面    通过代码判断数据库数据是否有效,然后再决定是回滚还是提交数据。
    */

        2.mysql怎怎么保证原子性的?
        /*
    1.利用innodb的undo log。 叫做回滚的日志

            当事务回滚的时候,能够撤销所有已经成功执行的SQL语句,需要记录你要回滚的响应日志
    2.举例说明        
            当你update一条数据,需要记录之前的旧值,回滚的时候,根据旧值进行update操作。
                
            undo log 记录了这些回滚需要的信息,当事务执行失败,就可以以利undo log 中的信息
            将数据回滚到修改之前的样子。
        */
            
        3.mysql怎么保持久性的?
        /*
    1.        是利用innodb 的 redo log。、

            mysql把磁盘上的数据加载到内存中,在内存中对数据进行修改,在刷回磁盘上。
            此时宕机,内存中的数据就会丢失。
            
    2.如何避免宕机?        
            在事物提交之前将数据写入磁盘中。--------【引发的问题。】》只修改一个页面里的一个字节,就要将整个页面刷入磁盘,太浪费资源了
            
            毕竟一个事务里的SQL可能牵涉到多个数据页的修改,而这些数据页可能不是相邻的,
            也就是属于随机IO。显然操作随机IO,速度会比较慢。
            
    3.采用redo log?
            做数据修改的时候,不仅在内村中操作,还会在redo  log 中记录这次操作,
            提交事物的时候,会将redo log 日志进行刷盘 redo log 一部分在内存中,一部分在磁盘上。
            数据库宕机重启,就将redo log中的内容恢复到数据库中,再根据undo log 和binlog 内容决定
            回滚还是提交数据。
    4.好处?    
            redo log 体积小,只记录了那一页修改了什么,体积小,刷盘快。
            一直往末尾进行追加,属于顺序io.效率比随机io来快。
        */
        
        4.mysql怎么保证隔离性的。
    /*
        利用锁 和mvcc 机制。
        
        MVCC,即多版本并发控制(Multi Version Concurrency Control),
        一个行记录数据有多个版本对快照数据,这些快照数据在undo log中。
        
        如果一个事务读取的行正在做DELELE或者UPDATE操作,
        读取操作不会等行上的锁释放,而是读取该行的快照版本。
        
        在事务隔离级别为读已提交(Read Commited)时,一个事务能够读到另一个事务已经提交的数据,
        是不满足隔离性的。但是当事务隔离级别为可重复读(Repeateable Read)中,是满足隔离性的。
    */

    展开全文
  • 数据库事务四大特性

    千次阅读 2018-09-16 21:30:12
    数据库事务四大特性(简称ACID)是:  (1) 原子性(Atomicity) 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。 ...

    数据库事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全做要么全不做,是一个不可分割的工作单位。

    数据库事务的四大特性(简称ACID)是: 

    (1) 原子性(Atomicity)

    事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。

    例如银行取款事务分为2个步骤(1)存折减款(2)提取现金。不可能存折减款,却没有提取现金。2个步骤必须同时完成或者都不完成。

    (2)一致性(Consistency)    

    事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。

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

    (3)分离性(亦称独立性Isolation)

    分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。

    (4)持久性(Durability)

    持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,即对已提交事务的更新能恢复。持久性通过数据库备份和恢复来保证。

    1,脏读

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

      当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致。例如:用户A向用户B转账100元,对应SQL命令如下

        update account set money=money+100 where name=’B’;  (此时A通知B)
    
        update account set money=money - 100 where name=’A’;

      当只执行第一条SQL时,A通知B查看账户,B发现确实钱已到账(此时即发生了脏读),而之后无论第二条SQL是否执行,只要该事务不提交,则所有操作都将回滚,那么当B以后再次查看账户时就会发现钱其实并没有转。

    2,不可重复读

      不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。

      例如事务T1在读取某一数据,而事务T2立马修改了这个数据并且提交事务给数据库,事务T1再次读取该数据就得到了不同的结果,发送了不可重复读。

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

      在某些情况下,不可重复读并不是问题,比如我们多次查询某个数据当然以最后查询得到的结果为主。但在另一些情况下就有可能发生问题,例如对于同一个数据A和B依次查询就可能不同,A和B就可能打起来了……

    3,虚读(幻读)

      幻读是事务非独立执行时发生的一种现象。例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。

      幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。

     

      现在来看看MySQL数据库为我们提供的四种隔离级别:

      ① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。

      ② Repeatable read (可重复读):可避免脏读、不可重复读的发生。

      ③ Read committed (读已提交):可避免脏读的发生。

      ④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。

     

      以上四种隔离级别最高的是Serializable级别,最低的是Read uncommitted级别,当然级别越高,执行效率就越低。像Serializable这样的级别,就是以锁表的方式(类似于Java多线程中的锁)使得其他的线程只能在锁外等待,所以平时选用何种隔离级别应该根据实际情况。在MySQL数据库中默认的隔离级别为Repeatable read (可重复读)。

      在MySQL数据库中,支持上面四种隔离级别,默认的为Repeatable read (可重复读);而在Oracle数据库中,只支持Serializable (串行化)级别和Read committed (读已提交)这两种级别,其中默认的为Read committed级别。

      在MySQL数据库中查看当前事务的隔离级别:

        select @@tx_isolation;

      在MySQL数据库中设置事务的隔离 级别:

        set  [glogal | session]  transaction isolation level 隔离级别名称;
    
        set tx_isolation=’隔离级别名称;’

    例1:查看当前事务的隔离级别:

      

    例2:将事务的隔离级别设置为Read uncommitted级别:

      

    或:

      

    记住:设置数据库的隔离级别一定要是在开启事务之前!

      如果是使用JDBC对数据库的事务设置隔离级别的话,也应该是在调用Connection对象的setAutoCommit(false)方法之前。调用Connection对象的setTransactionIsolation(level)即可设置当前链接的隔离级别,至于参数level,可以使用Connection对象的字段:

      

    在JDBC中设置隔离级别的部分代码:

      

      后记:隔离级别的设置只对当前链接有效。对于使用MySQL命令窗口而言,一个窗口就相当于一个链接,当前窗口设置的隔离级别只对当前窗口中的事务有效;对于JDBC操作数据库来说,一个Connection对象相当于一个链接,而对于Connection对象设置的隔离级别只对该Connection对象有效,与其他链接Connection对象无关。

    展开全文
  • 事务的四个特性以及事务的隔离级别 什么是事务 事务是指是程序中一系列严密的逻辑操作,而且所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。可以通俗理解为:就是把多件事情当做一件事情来...
  •  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的 操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 ⑵ 一致性(Consistency)  一致性是指事务必须使...
  • 事务四大特性(简称ACID) 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 详细解释 原子性(atomicity) 一个事务必须被视为一个不可分割的最小...
  • 说到数据库事务,很多人就会想事务的ACID即原子性,一致性,隔离性,持久性,以及事物的四个隔离级别,但是并不是很明白为什么要用这四个特性来保证事务,以及事务的隔离级别是怎么产生的?包括LZ之前看《高性能...
  • 事务四大特性: 原子性:整个事务作为一个整体,要么都成功,要么都失败。 一致性:同一个事务,相同的条件,不同的时间要得到相同的结果 隔离性:两个事务在未提交之前只能看到自己修改是数据,不能看到对方修改...
  • 我对事务四大特性的认识和理解

    千次阅读 2017-01-16 14:12:59
    首先,我们需要知道事务四大特性有哪些?  1. 原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部回滚,因此事务的操作成功就必须要完全应用到数据库,  如果操作失败则不能对数据库又热和...
  • 数据库事务 四大特性

    2018-10-11 21:42:39
    数据库事务四大特性(ACID) 敲黑板,这是重点,记下来!!会考到 转载连接:https://www.cnblogs.com/fjdingsd/p/5273008.html ⑴ 原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部失败...
  • 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。 。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。...
  • MySQL事务四大特性实现:面试官的终究拷问

    千次阅读 多人点赞 2020-04-24 23:24:31
    文章目录MySQL事务四大特性实现:面试官的终究拷问前言知识数据库事务的四大特性事务的四种隔离级别原子性的实现持久性的实现日志文件的刷新策略隔离性的实现已提交读(允许可重复读)可重复读(允许幻读)终究难题参考...
  • 事务四大特性(ACID)

    2020-07-05 18:27:32
    事务四大特性(ACID): 原子性(Atomicity):化学中的原子指不可再分的基本微粒,数据库中原子性强调事务是一个不可分割的整体,事务开始后所有操作要么全部成功,要么全部失败,不可能停滞在中间某个环节。...
  • 事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体如下: 原子性(Atomic) 一个事务包含多个操作,这些操作要么全部执行,要么全都不执行。实现事务的原子性,要支持回滚操作,在...
  • 事务四大特性 ⑴ 原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作...
  • 数据库事务四大特性以及事务的隔离级别一、数据库事务四大特性二、事务的隔离级别1.脏读2.不可重复读3.幻读 数据库事务四大特性以及事务的隔离级别 https://www.cnblogs.com/fjdingsd/p/5273008.html 一、...
  • 1.ACID 事务四大特性 (原子性、一致性、隔离性、持久性) 原子性:事务内的操作为一个整体,要么全部成功,要么全部回滚,全部失败。 一致性:事务开始和结束后,数据库的完整性约束没有被破坏。符合对应关系,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,138
精华内容 8,055
关键字:

事务四大特性