MySQL之事务隔离级别--转载
转自:http://793404905.blog.51cto.com/6179428/1615550
本文通过实例展示MySQL事务的四种隔离级别。
1 概念阐述
1)Read Uncommitted(读未提交)
其他事务的在未提交的改动下,当前事务可以察觉。
2)Read Committed(读提交)
其他事务在提交改动之后,当前事务可以察觉,如果其他事务未提交改动,那么不会察觉。
3) Repeatable Read(可重复读)
其他事务提交了改动,并且当前事务也提交的操作,之后才可以察觉改动。
4) Serializable(可串行化的)
通过加锁方式,仅仅保持一个事务执行更新操作,如果其他事务执行更行操作,那么将处于阻塞
等待状态。
2 实例展示
2.1 如何查询当前MySQL的事务隔离级别
MySQL默认隔离级别是Repeatable Read(可重复读)
2.2 设置当前会话的隔离级别
2.3 Read Uncommitted 隔离级别效果展示
1.A,B两个事务,将A事务设置为Read Uncommitted事务隔离级别,当B事务,做修改后未提交,A事务可以发现B事务的修改内容。
2.当A事务修改某条记录时,B也修改某条记录,会出现B阻塞等待现象,也就是说A事务修改会具有行级锁。
(A事务)
(B事务修改数据,但不提交)
(A事务可以察觉B事务修改的数据)
从上述过程可以发现,在Read Uncommitted隔离级别下,事务之间的修改会相互察觉,因此容易出现脏读现象。
而且此时事务A:update counter set value=1002 where id=1,但不提交事务;事务B也执行update counter set value = 1004 where id = 1;会阻塞等待直到超时。原因是因为事务A执行时,锁住了id=1的这行记录,因此其他事务必须等待处理完毕再执行;但是其他事务可以处理id!=1的记录。
2.4 Read Committed 隔离级别效果展示
1. A、B两个事务,假设A事务的隔离级别为Read Committed,那么B事务在执行commit之后,A事务可以发现B的修改。
2. 与Read UnCommitted一样,都存在行级锁的现象。
(A事务)
(B事务更新但未提交)
(B事务提交后,A事务可以发现B的修改)
2.5 Repeatable Read(可重复读)
1. A、B事务,A事务为Repeatable Read,当事务B修改后提交,A仍然无法察觉B的修改效果,而当A事务也提交之后,才可以察觉B的修改。
2. 同样存在行级锁的锁定
(A事务)
(B事务修改并提交,A事务仍然无法发觉B的修改)
(A事务也提交后,可以发现B的修改)
2.6 Serializable(可串行化的)
1. A、B事务,A事务为Serializable,那么B不能执行任何更新操作,因为A会获取表级锁,使得其他事务无法访问。
(A事务)
(B事务修改操作,无法执行)
3 总结
在MySQL中默认采用可重复读(Repeatable Read)隔离级别。关于隔离级别的其他知识点以及更细微的介绍,本文不做过多介绍,仅仅介绍基本的概念和理解,如果有兴趣的伙伴,可以考虑按照我这种模式,不断实验。
MySQL之事务隔离级别--转载的更多相关文章
- 重新学习MySQL数据库8:MySQL的事务隔离级别实战
重新学习Mysql数据库8:MySQL的事务隔离级别实战 在Mysql中,事务主要有四种隔离级别,今天我们主要是通过示例来比较下,四种隔离级别实际在应用中,会出现什么样的对应现象. Read unco ...
- 【Java面试】请你简单说一下Mysql的事务隔离级别
一个工作了6年的粉丝,去阿里面试,在第一面的时候被问到"Mysql的事务隔离级别". 他竟然没有回答上来,一直在私信向我诉苦. 我说,你只能怪年轻时候的你,那个时候不够努力导致现在 ...
- MySQL实战 | 03 - 谁动了我的数据:浅析MySQL的事务隔离级别
原文链接:这一次,带你搞清楚MySQL的事务隔离级别! 使用过关系型数据库的,应该都事务的概念有所了解,知道事务有 ACID 四个基本属性:原子性(Atomicity).一致性(Consistency ...
- 【MySQL】事务隔离级别及ACID
注:begin或start transaction并不是一个事务的起点,而是在执行它们之后的第一个操作InnoDB表的语句,事务才真正开始.start transaction with consist ...
- 一文读懂MySQL的事务隔离级别及MVCC机制
回顾前文: 一文学会MySQL的explain工具 一文读懂MySQL的索引结构及查询优化 (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论不一定适用于其他版本) 就软件开 ...
- mysql数据库——事务隔离级别
四种隔离级别: 一:READ UNCOMMITTED(未提交读) 事务可以读取其他事务未提交的数据,称为脏读 二:READ COMMITTED(提交读) 一个事务开始时,只能"看见" ...
- MySQL数据库事务隔离级别(Transaction Isolation Level)
转自: http://www.cnblogs.com/zemliu/archive/2012/06/17/2552301.html 数据库隔离级别有四种,应用<高性能mysql>一书中的 ...
- 浅谈MySQL的事务隔离级别
希望这篇文章能够阐述清楚跟数据库相关的四个概念:事务.数据库读现象.隔离级别.锁机制 一.事务 先来看下百度百科对数据库事务的定义: 作为单个逻辑单元执行一系列操作,要么完全执行,要么完全不执行.事务 ...
- 谈谈MySQL的事务隔离级别
这篇文章能够阐述清楚跟数据库相关的四个概念:事务.数据库读现象.隔离级别.锁机制 一.事务 先来看下百度百科对数据库事务的定义: 作为单个逻辑单元执行一系列操作,要么完全执行,要么完全不执行.事务处理 ...
随机推荐
- ORACLE参数文件
一.oracle pfile/spfile区别 pfile 默认的名称为“init+例程名.ora”文件路径:E:\oracle\product\10.2.0\db_1\dbs,这是一个文本文件 ...
- java惯用法转载
目录 实现: equals() hashCode() compareTo() clone() 应用: StringBuilder/StringBuffer Random.nextInt(int) It ...
- poj2686-Traveling by Stagecoach(状压dp)
题意: n张马票,m个城市,马票上有马数(决定速度),一张只能用一次,给出地图,求从城市a到b的最短时间. 分析:n值很小状态压缩 #include <map> #include < ...
- vs 中代码的字体也颜色设置
使用vs之前,需要进行一些常规的配置,以便更加方便自己的使用提高工作效率.字体应该配置为Consolas等宽字体,另外项背景色应设置为自定义淡蓝色(84,91,205),一说这颜色能保护眼睛,确实看的 ...
- 问题:关于坛友的一个定时重复显示和隐藏div的实现
需求:打开页面只看到DIV2,等完秒数之后在显示DIV3.手动关闭DIV3后在重新数秒 我设置的间隔时间是3秒,代码如下: html+css: 1: <!DOCTYPE HTML> htm ...
- uvalive 4513 Stammering Aliens
题意:给你一个串,问期中至少出现m次的最长子串及其起始位置的坐标. 思路:hash+LCP+二分答案 #include<cstdio> #include<cstring> #i ...
- Android 依赖注入 ButterKnife 基本使用
ButterKnife 是一个快速 Android View 注入框架,开发者是Jake Wharton,简单的来说,ButterKnife 是用注解的方式替代findViewById和setXXXL ...
- HW6.28
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- Install PhoneGap
To Install, ensure that you have NodeJS installed, then open your commandline and run the following: ...
- iOS block的用法
本章学习目标: 1. 了解何谓block. 2. 了解block的使用方法. Block 是iOS在4.0之后新增的程式语法,严格来说block的概念并不算是基础程式设计的范围,对初学者来说也不是很容 ...