未提交读(read uncommitted):一个事务的写数据未提交,其他的事务不能写入改行数据,但是可以读数据。读数据不阻塞其他事务。可能会出现脏读,即另一个事务会读取到本事务回滚的数据。
提交读(read committed):一个事务的数据没提交时,其他事务不能读写改行。读数据不阻塞其他事务。可能出现不可重复读。即可能读到两条不同的数据,在读取时,另外的事务写数据了。
可重复读(repeatable read):读取事务时阻塞写入改行事务的执行(但是可以删除插入数据,),不堵塞读数据,写入事务阻塞所有事务。可能出现幻读。即出现两次读到的数据不一致,多了或者少了。
可序列化:事务完全串行。
1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。
2. 不可重复读 :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两 次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不 可重复读。例如,一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果 只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题。
3. 幻读 : 是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。 同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象 发生了幻觉一样。例如,一个编辑人员更改作者提交的文档,但当生产部门将其更改内容合并到该文档的主复本时,发现作者已将未编辑的新材料添加到该文档中。 如果在编辑人员和生产部门完成对原始文档的处理之前,任何人都不能将新材料添加到文档中,则可以避免该问题。
补充 : 基于元数据的 Spring 声明性事务 :
Isolation 属性一共支持五种事务设置,具体介绍如下:
l DEFAULT 使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别 .
l READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 )
l READ_COMMITTED 会出现不可重复读、幻读问题(锁定正在读取的行)
l REPEATABLE_READ 会出幻读(锁定所读取的所有行)
l SERIALIZABLE 保证所有的情况不会发生(锁表)
不可重复读的重点是修改 :
同样的条件 , 你读取过的数据 , 再次读取出来发现值不一样了
幻读的重点在于新增或者删除
同样的条件 , 第 1 次和第 2 次读出来的记录数不一样
相关推荐
06-VIP-深入理解Mysql事务隔离级别与锁机制.pdf
事务隔离级别 课程目标 了解 —— 事务隔离级别的概念; 理解 —— 事务隔离的四种级别; 掌握 —— 事务隔离级别的设置; 事务隔离级别 事务隔离:每一个事务都有一个所谓的隔离级,它定义了用户彼此之间隔离和交互...
之前在网上查询mysql事务隔离相关资料,一直只是脑子里有一个印象,久而久之还是会忘记,忘记后又要到网上查找相关资料,但是没实践过就对mysql事务隔离级别理解不是特别的深入,现在自己亲手实践体验一下这个这四个...
深入理解Mysql事务隔离级别与锁机制.pdf
怎么理解SQL SERVER中事务隔离级别及相应封锁机制.pdf
4-7深入理解Mysql事务隔离级别与锁机制.mp4
4-6深入理解Mysql事务隔离级别与锁机制.mp4
这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了 事务隔离机制、锁机制、MVCC多版本并发控制隔离机制 ,用一整套机制来 解决多事务并发问题。 事务及其ACID属性 事务是由一组...
事务的四个属性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。 1.原子性(Atomic) 重要的原则,也是容易理解的原则。被事务管理的所有方法,要么一起被提交,...
1、对MyISAM表的读操作(加读锁) ,不会阻寒其他进程对同一表的读请求,但会阻赛对同一表的写请求 2、对MylSAM表的写操作(加写锁) ,会阻塞其他进程对
1、锁定义 2、锁分类 1、对MyISAM表的读操作(加读锁) ,不会阻寒其他进程对同一表的读请求,但会阻 2、对MylSAM表的写操作(加写锁) ,会阻塞其他
但是对于第二类、第三类隔离级别之间的性能区别和应用场景就会容易出现一些理解上的偏差,尤其是熟悉Oracle的技术朋友,为此专门撰写一篇技术文章,引导大家合理地选择这两种事务隔离级别。操作系统:CentOSrelease...
主要介绍了MySql四种隔离级别,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以...
本套课程主要是对mysql的事务隔离级别以及锁相关知识进行深入讲解其中包括:mysql四大特性的深入理解、四种隔离级别的实现原理、一致性读的实现原理、全局锁、表锁、行锁,间隙锁的介绍与分析,对于难点和重点会使用...
在面试准备过程中,熟悉这些问题并理解其背后的概念和原理将有助于你在面试中展示自己的数据库知识和技能。同时,也建议深入学习和掌握MySQL的各个方面,以便更好地应对各种类型的面试问题。 这些问题涵盖了MySQL...
开发工作中我们会使用到事务,那你们知道事务又分哪几种吗?MYSQL标准定义了4类隔离级别,用来限定事务内外的哪些改变是可见的,哪些是不可见的。...下面通过这篇文章我们来一起深入理解Mysql中的四种隔离级别。
网上对于此类的文章已经十分饱和了,那还写的原因很简单——作为自己的理解笔记。 前言 此篇文章作为自己学习MySQL的一些个人理解,使用的引擎是InnoDb。首先先讲讲事务的概念,在《高性能MySQL》第三版中其对...
事务隔离级别:介绍不同隔离级别及其对并发事务的影响。 锁机制:探讨MySQL中的锁类型和锁争用问题。 死锁处理:如何识别和解决事务中的死锁问题。 事务日志:事务日志的作用和恢复机制。 批量操作和事务:在执行...