【概念原理】四种SQL事务隔离级别和事务ACID特性
摘要: SQL事务隔离级别和事务的ACID特性
事务是一组读写操作,并且具有只有所有操作都成功才算成功的特性。
事务隔离级别
SQL事务隔离级别由弱到强分别是:READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE。
下表是这四种事务隔离级别对脏读、不可重复读和幻读的支持情况:
| 隔离级别 | 脏读(Dirty read) | 不可重复读(Non-repeatable read) | 幻读(Phantom read) |
| READ_UNCOMMITED | 允许 | 允许 | 允许 |
| READ_COMMITED | 不允许 | 允许 | 允许 |
| REPEATABLE_READ | 不允许 | 不允许 | 允许 |
| SERIALIZBLE | 不允许 | 不允许 | 不允许 |
脏读:
脏读指的是一个事务允许读取其他正在运行的事务还没有提交的改变。这种情况的发生主要因为没有加锁。
不可重复读:
不可重复读是指事务A读取了事务B已经提交的更改数据。不可重复读指的是一个事务内连续读却得到不同的结果,主要因为同时有其他事务更新了我们正在读取的数据。要达到允许可重复读的目的,我们必须让当前事务保持一个读共享锁。
幻读:
幻读指的是事务不是串行发生时发生的一种现象,是事务A读取了事务B已提交的新增数据。例如第一个事务对一个表的所有数据进行修改,同时第二个事务向表中插入一条新数据。那么操作第一个事务的用户就发现表中还有没有修改的数据行,就像发生了幻觉一样。解决幻读的方法是增加范围锁(range lock)或者表锁。四种事务隔离级别中只有SERIALIZABLE能够解决幻读。
MySQL的默认事务隔离级别是REPEATABLE_READ,ORACLE、SQL Server、DB2和PostgreSQL的默认事务隔离级别是READ_COMMITED。
事务ACID特性
事务的ACID特性分别指的是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
下面分别简述:
原子性:将一组操作组合成原子操作,只有所有操作都成功才算成功,否则只要有一个操作失败就全部失败
一致性:事务必须保证系统处于一致性状态,不管事务如何交织并发执行。必须保证下面几条:
如果一个操作触发了间接行为(CASCADE、TRIGGER等),那么间接行为也必须成功,否则事务失败
如果一个系统包含多个数据节点,那么一致性强制要求修改必须传播到所有节点
虽然事务可以并行执行,但系统就好像在串行执行事务一样,即与串行执行事务导致的最终系统状态是一样的
隔离性:隔离性保证一个事务中未提交的修改对外界不可见。隔离性通过锁机制达到。
持久性:一个成功的事务必须永久改变系统的状态,在事务执行结束之前状态改变被记录在事务日志中。这样万一系统崩溃或断电,未完成的事务也可以回放。
【概念原理】四种SQL事务隔离级别和事务ACID特性的更多相关文章
- mysql锁及四种事务隔离级别笔记
前言 数据库是一个共享资源,为了充分利用数据库资源,发挥数据 库共享资源的特点,应该允许多个用户并行地存取数据库.但这样就会产生多个用户程序并 发存取同一数据的情况,为了避免破坏一致性,所以必须提供并 ...
- MySQL事物原理及事务隔离级别
mysql事物 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取.事务的正确执行使得数据库从一种状态转换为另一种状态. 事务必须服从ISO/IEC所制定的ACID原则.AC ...
- SQL Server 事务隔离级别
一.事务隔离级别控制着事务的如下表现: 读取数据时是否占用锁以及所请求的锁类型. 占用读取锁的时间. 引用其他事务修改的行的读操作是否: 在该行上的排他锁被释放之前阻塞其他事务. 检索在启动语句或事务 ...
- SQL Server中锁与事务隔离级别
SQL Server中的锁分为两类: 共享锁 排它锁 锁的兼容性:事务间锁的相互影响称为锁的兼容性. 锁模式 是否可以持有排它锁 是否可以持有共享锁 已持有排它锁 否 否 已持有共享锁 否 是 SQL ...
- SQL Server 事务隔离级别详解
标签: SQL SEERVER/MSSQL SERVER/SQL/事务隔离级别选项/设置数据库事务级别 SQL 事务隔离级别 概述 隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一 ...
- (转)SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)
五.锁与事务隔离级别 事务隔离级别简单的说,就是当激活事务时,控制事务内因SQL语句产生的锁定需要保留多入,影响范围多大,以防止多人访问时,在事务内发生数据查询的错误.设置事务隔离级别将影响整条连接. ...
- SQL 事务隔离级别
转载来源:https://www.cnblogs.com/chenmh/p/3998614.html 标签: SQL SEERVER/MSSQL SERVER/SQL/事务隔离级别选项/设置数据库事务 ...
- 【转】SQL Server 事务隔离级别详解
SQL 事务隔离级别 概述 隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用. 步骤 事务隔离级别通过影响读操作来间接地影响写操作:可以在回话级别上设置事务隔离级别也可 ...
- SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)
五.锁与事务隔离级别 事务隔离级别简单的说,就是当激活事务时,控制事务内因SQL语句产生的锁定需要保留多入,影响范围多大,以防止多人访问时,在事务内发生数据查询的错误.设置事务隔离级别将影响整条连接. ...
随机推荐
- python全栈开发day35-线程、协程
一.线程 1.线程 1).什么是线程 线程是cpu调度的最小单位 线程是进程的必要组成单位 一个进程里至少含有一个线程 2).主线程 程序开始运行的视乎,就产生了一个主线程来运行这个程序 3).子线程 ...
- Codeforces 269C Flawed Flow (看题解)
我好菜啊啊啊.. 循环以下操作 1.从队列中取出一个顶点, 把哪些没有用过的边全部用当前方向. 2.看有没有点的入度和 == 出度和, 如果有将当前的点加入队列. 现在有一个问题就是, 有没有可能队列 ...
- JsDOM操作
DOM(文档对象模型) 在JS中,所有的事物都是节点,元素.文本等都是节点.把浏览器中的标签看成树状结构,每个标签看成一个节点(dom元素). 应用场景:可以通过节点进行DOM对象的增删改查 获取DO ...
- (转)CASE WHEN 用法
Case具有两种格式.简单Case函数和Case搜索函数. 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- hdu2973 YAPTCHA【威尔逊定理】
<题目链接> 题目大意: The task that is presented to anyone visiting the start page of the math departme ...
- metasploit常见服务的漏点扫描模块
弱点扫描 根据信息收集结果搜索漏洞利用模块 结合外部漏洞扫描系统对大IP地址段进行批量扫描 可以考虑对单个ip,单个服务进行扫描 NVC 密码破解端口:5900use auxiliary/scanne ...
- python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
1 引言 Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用.本文主要介绍Pandas的几种数据选取的方法. Pandas中,数据主要保存为Dataframe和Se ...
- 阿里云服务器配置免费https服务
过程总述 购买服务器,购买域名,备案 申请ssl证书 DNS验证 上传证书,配置nginx 很关键,打开端口!!!阿里云的443端口默认是不打开的 1.购买服务器,域名,备案 服务器我是买的阿里云的, ...
- File类基本用法
[例子1]创建一个新文件. import java.io.*; class hello{ public static void main(String[] args) { File f=new Fil ...
- UVA.12230.Crossing Rivers(期望)
题目链接 /* 到达一条河时,船在河中的位置是随机的,所以船到达岸边需要的时间在 0~2l/v 均匀分布,所以船到岸的期望为 (0+2l/v)/2 过河需要 l/v 的时间,所以过一条河总的期望为 ( ...