`

事务(二)———事务隔离级别

 
阅读更多

read uncommitted(读未提交)

       read unCommitted级别,事务中的修改,即使没有提交,对其他事务也是可见的。事务可以读取未提交的数据,这也被称为脏读(Dirty Read)。这个级别会导致很多问题,从性能上来说,Read unCommitted不会比其他的级别好太多,但却缺乏其他级别的很多好处,除非真的有非常必要的理由,在实际应用中一般很少使用。

 

read committed(读已提交)

       大多数数据库系统的默认隔离级别都是Read Committed(Mysql默认的是Repeatable Read)。

Read Committed满足前面提到的隔离性的简单定义:一个事务开始时,只能“看见”已经提交的事务所做的修改。换句话说,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。这个级别有时候也叫做不可重复读(nonrepeatable),因为两次执行同样的查询,可能会得到不一样的结果。

 

repeatable read(可重复读)

       它是Mysql的默认事务隔离级别。

Repeatable Read解决了脏读的问题。在该级别保证了在同一个事务中多次读取同样记录的结果是一致的。但是理论上,可重复读隔离级别还是无法解决另外一个幻读(Phantom Read)的问题。所谓幻读,指的是当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行(Phantom Row)。InnoDB和XtraDB存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Controller)解决了幻读的问题。

PS:InnoDB采用MVCC来支持高并发,默认级别为Repeatable Read(可重复读),并且通过间隙锁(next-key locking)策略防止幻读的出现。间隙锁使得InnoDB不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,以防止幻影行的出现。

 

serializable(可串行化)

       Serializable是最高的隔离级别。它通过强制事务串行执行,避免了前面说的幻读的问题。简单的说,Serializable会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题。实际应用中也很少用到这个事务隔离级别,只有在非常需要确保数据的一致性而且可以接受没有并发的情况下,才考虑采用该级别。

 

 

 

设置事务隔离级别命令:

set Session | GLOBAL TRANSACTION ISOLATION LEVEL read uncommitted | read committed | repeatable read | serializable;

查看当前事务隔离级别:

select @@tx_isolation;

 

 

分享到:
评论

相关推荐

    MySQL数据库:事务隔离级别.pptx

    了解 —— 事务隔离级别的概念; 理解 —— 事务隔离的四种级别; 掌握 —— 事务隔离级别的设置; 事务隔离级别 事务隔离:每一个事务都有一个所谓的隔离级,它定义了用户彼此之间隔离和交互的程度。隔离性强制对...

    事务管理(二)——SQL SERVER的事务管理

    SQL Server提供了四种事务隔离级别:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。不同的隔离级别对应不同的并发控制策略,例如,读未提交...

    【ADO.NET】七、程序事务应用——TAOBAO(升级)

    ADO.NET支持四种事务隔离级别:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和序列化(Serializable)。不同的隔离级别会影响并发性能和可能出现的问题,如脏读、不可...

    Spring3事务管理——使用@Transactional 注解.rar

    - 如果事务属性设置不当,可能会导致数据不一致或并发问题,应谨慎调整事务隔离级别和传播行为。 6. **最佳实践** - 尽可能地在细粒度的层面上使用`@Transactional`,避免在整个服务类上使用,以提高事务控制的...

    51 SQL标准中对事务的4个隔离级别,都是如何规定的呢?l.pdf

    SQL标准定义了四种事务隔离级别,旨在处理并发事务执行时可能出现的一些问题,包括脏读、不可重复读和幻读。以下是对这四种隔离级别——读未提交(read-uncommitted)、读已提交(read-committed)、可重复读...

    数据库事务处理基础——设计与实现

    在“数据库事务处理基础——设计与实现”这个主题中,我们将深入探讨数据库事务的各个方面,包括其定义、特性、类型以及如何在实际应用中进行设计和实现。 数据库事务是数据库操作的基本单元,它封装了一组操作,...

    【IT十八掌徐培成】Java基础第24天-02.事务并发现象-隔离级别.zip

    3. 隔离性(Isolation):在并发环境中,事务之间应保持独立,避免相互干扰,这就涉及到我们今天讨论的主题——隔离级别。 4. 持久性(Durability):一旦事务提交,其结果将永久保存,即使系统故障也不会丢失。 ...

    Spring.NET学习笔记16——事务管理Demo源码

    4. **事务隔离级别**:Spring.NET也允许设置事务的隔离级别,包括`READ_UNCOMMITTED`、`READ_COMMITTED`、`REPEATABLE_READ`、`SERIALIZABLE`等,以防止并发问题,如脏读、不可重复读和幻读。 5. **回滚规则**:在...

    oracle隔离级别

    2. **提交读(Read Committed)**:Oracle默认的事务隔离级别,它确保一个事务不会读取到其他事务未提交的修改,从而避免了脏读。然而,由于只保证语句级别的读一致性,非重复读和幻像读仍然可能发生。 3. **重复读...

    mysql事务学习资料(PPT+源码)

    5. **事务隔离级别**:MySQL支持四种隔离级别——读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ,MySQL的默认级别)和串行化(SERIALIZABLE)。不同的隔离级别会带来不同的...

    Spring整合JMS(四)——事务管理

    事务隔离级别决定了多个事务之间数据可见性的规则,而超时设置则定义了事务等待完成的最大时间。合理设置这些参数能保证系统的稳定性和性能。 在实际应用中,可能会遇到事务传播行为的问题。Spring提供了七种事务...

    15原理 5:同舟共济 —— 事务(1).md

    在探讨Redis事务之前,首先需要理解事务的基本概念。事务是数据库管理系统(DBMS)执行过程中的一个...在设计基于Redis的系统时,需要根据实际业务场景选择适当的事务使用策略,以及考虑事务的隔离级别和并发控制机制。

    行业-56 MySQL最牛的RR隔离级别,是如何基于ReadView机制实现的?l.rar

    MySQL数据库在处理并发事务时,提供了四种事务隔离级别:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。本篇文章将深入探讨其中最牛的隔离级别...

    SpringBoot事务和Spring事务详讲

    每个事务在其执行过程中,应与其他事务隔离,以避免数据损坏。 4. **持久性 (Durability)**:一旦事务成功完成,其效果将是永久性的,即使之后系统出现故障也不会受到影响。 #### 四、Spring 事务管理 Spring 提供...

    jee事务控制.pdf

    ### J2EE事务控制详解 ...通过选择合适的事务隔离级别,并结合乐观锁或悲观锁等策略,可以有效提高系统的并发性能和数据一致性。在实际应用中,开发者应根据业务需求和性能要求灵活选择最佳方案。

    Oracle应用项目——事务实例.pdf

    3. 隔离性(Isolation):在并发环境中,事务的执行独立于其他事务,避免了脏读、不可重复读和幻读等并发问题,Oracle通过锁定机制来实现这一点,保证了数据的一致性。 4. 永久性(Durability):一旦事务提交,其...

    数据库系统实验五_事务编程_ssd7exercise9_

    在本实验"数据库系统实验五_事务编程_ssd7exercise9_"中,我们将探讨数据库管理中的核心概念——事务处理,以及与之相关的隔离性、死锁和回滚操作。这些主题对于理解数据库系统的稳定性和可靠性至关重要。 首先,...

    springMVC+MYBATIS事务管理

    事务的隔离级别包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。不同的隔离级别对应不同的并发控制策略,以防止脏读、不可重复读和幻读等...

    MSSQL与Oracle数据库事务隔离级别与锁机制对比

    数据库事务隔离级别和锁机制是确保数据库并发操作正确性和一致性的关键组成部分。在数据库系统中,尤其是大型企业级应用,多个用户可能同时访问和修改相同的数据,因此并发控制显得尤为重要。 事务的四个基本特征...

    Percolator分布式事务

    Percolator是Google为解决大规模数据处理中的增量计算及一致性问题,所设计的一种分布式事务处理系统,它基于BigTable构建,提供了Snapshot Isolation隔离级别,以实现高并发读写性能。在此隔离级别下,事务读取的...

Global site tag (gtag.js) - Google Analytics