博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于事务隔离级别
阅读量:6502 次
发布时间:2019-06-24

本文共 728 字,大约阅读时间需要 2 分钟。

hot3.png

第一种 read uncommitted 此状态下脏读,不可重复读,虚读都有可能发生。此状态下两个人同时操作一个数据库表一边开启事务没有提交,另一边也开启事物开始更改数据但是也没有提交,此时第一个操作数据库的人在没有提交的情况下会看到另一边没有提交的数据,此时若第二个人不提交直接rollback数据回滚就会使数据变回原来的,这就是脏读。举例说用这种方式转账就很不安全,第一个人没有关闭事物就去查询账户发现钱多了,但是转账的人并没有提交,此时转账的人如果采用数据回滚就会使本来转好的钱回来。

第二种 read committed 此状态下避免了脏读,但是不可重复读,虚读都有可能发生。补充一点,这种事务隔离级别是oracle默认的。避免不可重复读,顾名思义,就是为了使第一个人在没有提交事物之前读取到的数据不可变,第二个人无论事物提没提交事物只要第一个人没有提交数据,那么第一个人查询到的数据都不会改变。

第三种是 repeatable read 此状态下避免了脏读,不可重复读,但是虚读是有可能发生。这种事物隔离级别是MySQL默认的,插入和修改数据只有在第一个人提交之后才可以查到,避免了数据的变动。

第四种是 serializable 此状态下避免了所有得问题但是效率降低了,一个人操作数据库的时候别人是无法修改的。

总结:

l  脏读:指一个线程中的事务读取到了另外一个线程中未提交的数据。

l  不可重复读:指一个线程中的事务读取到了另外一个线程中提交的update的数据。

l  虚读:指一个线程中的事务读取到了另外一个线程中提交的insert的数据

 

 

转载于:https://my.oschina.net/u/3755017/blog/1802341

你可能感兴趣的文章
PaaS变厚了
查看>>
赛门铁克开启“容灾即服务”时代
查看>>
复杂度归纳--小结
查看>>
基础篇9-python基本数据结构-列表
查看>>
PHP学习笔记 第八讲 Mysql.简介和创建新的数据库
查看>>
【git】git入门之把自己的项目上传到github
查看>>
js获取鼠标位置
查看>>
2016.8.11 DataTable合并及排除重复方法
查看>>
php 魔术方法 说明
查看>>
Mysql
查看>>
POJ-1860-Currency Exchange
查看>>
跨越企业的“中等收入陷阱”
查看>>
Android 开发者必知的开发资源
查看>>
软件工程技术基础-(软件复用技术)
查看>>
给django视图类添加装饰器
查看>>
DVWA默认用户名密码
查看>>
简述 clearfix 的原理
查看>>
【Project Euler】530 GCD of Divisors 莫比乌斯反演
查看>>
luogu P1280 尼克的任务 序列DP
查看>>
获取文件最后修改时间的VC代码
查看>>