解决并发事务造成的脏读,幻读,不可重复读问题

简介: 解决并发事务造成的脏读,幻读,不可重复读问题

解决并发事务造成的脏读,幻读,不可重复读问题:



Mysql的四种隔离级别.

未提交读(READ UNCOMMITTED):

在这个隔离级别下,其他事务可以看到本事务没有提交的部分修改,因此会造成脏读的问题(读取到了其他事务未提交的部分,而之后该事物进行回滚)


这个级别的性能没有足够大的优势,但是又有很多的问题,因此很少使用.


已提交读(READ COMMITTED):

其他事务只能读取到本事务已提交的部分,这个隔离级别有不可重复读的问题,在同一个事务内的两次读取,拿到的结果竟然不一样,因为另一个事务对数据进行了更改.


可重复读(REPEATABLE READ):

可重复读隔离级别解决了上面不可重复读的问题,但是仍然有一个新问题就是幻读,当你读取id>10的数据行时,对涉及到的所有行加上了读锁,此时另外一个事务新插入一条id=11的数据,因为是新插入的,所以不会触发上面的锁的排斥,那么进行本事务下的一次查询会发现有一条id=11的数据,而上次的查询操作并没有获取到,再进行插入就会有主键冲突的问题


可串行化(SERIALIZABLE):

这是最高的隔离级别,可以解决上面提到的所有问题,因为他强制将所有的操作串行执行,这会导致并发性能急速下降,因此也不常用.

目录
相关文章
|
2月前
|
SQL 数据库
事务的隔离级别有哪些
【10月更文挑战第17天】事务的隔离级别有哪些
|
21天前
|
数据库
脏读、幻读、不可重复读的定义?
脏读、不可重复读和幻读是数据库事务处理中的三种异常现象。脏读指读取未提交的修改数据;不可重复读指同一事务中多次读取数据不一致;幻读指读取记录范围时,前后读取结果数量不一致。这些现象通常由并发事务操作引起。
38 7
|
2月前
|
数据库
脏读,幻读,不可重复读
脏读,幻读,不可重复读
|
2月前
|
运维 监控 数据库
脏读的问题是什么
【10月更文挑战第17天】脏读的问题是什么
|
存储 关系型数据库 MySQL
幻读的探讨
幻读是数据库中常见的一种问题,它指的是在一个事务中,由于并发操作而导致同一个查询多次读取的结果不一致的现象。在这篇博客文中,我将详细探讨幻读的概念、原因和解决办法。
99 0
|
7月前
|
SQL 关系型数据库 MySQL
对数据库事务理解以及脏读、不可重复读以及幻读问题
对数据库事务理解以及脏读、不可重复读以及幻读问题
|
7月前
|
SQL 数据库
|
7月前
|
存储 SQL 关系型数据库
不可重复读
不可重复读
|
数据库
脏读、幻读、不可重复读
脏读是指在数据库事务中,一个事务读取了另一个事务未提交的数据。当一个事务进行数据修改但还未提交时,另一个事务读取了这个未提交的数据。如果发生了回滚操作,读取到的数据将是无效的。脏读可能会导致数据的不一致性和错误的结果。
79 0
|
数据库
数据库事务的并发问题 (脏读、幻读、不可重复读)
数据库事务的并发问题 (脏读、幻读、不可重复读)
145 0

热门文章

最新文章