数据库的隔离级别
来源:互联网 发布:java不关闭流 编辑:程序博客网 时间:2024/06/07 17:44
我们都是在使用mysql,但是我们对于mysql的了解,只是停留在在如何使用上,对于mysql的理解和学习我们还要进行更加深刻的学习,今天我们就来看下mysql的隔离级别.
我们mysql的隔离级别可以分为4种,其实就是
1.读未提交 : 读未提交,就是说我们的一个事务可以读取别的事务还没有提交的结果,比如:
A客户端执行一个读取事务
B客户端此时执行了一个插入事务,但是还没有提交,B客户端回滚事务
A客户端读取的结果中,就有B客户端还没有提交的内容
这个就是读未提交,也就是产生了脏读,我们读取的数据其实不是我们期望的数据,
测试:
查看当前的mysql的事务隔离级别:mysql>select@@tx_isolation;
设置事务的隔离级别:SET[SESSION | GLOBAL]TRANSACTIONISOLATIONLEVEL {READUNCOMMITTED|READCOMMITTED|REPEATABLEREAD|SERIALIZABLE}
2.读已提交:读已提交就说我们可以读取已经提交的事务.这个事务的隔离级别是大多数的数据库的默认的隔离界别,但是不是Mysql的隔离级别, 但是这个数据库的隔离级别还是有一个问题就是产生不可重复读,什么是不可重复读呢:
A客户端开启一个事务,查询数据
B客户端开启一个事务插入数据,并提交
A客户端在这个事务中继续查询数据,就可以看家B客户端提交的数据了
这个就是读已提交,就是说我们是可以在一个事务中看见别的事务提交的数据
3.可重读:可重读就是我们的一个事务在没有提交之前,每一次读取的数据是一样的.但是可重读可能产生幻读,
A客户端查询一个表
B事务修改了这个表,并且提交事务
A客户端在本事务中查询的时候还是之前的数据,没有变,
但是可能产生幻读:
A客户端查询这个表中的数据
B客户端插入可一条记录
A客户端查询的时候可能就查询的记录多了一条 ,像是产生幻觉一样
我们怎么一看感觉幻读了不可重复读一样啊,其实两者还是有差异的,不可重复读偏重的是修改数据,幻读偏重的是增加和删除数据
我们的Mysql,采用版本控制来消除幻读....
4.可串行化:可串行话就是通过加锁的机制来避免幻读,就是在每个数据上加上共享锁,当一个事务没有提交之前,别的数据必须等待,但是这个有一个很很大的问题就是容易产生死锁!!!
Mysql的默认隔离级别是:可重读读
参考链接:点击打开链接
点击打开链接
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 数据库的隔离级别
- 虚拟存储的容量受到下列哪一个因素的限制影响最大?
- poj1061-青蛙的约会
- 白话经典算法系列之七 堆与堆排序
- python学习——进程vs线程
- Spark性能优化:资源调优篇
- 数据库的隔离级别
- 字符串和数字之间的转换
- 杭电1013
- uImage在内存中无法正常启动——UBoot-2010.06在TQ2440上的移植--机器码配对
- DBUtil连接池
- 判断二分图——染色法
- java 集合框架
- 【Codeforces 678E】【JZOJ 4648】锦标赛
- SPI flash debug trace