`

隔离级别

阅读更多
    注:本文大部分内容摘自《高性能MySQL》第一章--MySQL架构与历史。

    隔离性作为事务ACID四个特性之一,其实比想象的要复杂,因为它涉及到对系统的并发控制。在SQL标准中定义了四种隔离级别(注:每种存储引擎实现的隔离级别不尽相同),每一种都规定了一个事务中所做的修改在事务内和事务间的可见程度。较低级别的隔离通常可以执行更高的并发,系统的开销也更低。

    下面就来简单的介绍一下这四种隔离级别。
    1、未提交读(READ UNCOMMITIED):在这种级别,事务中的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,被称作脏读,这会导致很多问题,故实际中很少使用。
    2、提交读(READ COMMITED):这是大多数数据库系统的默认级别,它只能“看见”已提交的事务所做的修改。它有时也叫做不可重复读,因为两次执行相同的查询,可能会得到不一样的结果。
    3、可重复读(REPEATABLE READ):这是MySQL的默认事务隔离级别。它解决了脏读的问题,保证了在同一个事务中多次读取同样记录的结果是一致的。但理论上,可重复读隔离级别还是无法解决另外一个幻读的问题。所谓幻读,指的是当某个事务在读取某个范围内的记录时,另一个事务又在该范围内插入了新的纪录,当之前的事务再次读取时,会产生幻行。InnoDB和XtraDB存储引擎通过多版本并发控制解决了幻读的问题。
    4、可串行化(SERIALIZABLE):这是最高的隔离级别,它通过强制事务串行执行,避免了幻读问题。但因为它会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题,因而实际应用中也很少用。

    MySQL可以通过执行“SET TRANSACTION ISOLATION LEVEL”命令来设置隔离级别。新的隔离级别会在下一个事务开始时生效。可以在配置文件中设置整个数据库的隔离级别,也可以只改变当前会话的隔离级别:
    mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

    最后我们用一个表来作为总结:
隔离级别脏读可能性不可重复读可能性幻读可能性加锁读
未提交读yesyesyesno
提交读noyesyesno
可重复读nonoyesno
可串行化nononoyes
分享到:
评论

相关推荐

    Hibernate 事物隔离级别 深入探究

    Hibernate 事务隔离级别 深入探究 在 Hibernate 中,事务隔离级别是指数据库系统提供的一种机制,以解决并发事务带来的问题。为了确保数据库的可靠性和一致性,Hibernate 提供了四种事务隔离级别,分别是 ...

    4种隔离级别

    在SQL标准中,定义了四种不同的隔离级别,分别是读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。下面将详细介绍这四种隔离级别的特性和应用场景...

    数据库的隔离级别介绍

    数据库的隔离级别是数据库管理系统(DBMS)在处理并发事务时确保数据一致性的重要机制。它主要解决了并发操作中可能出现的数据不一致性和并发问题,如更新丢失、脏读、不可重复读和虚读。以下是四种标准的事务隔离...

    MySQL事务隔离级别

    MySQL事务隔离级别是数据库管理系统中一个非常重要的概念,它关系到数据的一致性和并发性能。在MySQL中,事务被用于确保数据库操作的原子性、一致性、隔离性和持久性(ACID特性)。事务隔离级别主要涉及四个方面:读...

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

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

    MY SQL 事务隔离 查询:默认事务隔离级别

    查询:默认事务隔离级别 mysql> select @@tx_isolation;当前会话的默认事务隔离级别 mysql> select @@session.tx_isolation;当前会话的默认事务隔离级别 mysql> select @@global.tx_isolation;全局的事务隔离级别

    DB2中的四个隔离级别

    DB2 中的四个隔离级别 DB2 支持四种隔离级别,分别是可重复读(Repeatable Read)、读稳定性(Read Stability)、游标稳定性(Cursor Stability)和未落实的读(Uncommitted Read)。每种隔离级别都有其特点和应用...

    ORACLE的隔离级别

    ### ORACLE的隔离级别 #### 一、概念理解 **隔离级别**定义了事务与事务之间的隔离程度。在多用户环境中,多个事务并发执行时,可能会出现一些问题,如更新丢失、脏读、非重复读和幻像读等。为了减少这些问题的...

    GBase 8s隔离级别

    GBase 8s 是一款高性能的关系型数据库管理系统,它提供了多种隔离级别来处理并发事务,以确保数据的一致性和完整性。隔离级别是数据库系统解决并发控制的重要机制,它定义了事务在执行过程中如何与其他事务交互,...

    4种事务的隔离级别

    事务的隔离级别是数据库管理系统确保数据一致性的重要机制,它解决了并发事务执行时可能出现的问题,如读脏、不可重复读和幻读。在SQL92标准中,定义了四种事务隔离级别,分别是读未提交(Read Uncommitted)、读...

    MySQL的四种事务隔离级别

    MySQL数据库管理系统提供了四种事务隔离级别来处理事务并发中可能遇到的问题。事务并发问题通常包括脏读、不可重复读和幻读。 一、事务的基本要素(ACID) 事务具有四个基本要素,即原子性(Atomicity)、一致性...

    事务传播特性&事务隔离级别

    事务传播特性&事务隔离级别 事务传播特性是指在 Java 中,事务的传播行为,即在多个事务之间如何交互和传播。Java 中有七种事务传播特性,分别是: 1. PROPAGATION_REQUIRED:如果存在一个事务,则支持当前事务。...

    SQLSERVER事务隔离级别的实验研究.pdf

    本文档详细探讨了SQL Server中不同事务隔离级别的实验研究,揭示了各隔离级别与锁管理之间的关系,并通过实验验证了不同隔离级别对数据访问和锁定行为的影响。 SQL Server事务隔离级别分为以下四种: 1. 未提交读...

    数据库事务隔离级别

    介绍数据库事务的四种隔离级别,比较不同隔离级别的区别和影响

    spring事务的传播特性和事务隔离级别

    ### Spring事务的传播特性和事务隔离级别 #### 一、Spring事务的传播特性(Propagation) 在Spring框架中,事务管理不仅提供了ACID属性的支持,还引入了事务的传播特性,这些特性决定了当一个方法调用另一个方法时,...

    spring常用数据库事务传播属性和事务隔离级别1

    Spring 框架提供了一套完善的事务管理机制,其中包含了多种事务传播属性和事务隔离级别。这些特性使得在处理数据库操作时,能够更好地控制事务的边界和行为,从而确保数据的一致性和完整性。 首先,我们来看一下...

    SQLserver锁和事务隔离级别的比较与使用

    SQL Server的锁机制和事务隔离级别是数据库管理系统中确保数据一致性、避免并发问题的重要机制。在SQL Server中,锁主要用于控制多个用户同时访问同一数据时的并发操作,而事务隔离级别则是确定在事务中如何处理这些...

    52 MySQL是如何支持4种事务隔离级别的?Spring事务注解是如何设置的?l.pdf

    MySQL 支持四种事务隔离级别:READ UNCOMMITTED(读未提交)、READ COMMITTED(读已提交)、REPEATABLE READ(可重复读)和 SERIALIZABLE(串行化)。每种隔离级别对应不同程度的事务并发问题的防范,其中,MySQL ...

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

    MySQL的可重复读(RR)隔离级别是一种重要的事务隔离级别,旨在避免不可重复读和幻读问题,保证事务在并发环境下的一致性。ReadView(读视图)机制是实现这一隔离级别核心手段之一。本文将详细解析MySQL RR隔离级别...

Global site tag (gtag.js) - Google Analytics