`
nextdev
  • 浏览: 756 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

mysql数据库不可重复读事务隔离级别问题

阅读更多

在mysql数据库中,默认的事物隔离级别为不可重复读,而mysql对不可重复读实现得比较诡异,情况如下:

假如有两个事务同时执行两次查询和一次修改数据库中一张表,为啦方便起见下面使用A事务和B事务进行说明

 

启动A事务——>A查询表——>启动B事务——>B查询表——>B修改表——B事务提交(不会出错哦,郁闷中。。。)——>A查询表(数据会保证和上一次A查询的数据一致)——>A事务修改表(不出错)——>A事务提交(事务提交成功,不出错)

 

这样势必造成一个结果就是B修改的数据对于A是透明的,就好像不存在,而且最终会覆盖B的结果,如果大伙不信可以试试,如果哪位大侠有什么好的解决方法请跟帖,

当然最好不要修改数据库的事务隔离级别为最高级别。

 

我的测试环境是Win7 mysql5.1.60,数据库test,表t_test的引擎为InnoDB,编码为utf8,表结构如下:

mysql> select * from t_test;
+------+-------+------+--------+
| id | name | age | status |
+------+-------+------+--------+
| 1 | name1 | 27 | 1 |
| 2 | yyyy | 27 | 1 |
+------+-------+------+--------+
2 rows in set (0.00 sec)

 

 

分享到:
评论

相关推荐

    MySQL事务隔离级别

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

    MySQL的四种事务隔离级别

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

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

    在多用户同时访问数据库的情况下,事务隔离级别能够确保数据的一致性和完整性,避免并发操作带来的各种问题,如脏读、不可重复读和幻读。 1. 脏读(Dirty Read): 脏读指的是在一个事务中,事务A读取了事务B还未...

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

    3. **Isolation.READ_COMMITTED**:每个事务只能读取已经提交的数据,避免了脏读,但可能遇到不可重复读和幻读问题。Oracle 数据库默认使用此级别。 4. **Isolation.REPEATABLE_READ**:防止了脏读和不可重复读,但...

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

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

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

    MySQL数据库提供了四种不同的事务隔离级别,它们分别是读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)以及串行化(Serializable)。每种隔离级别都有其特点,用于权衡数据...

    02.Spring支持的常用数据库事务传播属性和事务隔离级别.zip

    事务隔离级别是控制并发操作时如何避免脏读、不可重复读和幻读的关键。Spring支持四种标准的SQL事务隔离级别: 1. READ_UNCOMMITTED(未提交读):最低级别的隔离,可能会出现脏读、不可重复读和幻读。在大多数情况...

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

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

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

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

    mysql事务隔离级别1

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

    数据库事务的四大特征以及隔离级别

    1. 事务的四大特征(ACID) 原子性(Atomicity):事务包含所有操作要么全部成功,要么全部回滚。 一致性(Consistency):一个事务执行之前和...Serializable(串行化):可避免脏读、不可重复读、幻读的发生。 Rep

    数据库事务隔离级别.docx

    数据库事务隔离级别是用来管理多个事务之间相互影响的程度,主要解决的问题包括脏读、不可重复读、幻读等。 #### 二、事务隔离级别的定义与作用 事务隔离级别是指数据库系统为每个事务提供的一种环境,以确保事务在...

    数据库锁(行锁,表锁,共享锁,排他锁)脏读、不可重复读、幻读和事物隔离级别

    3. 可重复读(Repeated Read):保证同一事务内的多次读取返回相同数据,防止不可重复读,但幻读仍可能发生,如MySQL InnoDB引擎通过Next-Key Locks解决。 4. 串行化(Serializable):最严格的隔离级别,通过读写...

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

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

    MySQL事务隔离级别详解.docx

    MySQL事务隔离级别详解 ...事务隔离级别是MySQL数据库并发控制的一种机制,它可以解决脏读、不可重复读和幻读等问题。开发者可以根据实际情况选择合适的隔离级别,以确保数据库的数据一致性和可靠性。

    事务四大隔离级别的不同

    MySQL默认的事务隔离级别是可重复读,它确保在同一个事务中多次执行相同查询会得到相同的结果,防止不可重复读。然而,这个级别无法防止“幻读”,即在一个事务中,两次执行相同的查询,但在第二次执行时,其他事务...

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

    MySQL数据库系统支持四种不同的事务隔离级别,这些级别是根据并发操作可能导致的问题来设定的,旨在保证数据的一致性和完整性。了解这些隔离级别对于优化数据库性能和处理多用户环境中的并发问题至关重要。 1. 读未...

    mysql 可重复读和读提交的区别(csdn)————程序.pdf

    MySQL 数据库支持四种不同的事务隔离级别,每种级别在处理并发事务时有着不同的策略,以平衡数据一致性与性能。这四个隔离级别分别是:未提交读(Read Uncommitted)、提交读(Read Committed)、可重复读(Repeated...

Global site tag (gtag.js) - Google Analytics