事务的隔离 transaction isolation
总共有4钟transaction isolation. Serializable level的transaction,并发运行和挨个执行的结果是一样的。并发的transaction会产生缺陷(phenomena)。Serialization level 的transaction不会有这些缺陷(phenomena)。
在不同transaction levels 中被消灭的缺陷(phenomena)
sex |
name |
male |
李雷 |
female |
韩梅梅 |
Dirty read: 多条并发transaction中,一个transaction中的sql读取了另一个transaction未提交(committed)的数据。
脏读:
transaction1 |
transaction2 |
Begin: |
Begin: |
Select * from user where sex=’male’; 查出:李雷 |
|
Insert into user (‘Jack’, ‘male’) |
|
Select * from user where sex=’male’; 查出:李雷和 Jack |
|
commit |
Nonrepeatable read: 在一个transaction中,一条数据被先后读了两次。由于这中间另外一个transaction修改了这条数据,并提交了,导致第二次读出来的数据和第一次不一样。
transaction1 |
transaction2 |
Begin: |
Begin: |
Select * from user where sex=’male’; 查出:李雷 |
|
Insert into user (‘Jack’, ‘male’) |
|
commit |
|
Select * from user where sex=’male’; 查出:李雷和 Jack |
|
Phantom read: 在一个transaction中,一条查询sql执行了两次。由于中间有另一个transaction提交了数据,导致两次查出来的数据集不同。
transaction1 |
transaction2 |
Begin: |
Begin: |
Select * from user where sex=’male’; 查出:李雷 |
|
Insert into user (‘Jack’, ‘male’) |
|
commit |
|
Select * from user where sex=’male’; 查出:李雷和 Jack |
|
Serialization anomaly:多个transaction并发执行的结果和挨个执行的结果不同。
transaction1 |
transaction2 |
Begin: |
Begin: |
Select * from user where sex=’male’; 查出:李雷 |
|
Insert into user (‘Jack’, ‘male’) |
|
commit |
|
Insert into user (‘MR李雷, ‘male’) 必须要有这条插入语句,因为只读事务不会混滚 |
|
Commit; 提交的时候会回滚,因为查询语句在事务的中途失效了。 |
|
不同的事务隔离级别对应解决的问题
Isolation level |
Dirty read |
Nonrepeatable read |
Read phantom |
Serialization anomaly |
Read uncommitted |
×(only in PostgreSQL) |
|||
Read committed |
× |
|||
Repeatable read |
× |
× |
×(only in PostgreSQL) |
|
serialization |
× |
× |
× |
× |
提醒
Sequence的变化会立即同步给并发的transaction,并且不会因为某一个transaction回滚而回滚squence。同理还有serial。
事务的隔离 transaction isolation相关推荐
- mysql隔离级别加锁情况_MySQL数据库事务各隔离级别加锁情况--read committed amp;amp; MVCC...
上节回顾 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理解. 这篇记录我对 MySQL 事务隔离级别 read committed & MVCC 的理解. 前言 ...
- MySQL - 并发控制与事务的隔离级别【头歌】
目录 相关知识 并发操作可能产生的数据不一致性 MySQL的事务隔离级别 示例 第一关:并发控制与事务的隔离级别 编程要求 测试说明 代码如下 第二关:读脏 任务描述 相关知识 读脏 读脏产生的原因 ...
- mysql isolation level_MySQL数据库事务隔离级别(Transaction Isolation Level)
今天在学习JDBC的时候看到了关于MySql的事务的隔离级别的问题,感觉内容挺高级的,所以记录一篇文章,以备后面使用. 数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说 ...
- linux事务隔离级别,事务的隔离级别(Transaction isolation levels)2
READ COMMITTED READ COMMITTED这是数据库默认的隔离级别.它能保证你不能读取那张表格数据,只要有其它事务还在改变这张表格数据.可是,因为sql server在select操作 ...
- 事务的隔离级别(Transaction isolation levels)5
2019独角兽企业重金招聘Python工程师标准>>> SERIALIZABLE隔离级别可以确保,如果一个查询语句多次执行,不会有数据改变.换句话说,在一个事务里执行相同的查询语句两 ...
- postgresql 事务隔离级别 set transaction isolation level
os: centos 7.4 db: postgresql 10.11 postgresql 默认的 isolation level 为 read committed,可以调整隔离级别. 版本 # c ...
- 数据库操作的隔离级别 Transaction Isolation Levels
by yan 20220223 ANSI/ISO Transaction Isolation Levels(ANSI/ISO标准的隔离级别) (1)未提交读(read uncommitted) (2) ...
- mysql transaction用法,mysql的事务,隔离级别和锁用法实例分析
本文实例讲述了mysql的事务,隔离级别和锁用法.分享给大家供大家参考,具体如下: 事务就是一组一起成功或一起失败的sql语句.事务还应该具备,原子性,一致性,隔离性和持久性. 一.事务的基本要素 ( ...
- 理解事务四大特性(Transaction)——原子性、一致性、隔离性和持久性(ACID)
事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体如下: 1. 原子性(Atomic) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. ...
最新文章
- java bean命名规范_JavaBean 成员命名规范 | 学步园
- 解决无法连接到远程SqlServer 2005 Express服务器的问题
- java的国际化怎么用_Java有关国际化使用实例
- SpringMVC源码解析(四)——请求处理
- 上海市职业介绍中心长宁分中心武夷路513-517号(021)62400032-229
- Multi-thread--多线程运行实例
- Windows上Python3.5安装Scrapy(lxml) 以及与twisted有关错误的解决
- sql update date类型_数据工厂可视化操作与SQL查询——1.基础篇
- 拜占庭将军们的投票出了问题
- openlayers4+中高德导航路径的实现
- python为什么运行不了_终端里为什么无法运行python?
- Java暑期实训任务二——单词检测程序
- 【Alist + Teracloud】WebDAV免费畅游互联网个人方案总结,一些支持WebDAV的应用推荐
- 2013, Samara SAU ACM ICPC Quarterfinal Qualification Contest C.Victor‘s Research
- 减小PDF文档大小(转载)
- 常用 APP URL Scheme
- 车牌识别技术详解一(可用于车牌识别,字符识别,人脸检测,验证码识别等等成熟领域)
- adobe cs5全线作品
- 垃圾污渍纹理PS笔刷
- 物联网,该不该赌一把?【常垒常识】
热门文章
- 秦羽成为鸿蒙后和鸿蒙林蒙,鸿蒙三部曲修订稿.docx
- 慢慢欣赏linux qemu编译和启动
- 百度地图 由起点和终点 获取中间路线的坐标集
- CSP认证202209-3:防疫大数据
- xxljob 配置具体定时任务_快速使用分布式定时任务 xxl-job
- 电力电子技术笔记(2)——电力二极管
- Spring Boot中Configuration problem: Cannot locate BeanDefinitionParser for element 的问题分析
- ES6 数组转为对象 ,以及 find 在数组里面找到对应一条数据
- 雷军回应 “小米手机都是中低端”
- Java—统计一篇英文文章中出现的不重复单词的个数