精华内容
下载资源
问答
  • 数据库事务性

    千次阅读 2018-08-16 21:31:37
    ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子(Atomicity)、一致(Consistency)、隔离(Isolation)、持久(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,...

    ACID
    ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
    原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
    一致性:一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
    隔离性:如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。
    持久性:在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

    展开全文
  • 数据库事务

    万次阅读 2018-08-18 07:51:35
    数据库事务是数据库运行中的逻辑工作单位,单个逻辑工作单元所执行的一系列操作,要么都执行,要么都不执行。例如银行取款事务分为2个步骤(1)存折减款(2)提取现金,2个步骤必须同时完成或者都不完成。 数据库事务的...

    数据库事务是数据库运行中的逻辑工作单位,单个逻辑工作单元所执行的一系列操作,要么都执行,要么都不执行。例如银行取款事务分为2个步骤(1)存折减款(2)提取现金,2个步骤必须同时完成或者都不完成。

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

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


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


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


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

     

    • READ UNCOMMITTED:未提交读
      • 事务中的修改,即使没有提交,对其他事务也是可见的
      • 产生的问题:脏读。这里假设两个事务并行:
        • A事务对某个数值a进行修改
        • B事务执行读取该数值a并进行其他修改,依赖于a
        • A事务回滚,发生脏读

     

    • READ COMMITTED:提交读
      • 一个事务中的修改在其提交之前,对于其他事务都是不可见的
      • 产生的问题:不可重复读。这里假设两个事务并行:
        • A事务对某个数值a进行读取,进行计算
        • B事务对数值a进行修改并提交,该修改对于A变为可见
        • A事务再次进行数值a的读取,发生不可重复读

     

    • REPEATABLE READ:可重复读
      • 在一个事务的执行过程中,读到的数据一直是事务开始时的数据
      • 产生的问题:幻读。这里假设两个事务并行:
        • A事务读取某个值a大于1的数据并计算行数
        • B事务插入了一行a为1的数据,并提交
        • A事务再次读取,发现行数不一致,发生幻读

     

    • SERIALIZABLE:可重复读
      • 强制所有事务都并行执行,对于读取的每一行数据都加上锁

     

     

    引入知乎的一篇好文章:

    MySQL的四种事务隔离级别

    展开全文
  • 数据库事务隔离实战

    万次阅读 2018-09-04 22:21:26
    俗话说书上得来终觉浅,在回忆数据库事务相关知识时,在事务隔离这块总是感觉没吃透,于是决定在mysql进行实战演练以加强知识的印象。 首先,介绍下数据库事务特性,简称ACID: Atomic 原子,事务中所有操作是...

    俗话说书上得来终觉浅,在回忆数据库事务相关知识时,在事务隔离性这块总是感觉没吃透,于是决定在mysql进行实战演练以加强知识的印象。

    首先,介绍下数据库事务特性,简称ACID:

    Atomic 原子性,事务中所有操作是一个整体要么全部完成,要么不做操作,不会有做到一半的情况。

    Consistency 一致性,事务执行成功后,操作肯定是正确执行的,例如给你账户加100块,不可能结果给你加了50块。

    Isolation 隔离性,各个事务之间是独立的。

    Duration 持久性,事务完成后的操作做的修改是永久

    我们这里重点讨论Isolation 隔离性,理解隔离性请以数据库单个事务为单位,一个事务中可以包含查询、修改等多个操作,以下为在mysql数据库进行的操作,先来了解几个操作时使用的命令:

    #获取当前数据库事务隔离级别
    SELECT @@tx_isolation;
    #修改当前数据库事务隔离级别
    #read-uncommitted 读未提交
    #read-committed 读已提交
    #REPEATABLE-READ 可重复读
    #SERIALIZABLE
    set tx_isolation = 'read-uncommitted';
    
    
    #手动开启一个mysql事务,并在之后执行相关sql语句
    START TRANSACTION #手动开启事务
    
    ROLLBACK #回滚
    
    COMMIT #事务提交

    mysql下开两个窗口,将隔离级别设置为read-uncommitted 读未提交 ,试下事务A和事务B同时更新一条记录,到最后提交时,事务A执行成功COMMIT,但事务B执行失败进行ROLLBACK,观察回滚后记录信息。

    以下为执行步骤,大家可以随便找个表试下,事务A和事务B分别在两个窗口中,并且设置了set tx_isolation = 'read_uncommitted'; 

    #1.开启事务A
    START TRANSACTION
    #3.事务A更新用户年龄
    UPDATE girl SET age = 44 WHERE id = 13;
    #5.执行成功,提交
    COMMIT
    #2.开启事务B
    START TRANSACTION
    #4.事务B更新用户年龄
    UPDATE girl SET age = 66 WHERE id = 13;
    #6.执行失败,回滚
    ROLLBACK

    大家可以尝试的修改不同的隔离级别看看执行效果,便于大家对各个隔离级别的深入理解。

    展开全文
  • 数据库事务隔离以及隔离级别

    千次阅读 2018-09-05 15:56:39
    一致(consistency):隔离执行事务时(换言之,在没有其他事务并发执行的情况下)保持数据库的一致。 隔离(isolation):尽管多个事务可能并发执行,但系统保证,对于任何一对事务Ti和Tj...

    事务的概念

    事务是访问并可能更新各种数据项的一个程序执行单元。

    事务的特性(ACID 特性)

    原子性(atomicity):事务的所有操作在数据库中要么全部反映出来,要么完全不反映。

    一致性(consistency):隔离执行事务时(换言之,在没有其他事务并发执行的情况下)保持数据库的一致性。

    隔离性(isolation):尽管多个事务可能并发执行,但系统保证,对于任何一对事务Ti和Tj,在Ti看来,Tj或者在Ti开始之前已经完成执行,或者在Ti完成之后开始执行。因此,每个事务都感觉不到系统中有其他事务在并发执行。

    持久性(durability):一个事物成功完成后,它对数据库的改变必须是持久的,即使出现系统故障。

    事务隔离性级别

    SQL标准规定的隔离性级别

    可串行化(serializable):通常保证可串行化调度。然而,一些数据库系统对该隔离性级别的实现在某些情况下允许非可串行化执行。最高隔离性级别。强制事务串行执行。可避免脏读、不可重复读、幻读的发生。

    可重复读(repeatable read):只允许读取已提交数据,而且在一个事务两次读取一个数据项期间,其他事务不得更新该数据。但该事务不要求与其他事务可串行化。例如:当一个事务在查找满足某些条件的数据时,它可能找到一个已提交事务插入的一些数据,但可能找不到该事务插入的其他数据。保证在同一个事务中多次读取同样数据的结果是一样的。可避免脏读、不可重复读的发生。

    已提交读(read committed):只允许读取已提交数据,但不要求可重复读。比如,在事务两次读取一个数据项期间,另一个事务更新了该数据并提交。一个事务只能读取已经提交的事务所做的修改。换句话说,一个事物所做的修改在提交之前对其他事务是不可见的。可避免脏读的发生。

    未提交读(read uncommitted):允许读取未提交数据。这是SQL允许的最低一致性级别。事务中的修改,即使没有提交,对其他事务也是可见的。最低级别,任何情况都无法保证。

    以上所有隔离性级别都不允许脏写(dirty write),即如果一个数据项已经被另外一个尚未提交或中止的事务写入,则不允许对该数据项执行写操作。

    许多数据库系统运行时的默认隔离性级别是已提交读。在SQL中,除了接受系统的默认设置,还可以显式地设置隔离性级别。例如,语句“set transaction isolation level serializable;”将隔离性级别设置为可串行化,其他隔离性级别可类似设定。

    修改隔离性级别必须作为事务的第一条语句执行。此外,如果单条语句的自动提交默认打开,则必须关闭。

    展开全文
  • 数据库事务隔离实战例子

    千次阅读 2018-09-05 14:31:40
    接着上回数据库事务隔离实战的章节继续操作,主要针对几个只要问题进行操作和复现: 脏读:一个事务中,一开始读取的数据就为脏数据 不可重复读:一个事务中,一开始读取的数据,再次读取时数据发生了改变 幻读...
  • 彻底理解数据库事务

    千次阅读 2017-04-06 18:07:40
    在计算机术语中,事务(Transaction)是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit),通常就是指数据库事务。概念一个数据库事务通常包含对数据库进行读或写的一个操作序列。它的存在有以下两个...
  • 数据库事务详解

    千次阅读 2021-02-24 17:15:40
    数据库事务详解 提示:事务主要是为了保证复杂数据库操作数据的一致,尤其是在并发访问数据时。MySQL事务主要用于处理操作量大,复杂度高的数据。 一、什么是数据库事务? 从根本上理解MySQL事务,是指作为单个...
  • 1.事务(Transaction)是并发控制的基本单位。 所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。...事务数据库维护数据一致的单位,在每个事务结束时,...
  • Django 数据库事务

    万次阅读 2016-03-30 16:07:46
    管理数据库事务Django框架提供了好几种方式来控制和管理数据库事务。(以下Django框架会简化为Django,读者可自行脑补框架两字)Django框架默认的事务行为自动提交作为Django默认的事务行为,它表现形式为:每次...
  • 数据库事务的简单介绍

    千次阅读 2019-11-04 16:28:22
    数据库事务
  • mysql数据库事务类型

    千次阅读 2017-09-25 16:36:01
    数据库事务有不同的隔离级别,不同的隔离级别对锁的使用是不同的,锁的应用最终导致不同事务的隔离级别。 隔离分为四个级别: 1读未提交:(Read Uncommitted) 2读已提交(Read Committed) 大多数数据库默认的隔离...
  • 数据库事务处理

    千次阅读 2019-03-31 18:21:04
    数据库事务处理 数据库中ACID 事务具有4个基本特征,分别是:原子(Atomicity)、一致(Consistency)、隔离(Isolation)、持久(Duration) 原子:事务的原子是指事务必须是一个原子的操作序列单元。...
  • 数据库事务管理

    千次阅读 2018-04-09 23:15:49
    事务的概念 事务是访问并可能更新各种数据项的一个程序执行单元。事务有四个基本性质: 1、原子事务中的全部操作要么全部做...3、一致:在没有其他事务并发执行的情况下,保持数据库的一致 4、持久:一...
  • ... 数据库事务  编辑 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都...
  • 1. 数据库事务 数据库事务是指作为单个逻辑单元执行的一系列操作,可以认为事务就是一组不可分割的SQL语句。 2. 数据库事务的ACID属性 数据库事务必须具备ACID特性,ACID是: Atomic原子: 事务...
  • 数据库事务四大特性 原子、一致、分离、持久 (1)原子  事务的原子指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子。  ...
  • 分布式数据库事务

    千次阅读 2018-07-19 10:59:23
    这时候事务不能只依靠本地数据库事务支持来实现了。 二、集中实现方案 2.1 两阶段提交(2PC) 假设事务在a,b两个数据库上。 那现在要对这两个数据库实现事务支持, 就是分别操作a,b上的事务, 由一个中间件...
  • 数据库事务必须满足4个特性:原子, 一致, 隔离, 持久,它们英文单词首字母合起来就是:ACID 在这些事务特性中,数据“一致”为最终目标,其他特性都是为达到这个目标而采取的措施和手段。数据库...
  • 数据库 事务级别介绍

    千次阅读 2018-03-30 12:30:54
    数据库 事务级别介绍 2个概念:事务,锁。 事务:逻辑单元内的一系列操作,要么全部完成执行,要么全部不执行。 锁:将某数据的操作加锁,则其他人无法获取当前数据的当前操作。避免单位时间内的数据覆盖,影响...
  • 数据库 事务的特性ACID

    千次阅读 2014-07-27 09:26:30
    数据库 事务的特性ACID 事务(Transaction)是并发控制的基本单位。... 所谓事务,它是一个操作序列,这些操作要么都执行,要么都不... 数据库事务必须具备ACID特性,ACID是Atomic(原子)、Consistency(一致
  • 【Laravel】数据库事务

    千次阅读 2017-12-20 21:35:44
    最近公司项目集成了一个支付的模块。由于网络世界是不确定的。说不定哪个操作就出了问题。为了保证数据的正确我们不得不考虑使用数据库事务这一特性。本做一个简单的Laravel数据库事务的介绍。
  • 数据库事务的四大特性(ACID)

    千次阅读 2019-06-18 17:10:04
    数据库事务的四大特性 1, 什么是数据库事务? 数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 意思就是一连串的数据库操作,即一串增删查改的集合。 2, 数据库事务做了什么? ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 502,844
精华内容 201,137
关键字:

数据库的事务性