事务

1、定义:所有操作必须成功完成,否则在每个操作中所作的所有更改都会备撤销。

2、事务的ACID

原子性atomicity   一致性consistency   隔离性isolation   持续性durability

2-1、原子性: 事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做

2-2、一致性: 事务执行的结果必须是数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,

就说明数据库处于一致性状态。

2-3、隔离性: 一个事务的执行不能被其他事务干扰。

2-4、持续性: 即永久性,一个事务一旦提交,它对数据库中数据的改变就应该是永久行的。

3、MySQL的四中隔离级别

3-1、read uncommitted(读取未提交的内)

所有事务都可以看到其他未提交事务的执行结果。 也称之为脏读,很少应用与实际

3-2、read committed(读取提交内容)

一个事务只能看见已提交事务所做的改变。

3-3、repeatable read(可重复读)

MySQL默认事务隔离级别,确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过,会导致幻读。

幻读指用户读取某一范围数据行时,另一个事务又在该范围内插入了新行。当用户再读取该范围的数据行时,会发现出现新的幻影行

3-4、serializable(可串行化)

在每个读的数据行上加上共享锁。这个级别可能导致大量的超时现象和锁竞争。

4、事务隔离的原理

1、一次封锁or两段锁

在大量并发访问时候,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会用到哪些数据,

然后全部锁住,在方法运行之后,在全部解锁。但这种方式不适用于数据库,因为数据库不知道会用到哪些数据。

数据库采用的是两段锁协议,将事务分成两个阶段,加锁阶段和解锁阶段。

加锁阶段: 在对任何数据进行读操作之前要申请并获得S锁(共享锁,其他事务可以继续加共享锁,但不能加排它锁),在进行写

操作之前要申请X锁(排它锁,其他事务不能再获得任何锁)。如果加锁不成功的话,则事务进入等待状态,直到加锁成功才能继续执行。

解锁阶段: 当事务释放了一个封锁以后,事务进入解锁阶段,在该阶段只能进行解锁操作不能再解析加锁操作。

不可重复读与幻读的区别:

不可重复读重点在于update和delete,而幻读在于insert

5、mvcc在MySQL的innodb实现

在innodb中,会在每行数据后添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另一个记录这行

数据何时过期(或者被删除)在实际操作中,存储的并不是时间,而是事务的版本号,每开启一个新事务,事务的版本号就会

递增。在可重复读的事务隔离级别下:

select时,读取创建版本号不大于当前事务版本好,删除版本号为空或大于当前事务版本号

insert时,保持当前事务版本号为行的创建版本号

delete时,保持当前版本号为行的删除版本号

update时,插入一条新记录,保存当前事务版本号为行创建的版本号,同时保持当前事务版本号到原来删除的行

MySQL系列之二四种隔离级别及加锁的更多相关文章

  1. MySQL数据库中的四种隔离级别

    事务的隔离性比想象的要复杂,在 SQL 标准中定义了四种级别的隔离级别.通常而言,较低级别的隔离通常可以执行更高的并发,系统的开销也更低 READ UNCOMMITTED 该级别为未提交读.在该级别中 ...

  2. mysql四大特性与四种隔离级别

    四大特性 1:原子性.事务是一个不可分割的整体,事务开始的操作,要么全部执行,要么全部不执行. 2:隔离性.同一时间,只允许一个事务请求同一组数据.不同的事务彼此之间没有干扰. 3:一致性.事务开始前 ...

  3. MySql四种隔离级别

    什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...

  4. 面试问烂的 MySQL 四种隔离级别,看完吊打面试官!

    阅读本文大概需要 5.6 分钟. 来源:网络 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操 ...

  5. 【转载】mysql 四种隔离级别分析

    sql标准中,有四种隔离级别,各个离级别都有各自的规则,隔离级别越低,允许并发越大,消耗的资源越少,但是越不安全,下面就mysql数据库来分别介绍一下(每个存储引擎实施的隔离级别会有稍微的不同)mys ...

  6. MySQL 四种隔离级别

    什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...

  7. SQL事务的四种隔离级别和MySQL多版本并发控制

      SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的那些改变时可见的,那些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销. ReadUncommitted( ...

  8. 数据库操作事物的四大特性以及MySQL数据库的四种隔离级别

    1 .事物操作数据库的四大特性(ACID) 1.原子性 (Atomicity) 原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚. 2.一致性 (Consistency) 一致性:简 ...

  9. 简单理解:数据库的一致性与四种隔离级别(+MySQL实现)

    并行数据库存在着几种常见不一致问题: 1.更新丢失:两个并发的写进程同时修改某内容,一个没修改完提交之后另一个又提交,导致其覆盖了第一个提交的写进程内容. 2.脏读:一个操作读到了另外一个操作没有提交 ...

随机推荐

  1. ht-7 treeSet特性

    TreeSetTreeSet可以对set集合中的元素进行排序,默认按照asic码表的自然顺序排序,之所以treeset能排序是因为底层是二叉树,数据越多越慢,TreeSet是依靠TreeMap来实现的 ...

  2. 【2019 Multi-University Training Contest 7】

    01:https://www.cnblogs.com/myx12345/p/11653845.html 02: 03: 04: 05: 06:https://www.cnblogs.com/myx12 ...

  3. sqlserver库相关-表相关-3

    原文: https://www.cnblogs.com/wlx520/p/4684441.html 库相关 建库 --创建School数据库之前:首先判断数据库是否存在,若存在则删除后再创建,若不存在 ...

  4. Node对象的一些方法

    Node对象是什么提供了 DOM的标准规范提供了Node对象,该对象主要提供了解析DOM节点树结构的属性和方法,DOM树结构主要是依靠节点进行解析,称为DOM节点树结构.Node对象是解析DOM节点树 ...

  5. SecondContract 接口类

    package com.test.mvp.mvpdemo.mvp.v6; import com.test.mvp.mvpdemo.mvp.v6.basemvp.IBasePresenter;impor ...

  6. ICMP(Internet Control Message Protocol)网际控制报文协议初识

    ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网 ...

  7. 利用AddressBook.framework框架获取iOS系统通讯录数据

    此方法是使用AddressBook.framework框架获取通讯录信息 第一步.在info.plist文件里面配置访问权限 第二步.导入头文件 #import <AddressBook/Add ...

  8. PADS 学习资料

    PADS软件: PADS9.5_3in1.7z   链接: http://pan.baidu.com/s/1epO4Y    密码: zltl 打不开程序的博友,请看你的电脑有没有安装常用软件运行库 ...

  9. eclipse下实现热部署,tomcat不重新reload context

    1. 打开server的编辑器 2. 在modules页签内,修改auto load属性为disabled

  10. 动态规划-递推-HDU2048

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2048 全错=全不匹配 设当前全错的个数是dp[n] 那么前(n-1)个全错的话,第n个数就可以从前(n- ...