事务的隔离级别|学习笔记

简介: 快速学习事务的隔离级别

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术事务的隔离级别学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15919


事务的隔离级别


隔离级别属性,隔离级别在事务并发的三个问题有关。即脏读问题,不可重复读的问题和幻读的问题。

脏读:事物和事物之间的隔离性没做好。例如 a事务在整个的事务过程中间,会去修改数据。b 事物会去读到 a 事务在过程中间所修改的数据。如果a事物最后把它修改的数据改回成原来样的,但是由于b事物读到了 a事物的过程中间的数据。称为b 事物读到了 a的脏数据。

脏读问题其实就是完全没有隔离事物和事物之间。如果隔离了事物的之间的东西,使他不能读到这个事物中间的数据那就会出现第二个问题,叫做不可重复读。假如a 事物的时间比较长,他首先读了一个数据,然后当他读完数据以后,开启了另外

一个并行的事务,叫做b 事务。b 事物会去修改这个数据。

b事物结束了以后会把它的修改的数据值提交上去。a 事物如果在 b事物结束以后再去读数据就会导致他在 b事物开始之前读的数据和b事物开始之后读的两个数据不一样,称之为不可重复读的问题。若要解决不可重复读的问题,最简单的方式就是对数据来进行加锁。例如加一个读锁。a 事务在读取后就对事物进行了读锁,b事务就不可以去修改它,只可以去读它。这就能够保证不可重复读的问题得已解决。

加了读锁就能保证不可重复读问题,但是不能避免幻读的问题。例如 a事务要统计在系统中间所有的商品的总数,它在读取了系统中间所有的商品的数量后把所有的商品都加了一个读锁,但 b事务可以向商品中间去新增一个新的商品。所以如果a事务再去读一遍,有商品的总数时,发现多了一个商品,称之为幻读的问题。

虽然对数据进行了读锁,但不能禁止另一个事务去增加一个新的数据。但要解决这个问题,要做到完全串行,在读数据的时候,不能对这个数据做任何的改动,为了避免上述的这些问题,可以对这个数据库设定事务的隔离级别。在属性中,可以把它设成默认的级别。因为默认的级别实际就是数据库所使用的隔离级别,并且数据库的隔离级别是可以在数据库里单独去设置的。

数据库和数据、事务和事务之间的操作只读到事务提交以后的,数据第二个级别是READ_UNCOMMITED,这是一个最低的级别,这个最低级别是完全没有隔离事务和事物之间。可以读到任何一个其他事物在中间过程所产生的数据,所以它会产生所有的问题。脏读问题不可重复读问题和幻读问题。提高一个级别READ_COMMITED,这样隔离了事物和事物之间的操作,不会读到另外一个事物在

中间过程中间所修改的数据。但它会有不可重复读和幻读的问题。第三个级别是REPEATABLE_READ,怎么读数据都是一样的。

这样的一个操作,是对数据进行了读锁,不能解决幻读问题。最后是 SERIALIZABLE完全串行以后就可以解决脏读、不可重复读和换读的问题。所有问题都解决了,但是会带来更大的问题,即所有的数据的操作都变成串行,若完全没有并行,这样的一个系统是完全不可能使用的。

相关文章
|
8月前
|
SQL 关系型数据库 MySQL
事务及事务的隔离级别
事务及事务的隔离级别
|
2月前
|
存储 关系型数据库 MySQL
分布式事务的隔离级别有哪些?
总的来说,理解和掌握分布式事务的隔离级别是设计和实现可靠分布式系统的重要基础,需要在保证数据一致性和系统性能之间进行权衡和取舍。你还可以进一步深入研究不同隔离级别的具体实现和应用案例,以便在实际应用中更好地进行决策和操作。
|
3月前
|
SQL 数据库
事务的隔离级别有哪些
【10月更文挑战第17天】事务的隔离级别有哪些
|
2月前
事务的隔离级别
在高并发情况下,并发事务会产生脏读、不可重复读、幻读问题,这时需要用隔离级别来控制 读未提交: 允许一个事务读取另一个事务已提交的数据,可能出现不可重复读,幻读。 读提交: 只允许事务读取另一个事务没有提交的数据可能出现不可重复读,幻读。 可重复读: 确保同一字段多次读取结果一致,可能出现幻读。 可串行化: 所有事务逐次执行,没有并发问题。
|
8月前
|
SQL 关系型数据库 MySQL
⑨【MySQL事务】事务开启、提交、回滚,事务特性ACID,脏读、幻读、不可重复读。
⑨【MySQL事务】事务开启、提交、回滚,事务特性ACID,脏读、幻读、不可重复读。
79 0
|
8月前
|
Java 关系型数据库 MySQL
Spring事务的隔离级别介绍说明以及怎么去修改Spring事务的隔离级别
Spring事务的隔离级别介绍说明以及怎么去修改Spring事务的隔离级别
96 0
|
8月前
|
供应链 数据库
|
关系型数据库 MySQL 数据库
事务的基本特性和隔离级别
事务的基本特性和隔离级别
59 0
|
机器学习/深度学习 算法 关系型数据库
数据库事务——事务隔离级别
数据库事务——事务隔离级别
|
算法 关系型数据库 MySQL
事务的隔离级别和对应的问题
事务的隔离级别和对应的问题