数据库事务隔离级别(转)
2019独角兽企业重金招聘Python工程师标准>>>
一,事务的4个基本特征
Atomic(原子性):
事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要
么全部成功,要么全部失败。
Consistency(一致性):
只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初
状态。
Isolation(隔离性):
事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正
确性和完整性。同时,并行事务的修改必须与其他并行事务的修改
相互独立。
Durability(持久性):
事务结束后,事务处理的结果必须能够得到固化。
以上属于废话
二,为什么需要对事务并发控制
如果不对事务进行并发控制,我们看看数据库并发操作是会有那些异常情形
Lost update:
两个事务都同时更新一行数据,但是第二个事务却中途失败退出,
导致对数据的两个修改都失效了。
Dirty Reads:
一个事务开始读取了某行数据,但是另外一个事务已经更新了此数
据但没有能够及时提交。这是相当危险的,因为很可能所有的操作
都被回滚。
Non-repeatable Reads:
一个事务对同一行数据重复读取两次,但是却得到了不同的结果。
Second lost updates problem:
无法重复读取的特例。有两个并发事务同时读取同一行数据,然后其
中一个对它进行修改提交,而另一个也进行了修改提交。这就会造成
第一次写操作失效。
Phantom Reads:
事务在操作过程中进行两次查询,第二次查询的结果包含了第一次查
询中未出现的数据(这里并不要求两次查询的SQL语句相同)。这是
因为在两次查询过程中有另外一个事务插入数据造成的。
三, 数据库的隔离级别
为了兼顾并发效率和异常控制,在标准SQL规范中,定义了4个事务隔
离级别,(ORACLE和SQLSERER对标准隔离级别有不同的实现 )
Read Uncommitted:
直译就是"读未提交",意思就是即使一个更新语句没有提交,但是别
的事务可以读到这个改变.这是很不安全的.
Read Committed:
直译就是"读提交",意思就是语句提交以后即执行了COMMIT以后
别的事务就能读到这个改变.
Repeatable Read:
直译就是"可以重复读",这是说在同一个事务里面先后执行同一个
查询语句的时候,得到的结果是一样的.
Serializable:
直译就是"序列化",意思是说这个事务执行的时候不允许别的事务
并发执行.
四,隔离级别对并发的控制
下表是各隔离级别对各种异常的控制能力:
LU | DR | NRR | SLU | PR | |
RU | N | Y | Y | Y | Y |
RC | N | N | Y | Y | Y |
RR | N | N | N | N | Y |
S | N | N | N | N | N |
转载于:https://my.oschina.net/pangzhuzhu/blog/327024
数据库事务隔离级别(转)相关推荐
- 数据库事务隔离级别-- 脏读、幻读、不可重复读(清晰解释)
一.数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted .Read committed .Repeatable read .Serializable ,这四 ...
- 数据库事务隔离级别+Spring 声明性事务隔离级别
数据库事务隔离级别 数据库提供了四种事务隔离级别, 不同的隔离级别采用不同的锁类开来实现. 在四种隔离级别中, Serializable的级别最高, Read Uncommited级别最低. 大多数数 ...
- mysql数据库事务隔离级别是_数据库事务隔离级别-MySQL为例 · Sean
在银行系统的存取款过程中,当遇到对一个账户并发存取的时候,系统该如何处理比较好.可能不少人会想到线程同步,然而在应用层使用同步会导致对象锁定,大大影响并发效率.此时,充分利用数据库的事务隔离机制可以很 ...
- 概述MySQL数据库---事务隔离级别
同一个应用程序中的多个事务或不同应用程序中的多个事务在同一个数据集上并发执行时, 可能会出现许多意外的问题,事务并发处理可能引起的问题可分为如下三种类型: 脏读(Drity Read): 已知有两个事 ...
- 数据库事务隔离级别及脏读、不可重复读、幻读的理解
开篇声明,由于两位大佬排版不够美观,然后又发现一些歧义,因此我集大佬之所长,精心整理并加以完善,可放心阅读. http://blog.csdn.net/yuxin6866/article/deta ...
- 数据库事务隔离级别有哪些?
数据库事务隔离级别: 1.Read Uncommitted(读未提交): 2.Read Committed(读已提交): 3.Repeatable Read(可重复读取): 4.Serializabl ...
- mysql数据库事务隔离级别演示
mysql数据库事务隔离级别演示 关键词: 一.基本概念 二.事务的四个特性(ACID) 三.事务的用法 3.1 相关命令 3.2 使用步骤 四.数据库的隔离级别 五.示例演示(每组事务结束手动com ...
- PG数据库事务隔离级别
Postgres数据库事务隔离级别介绍 0. What is Database Transaction? 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列 ...
- 数据库事务隔离级别举例详解
目录 一.前言 1.1.4种事务隔离级别 1.2.3种读现象 二.举例说明 2.1.读未提交 2.2.读已提交 2.3.可重复读 2.4.串行化 一.前言 本文主要对4种事务隔离级别,具体举例说明各自 ...
- 数据库事务隔离级ORACLE数据库事务隔离级别介绍
本文系转载,原文地址:http://singo107.iteye.com/blog/1175084 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted.Read committ ...
最新文章
- 网口相机设置自动复位时间(心跳时间)
- TreaponseHeader
- 用VIM打造C语言编写器
- linux 安装反病毒软件
- clickhouse hbase性能对比_如何让 HBase 更快、更稳、更省钱
- 程维谈智慧交通:我们赶上好时代 走出了自己路
- 2017.9.15 最大数maxnumber 思考记录
- 【报告分享】2021上半年短视频及电商生态研究报告.pdf(附下载链接)
- 乐高机器人编程和编程的区别
- 销售自用计算机损益计入哪里,用友创业者4.0下的ERP沙盘模拟经营规则中,销售所需紧急采购产品时,按成品直接成本的( )倍直接扣除现金,付款即到货,紧急采购多付出的成本计入费用表损失项。...
- google四件套之Dagger2。从入门到爱不释手,之:Dagger2进阶知识及在Android中使用
- 用ubantu14.04登录吉大校园网
- 基于python的计算基因组_【ROSALIND】【练Python,学生信】05 计算DNA序列GC含量
- 2020-10-10
- 手机突然黑屏是什么原因
- JavaScript【狂神笔记】
- 中公教育python教师_为什么中公教育、华图的老师不自己去考公务员?
- SECOND: Sparsely Embedded Convolutional Detection
- ubuntu装后的常用软件的安装与配置
- 毫米波雷达ADC数据采集
热门文章
- C语言实现红黑树(附完整源码)
- QT绘制水平百分比条形图。
- QT的QMapIterator类的使用
- QT的QDesignerFormWindowInterface类的使用
- C++ Opengl 显示TGA文件和扩展名源码
- 经典C语言程序100例之五七
- 17_clickhouse分布式集群部署
- nginx在Centos下的安装,转:http://www.linuxidc.com/Linux/2016-09/134907.htm
- 1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等
- svn数据仓库配置,权限配置