【概念原理】四种SQL事务隔离级别和事务ACID特性
2019独角兽企业重金招聘Python工程师标准>>>
事务是一组读写操作,并且具有只有所有操作都成功才算成功的特性。
事务隔离级别
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等),那么间接行为也必须成功,否则事务失败
如果一个系统包含多个数据节点,那么一致性强制要求修改必须传播到所有节点
虽然事务可以并行执行,但系统就好像在串行执行事务一样,即与串行执行事务导致的最终系统状态是一样的
隔离性:隔离性保证一个事务中未提交的修改对外界不可见。隔离性通过锁机制达到。
持久性:一个成功的事务必须永久改变系统的状态,在事务执行结束之前状态改变被记录在事务日志中。这样万一系统崩溃或断电,未完成的事务也可以回放。
转载于:https://my.oschina.net/feichexia/blog/202520
【概念原理】四种SQL事务隔离级别和事务ACID特性相关推荐
- polardb mysql 事务隔离级别_事务的四种隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted .Read committed .Repeatable read .Serializable .而且,在事务的并发操作中可能 ...
- MySQL事务篇:ACID原则、事务隔离级别及事务机制原理剖析
引言 众所周知,MySQL数据库的核心功能就是存储数据,通常是整个业务系统中最重要的一层,可谓是整个系统的"大本营",因此只要MySQL存在些许隐患问题,对于整个系统而言都是致命的 ...
- mysql 默认事务隔离级别_MySQL 事务隔离级别详解
个人公众号『码农札记』,欢迎关注,查看更多精彩文章. 简介: MySQL的事务隔离级别一共有四个,分别是读未提交.读已提交.可重复读以及可串行化. 四个特性ACID 原子性 (Atomicity) 事 ...
- mysql jdbc 事务隔离级别_JDBC事务隔离级别,看完这篇文章就够了!
作者:DencyCheng 来源:CSDN 1. 事务基本概念 一组要么同时执行成功,要么同时执行失败的SQL语句.是数据库操作的一个执行单元. 事务开始点 连接到数据库上,并执行一条DML语句ins ...
- Spring事务隔离级别,事务传播行为
什么是事务: 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. Spring事务的隔离性(5种) 在讲隔离界别前,我们先来讲讲下基础知识 事务的特性(ACID) 原子性 ...
- 什么是事务隔离级别,事务隔离级别详解
生命中曾经有过的所有灿烂,原来终究,都需要用寂寞来偿还. 在IT行业,无论是oracle,mysql,还是postgresql数据库,为了保证数据库并发性能和数据一致性,都实现了MVCC功能(多版本并 ...
- 事务隔离级别与事务传播行为简介
数据库的隔离级别就是控制并发情况下事务中间的数据读取,这些事物隔离级别就是为了处理脏读.幻读和不可重读的情况. 1. 脏读 在并发情况下,如果一个事务读取了另一个事务中未提交的数据,此时,如果另一个事 ...
- mysql事物及事物等级_MySQL事物原理及事务隔离级别
mysql事物 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取.事务的正确执行使得数据库从一种状态转换为另一种状态. 事务必须服从ISO/IEC所制定的ACID原则.AC ...
- mysql的事务隔离级别与锁的关系、sql日志、Spring事务的特性
文章目录 数据库事务介绍 什么是事务的隔离级别? 脏读幻读不可重复读的示例? mysql默认的隔离级别 Mysql锁有哪些 for update 什么是间隙锁?(Next-Key) mysql的日志 ...
最新文章
- java 连续打印_Java实现连续打印ABC
- oracle+结果拆分,ORACLE字符拆分函數返回結果集
- java.lang.ClassNotFoundException: Didn't find class com.tzutalin.dlibtest.MainActivity_
- sqlserver 类似oracle的rownum功能: row_number
- linux内存free低,Linux上的内存使用情况与`free`不匹配
- clr enabled Server Configuration Option
- 算法训练 K好数(dp+动态规划)
- FirstBird--项目流程
- 大数据服务社会的一个有益实践
- zoj 3811 untrusted patrol
- IteratorX 正式开源:超好用的 jdbc reader
- python编写窗口怎么清除内容_如何删除或销毁tkinter中的标签?
- Win7开发的VC2012程序在XP上无法运行
- 洛谷题单-【算法1-5】贪心
- 如何合并多个工作表或多个工作簿?3种合并方法都在这
- JavaScript获取法定节假日
- python如何创建一个文件夹_利用Python怎么创建一个文件夹
- office2016和office365等office全版本JH
- PHP intval()函数利用
- Windows orb-slam2 单目测试工程
热门文章
- 优秀设计师必备:视觉传达设计与视觉思维
- 计算机优化英语,英语对计算机专业的重要性及如何提高英语水平
- java 字符串用法_java中字符串的用法
- php大于等于符号怎么打出来_PHP常用的特殊运算符号(连续小于符号,三个小于符号,eot,eod,echo示例,print示例)...
- RDMA技术详解(三):理解RDMA Scatter Gather List
- LetCode: 5. 最长回文子串
- MariaDB(MySQL)_MariaDB(Mysql)-主从搭建
- python 断点下载_python多进程断点续传分片下载器
- IIS6下配置fastcgi的php的教程
- bzoj3192: [JLOI2013]删除物品