资讯专栏INFORMATION COLUMN

【全栈之路】JAVA基础课程八_Mysql事物隔离级别(20190624v1.0)

niuxiaowei111 / 1739人阅读

摘要:注意不仅可以控制事务传播行为等,还可以控制事务隔离级别等。事物的隔离级别隔离级别越高,并发性能越低。在的隔离级别下,会出现幻读的问题。可串行化是最高的隔离级别。

欢迎进入JAVA基础课程

博客地址:https://mp.csdn.net/mdeditor/...
本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触JAVA开发菜鸟还是业界资深人士,都希望对广大同行带来一些帮助。若有问题请及时留言或加QQ:243042162。

寄语:
近日,“有最美辅导员“和“最美大学生”发布仪式在央视播出,树立起新时代辅导员和大学生的学习榜样。当下,我们也应该争做“最美程序员”,给世界一片美好。
概述

数据库是可以控制事务的传播和隔离级别的,Spring在之上又进一步进行了封装,可以在不同的项目、不同的操作中再次对事务的传播行为和隔离级别进行策略控制。注意:Spring不仅可以控制事务传播行为(PROPAGATION_REQUIRED等),还可以控制事务隔离级别(ISOLATION_READ_UNCOMMITTED等)。

Spring 支持两种类型的事务管理

编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。
声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和 XML 配置
来管理事务。

脏读(Drity Read):另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据。

不可重复读(Non-repeatable read): 解决了脏读后,会遇到,同一个事务执行过程中,另外一个事务提交了新数据,因此本事务先后两次读到的数据结果会不一致。

幻读(Phantom Read): 解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)。但是,如果另一个事务同时提交了新数据,本事务再更新时,就会“惊奇的”发现了这些新数据,貌似之前读到的数据是“鬼影”一样的幻觉。

事物的隔离级别

隔离级别越高,并发性能越低。MySQL 默认的级别是:Repeatable read 可重复读。

READ UNCOMMITTED(未提交读) 。 在RU的隔离级别下,事务A对数据做的修改,即使没有提交,对于事务B来说也是可见的,这种问题叫脏读。这是隔离程度较低的一种隔离级别,在实际运用中会引起很多问题,因此一般不常用。

READ COMMITTED(提交读) 。 在RC的隔离级别下,不会出现脏读的问题。事务A对数据做的修改,提交之后会对事务B可见,举例,事务B开启时读到数据1,接下来事务A开启,把这个数据改成2,提交,B再次读取这个数据,会读到最新的数据2。在RC的隔离级别下,会出现不可重复读的问题。这个隔离级别是许多数据库的默认隔离级别。

REPEATABLE READ(可重复读)。 在RR的隔离级别下,不会出现不可重复读的问题。事务A对数据做的修改,提交之后,对于先于事务A开启的事务是不可见的。举例,事务B开启时读到数据1,接下来事务A开启,把这个数据改成2,提交,B再次读取这个数据,仍然只能读到1。在RR的隔离级别下,会出现幻读的问题。幻读的意思是,当某个事务在读取某个范围内的值的时候,另外一个事务在这个范围内插入了新记录,那么之前的事务再次读取这个范围的值,会读取到新插入的数据。Mysql默认的隔离级别是RR,然而mysql的innoDB引擎间隙锁成功解决了幻读的问题。

SERIALIZABLE(可串行化)。 可串行化是最高的隔离级别。这种隔离级别强制要求所有事物串行执行,在这种隔离级别下,读取的每行数据都加锁,会导致大量的锁征用问题,性能最差。

参考网站:
(1)https://www.cnblogs.com/maypa...
(2)https://baijiahao.baidu.com/s...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77890.html

相关文章

  • 全栈之路JAVA基础课程_Mysql事物隔离级别20190624v1.0

    摘要:注意不仅可以控制事务传播行为等,还可以控制事务隔离级别等。事物的隔离级别隔离级别越高,并发性能越低。在的隔离级别下,会出现幻读的问题。可串行化是最高的隔离级别。 欢迎进入JAVA基础课程 博客地址:https://mp.csdn.net/mdeditor/...本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触JAVA开发菜鸟还是业界资深人士,都希望对...

    twohappy 评论0 收藏0
  • 全栈之路JAVA基础课程_AJAX原理剖析(20190617v1.0

    摘要:借鉴图片仅用于学习分享,请尊重原创作者,勿用于商用。这其中最关键的一步就是从服务器获得请求数据。基本步骤创建对象也就是创建一个异步调用对象。创建一个新的请求并指定该请求的方法及验证信息。设置响应请求状态变化的函数。使用和实现局部刷新。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解...

    biaoxiaoduan 评论0 收藏0
  • 全栈之路JAVA基础课程_AJAX原理剖析(20190617v1.0

    摘要:借鉴图片仅用于学习分享,请尊重原创作者,勿用于商用。这其中最关键的一步就是从服务器获得请求数据。基本步骤创建对象也就是创建一个异步调用对象。创建一个新的请求并指定该请求的方法及验证信息。设置响应请求状态变化的函数。使用和实现局部刷新。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解...

    yintaolaowanzi 评论0 收藏0
  • 全栈之路JAVA基础课程_数据类型和垃圾回收机制(20190611v1.0

    摘要:,用于调用垃圾收集器,在调用时,垃圾收集器将运行以回收未使用的内存空间。然而调用附带一个免责声明,无法保证对垃圾收集器的调用。所以并不能说是完美主动进行了垃圾回收。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触JAVA开发菜鸟还是业界资深人士,都希...

    big_cat 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<