`
564467109
  • 浏览: 2637 次
社区版块
存档分类
最新评论

mysql默认事物隔离级别实践

阅读更多

mysql默认的事物隔离级别为重复读。故我们在使用mysql数据库进行开发项目时,要留意其隔离等级,避免数据库中出现脏数据,特别是高并发的时候。后边博文会介绍我在项目中遇见关于事物级别引起的问题。

服务器版本:



 

现在开两个console,并且开启事物。A,B都各自查询表word_mood的数据,展示数据如下:


 

==========================================================
 

 

B客户端对message_id=5的数据进行修改,A客户端再次查询数据:

=================================================

这时候我们发现B客户端已经给message_id等于5的message_content加1了,但是A客户端的message_id等于5的message_content依旧显示为5。可能有人会提出,因为B没有提交事物,当然A还是显示5。是否是因为这个原因呢。那我们再测试下就明白了。


 

===============================================================================
 

大家看,这时候B提交了事物,但是A查询依旧是5,没有任何改变。可能这是又有同学提出是不是B没有修改成功,所以A始终显示的是5呢。那我们继续测试:


大家看结果,说明B客户端确实修改了message_id=5的数据。那为什么A客户端没有显示出来呢。这时候我们就要引申出mysql的默认隔离事物了,可重复读。

可重复读的意思就是在开启一个事物的a对一张表T进行查询操作的时候,若另外一个事物b也在对T做修改操作,无论b对T进行什么操作,a的查询结果都一致,直到a,b事物提交,然后再次查询才能显示出b对t的操作。

那么又会有同学问,若A对T进行修改操作,此时A不提交事物,B是否也能对T进行修改操作呢?我们继续测试:

此时A,B客户端对message_id=5的message_content进行加1操作:


 

=======================================================================================
 

 

这时候我们发现当A客户端没有提交事物,B客户端再去修改的时候就会报获取锁超时。说明在mysql默认的事物级别下,当一个事物对T进行修改操作的时候,其他事物只具有查询权限。

总结:mysql的默认级别可重复读指的是,(1)当A事物对表T进行读取操作,无论其他事物对T进行何种操作,A的读取结果都一样(即在A事物开启前,时间最近已经完成的事物对T的操作)。(2)当A事物对T表进行非读取操作时,其他事物获取不到对T表的修改锁(即只能进行查询)

  • 大小: 4.9 KB
  • 大小: 6.1 KB
  • 大小: 1.2 KB
  • 大小: 3.3 KB
  • 大小: 2.9 KB
  • 大小: 4.6 KB
  • 大小: 5.6 KB
  • 大小: 7 KB
  • 大小: 5.6 KB
  • 大小: 8.4 KB
分享到:
评论

相关推荐

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

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

    MySQL事务隔离级别

    MySQL默认的事务隔离级别是可重复读,它能防止脏读和不可重复读。在这个级别下,事务在整个事务期间可以看到一致的数据视图,即同一查询始终返回相同的结果,除非事务自己对数据进行了修改。然而,幻读问题依然存在...

    MySQL的四种事务隔离级别

    这是MySQL的默认事务隔离级别。 4. 串行化(serializable):所有事务依次执行,完全避免脏读、不可重复读和幻读,但并发性能最差。 四、用例子说明各个隔离级别的情况 文章通过实例演示了在不同隔离级别下事务的...

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

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

    06-VIP-深入理解Mysql事务隔离级别与锁机制.pdf

    Mysql默认的事务隔离级别是可重复读,可以通过设置tx_isolation变量来修改事务隔离级别。 锁机制 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,锁机制是用来解决数据并发访问的一致性和有效性...

    MySQL数据库事务隔离级别详解

    MySQL数据库的事务隔离级别是数据库管理系统中用于控制事务处理中并发操作的重要机制。在多用户同时访问数据库的情况下,事务隔离级别能够确保数据的一致性和完整性,避免并发操作带来的各种问题,如脏读、不可重复...

    mysql数据库事务隔离级别借鉴.pdf

    以下是对MySQL数据库事务隔离级别的详细解释。 1. **丢失更新**:在并发环境下,一个事务的更新可能被另一个事务的更新覆盖,导致前一个事务的更改丢失。 2. **脏读**:一个事务读取到了另一个事务还未提交的数据...

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

    为了改变 MySQL 的默认事务隔离级别,可以使用以下命令: ``` SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL {REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE}; ``` 其中,`GLOBAL` ...

    mysql数据库事务隔离级别[参照].pdf

    MySQL的默认事务隔离级别是**可重复读**。在可重复读隔离级别下,一个事务内的多次读取会看到相同的数据视图,即使其他事务在此期间对数据进行了修改。例如,在提供的测试例子中,事务1在事务2开始之前修改了记录,...

    mysql事务隔离级别1

    MySQL中的事务隔离级别是数据库管理系统确保事务之间相互独立的重要机制,它主要针对并发操作时可能出现的问题,如脏读、不可重复读和幻读等。在MySQL的InnoDB存储引擎中,有四种不同的事务隔离级别: 1. **读未...

    详解Mysql事务隔离级别与锁机制.doc

    Mysql默认的事务隔离级别是可重复读,可以通过设置tx_isolation变量来改变事务隔离级别。 四、锁详解 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,锁机制用于解决数据并发访问的一致性问题...

    Mysql事务的隔离性

    ### MySQL事务的隔离性 #### 一、事务与MySQL架构 **事务**是数据库管理...通过上述理论知识和实战演练,我们可以更好地理解MySQL事务的隔离性,并根据实际应用场景选择合适的隔离级别来确保数据的一致性和完整性。

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

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

    深入理解Mysql事务隔离级别与锁机制.pdf

    在Mysql数据库中,默认的事务隔离级别是Repeatable Read,可以通过设置transaction isolation level的方式来改变事务隔离级别。锁机制在Mysql数据库中也可以通过加锁的方式来实现,例如select * from T where id=1 ...

    深入理解Mysql事务隔离级别与锁机制.zip

    本知识点将深入探讨MySQL中的事务隔离级别和锁机制,这是确保数据一致性和并发控制的关键概念。 首先,让我们了解什么是事务。在数据库中,事务是一系列操作的集合,这些操作被视为一个逻辑工作单元,要么全部执行...

    MySQL查看和修改事务隔离级别的实例讲解

    MySQL作为流行的开源关系型数据库管理系统,提供了对事务隔离级别的支持。本文主要讨论如何在MySQL中查看和修改事务隔离级别的操作方法和实例。 首先,要查看当前MySQL的事务隔离级别,可以使用show variables like...

    2019-8-7-MySQL的四种事务隔离级别1

    MySQL的事务隔离级别是数据库管理系统确保事务处理过程中的数据一致性和完整性的关键机制。事务具有四个基本要素,即原子性、一致性、隔离性和持久性,合称为ACID特性。 1. **原子性(Atomicity)**:事务的操作...

    mysql原理之隔离级别1

    MySQL 数据库中的事务隔离级别是确保数据库在高并发环境下数据一致性的重要机制。SQL 标准定义了四个隔离级别,它们分别是 Read Uncommitted、Read Committed、Repeatable Read 和 Serializable,每种级别都针对不同...

    VIP-深入理解Mysql锁与事务隔离级别1

    【MySQL锁与事务隔离级别详解】 在数据库管理系统中,锁是一种关键的同步机制,用于管理多个用户或进程并发访问共享资源时的并发控制。本文将深入探讨MySQL中的锁以及事务隔离级别。 首先,我们理解一下**锁的定义...

Global site tag (gtag.js) - Google Analytics