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

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

开发者学堂课程【高校精品课-厦门大学 -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完全串行以后就可以解决脏读、不可重复读和换读的问题。所有问题都解决了,但是会带来更大的问题,即所有的数据的操作都变成串行,若完全没有并行,这样的一个系统是完全不可能使用的。

相关文章
|
存储 缓存 NoSQL
钉钉消息已读、未读咋实现的嘞?
钉钉消息已读、未读咋实现的嘞?
290 0
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1007 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1701 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
644 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
613 13