数据库四种事务隔离级别的区别以及可能出现的问题

news/2024/11/29 7:44:56/

文章目录

  • 1.数据库并发操作带来的主要问题及原因:
    • ① 丢失修改
    • ② 脏读
    • ③ 不可重复读
  • 2.四种事务隔离级别的区别以及可能出现的问题:
    • ① Read uncommitted(读未提交)
    • ② Read committed(读提交)
    • ③ Repeatable read(可重复读)
    • ④ Serializable(可串行化)

1.数据库并发操作带来的主要问题及原因:

① 丢失修改

当两个或多个事务读入同一数据并修改,会发生丢失修改问题,前一个事务修改的结果会被后一事务所做的修改覆盖。

② 脏读

当一个事务修改某个数据后,另一事务对该数据进行了读取,由于某种原因前一事务撤销了对该数据的修改,即将修改后的数据恢复原值,相当于没有执行前一事务,那么后一事务读到的就是一个不正确的数据,称为“脏数据”。

③ 不可重复读

一个事务读取某个数据后,另一事务对该数据作了修改,当前一事务再次读取该数据(希望与第一次读取的是相同的值)时,得到的数据与前一次的不一样。

2.四种事务隔离级别的区别以及可能出现的问题:

① Read uncommitted(读未提交)

  如果一个事务已经开始写数据,则另一个事务不允许同时进行写操作,但允许其他事务读此数据。该隔离级别可以通过“排他写锁”实现。
  避免了丢失修改,却可能出现脏读。也就是说事务B读取了事务A未提交的数据(随后事务A回滚)。

② Read committed(读提交)

  读取数据的事务允许其他事务继续访问改行数据,但是未提交的写事务将会禁止其他事务访问该行。
  该隔离级别避免了脏读,但是却可能出现不可重复读。事务A事先读取了数据,事务B紧接着更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。

③ Repeatable read(可重复读)

  读取数据的事务将会禁止其他写事务(但允许其他读事务),写事务则禁止任何其他事务。
  避免了脏读和不可重复读,但是有时可能出现幻读。这可以通过“共享读锁”和“排他写锁”实现。

④ Serializable(可串行化)

  提供严格的事务隔离。它要求事务可串行化地并发执行。如果仅仅通过“行级锁”是无法实现事务可串行化的,而通过“表级锁”来实现,即通过对整个表加锁,避免同一事物的两次读之间,表中插入新的记录导致两次读取的记录数不同,称为幻读
  可串行化是最高的事务隔离级别,同时并发度会很低,一般很少使用。在该级别下,任何对数据库的读写都不会产生不一致性,但有时不精确的读取时允许的,但写入必须保证正确,常用的隔离级别是Read commited。

事务隔离级别避免问题出现问题
Read uncommitted丢失修改脏读
Read committed脏读不可重复读
Repeatable read脏读、不可重复读幻读
Serializable脏读、不可重复读、幻读

http://www.ppmy.cn/news/198944.html

相关文章

极米、当贝、坚果3000内的投影仪有什么推荐?

2000-3000 元是投影仪的入门价位。那你可能会说,市面上有不少千元机,看起来效果也不错啊?但实际上,它们经不起肉眼细看,因为它们采用的是单片LCD显示技术 ,而非主流的DLP或3LCD,无论是亮度、色彩…

2022极米投影和米家投影哪个好 家用智能投影仪对比

对于极米投影和米家投影,很多想要购买投影仪的新手可能会以为是一家,但其实不是,两家区别还挺大。那么对于新手来说,应该怎么来挑选投影仪呢?除了极米和小米还有哪些品牌可以选择呢?接下来就以极米投影和米…

峰米V10投影仪和当贝X3 Pro激光投影仪选择购买哪款好,一图读懂

近期发布的4K投影仪峰米V10外观和参数看着还不错,有很多网友询问峰米V10测评体验如何,个人先分享网友对于峰米V10一些评价。然后分享下个人买了峰米V10和当贝X3 Pro一些对比体验,供大家参考。 网友对峰米V10的一些评价 客服基础解答云山雾罩…

NginxFoundation

NginxFoundation 一. Nginx模块 模块划分1.1 Nginx的模块从结构上分为核心模块、基础模块和第三方模块1.2 Nginx的模块从功能上分为如下四类1.3 Nginx的核心模块主要负责建立nginx服务模型、管理网络层和应用层协议、以及启动针对特定应用的一系列候选模块。其他模块负责分配给…

Leetcode 312. 戳气球(记忆化搜索)

Leetcode 312. 戳气球(记忆化搜索)题目 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i…

汇编语言程序设计基础知识二

五、顺序结构 1、程序设计的步骤 1、分析问题 2、建立数据模型 3、设计算法 4、编制程序 5、上机调试 2、流程图的应用 3、程序的基本控制结构 1、顺序结构:程序顺序执行,不发生跳转 2、分支结构:程序在执行过程中发生跳转 3、循环…

FastBup:计算机视觉大型图像数据集分析工具

0.简介 官方github网址项目目的:当前大规模图像数据集一团糟,数据量巨大但质量堪忧,有时候训练集、验证集、测试集会有重复数据造成数据泄露。FastBup可以识别重复项、近似重复项、异常图像、错误标注、异常值,在cpu上就可以处理…

如何使用Java异常处理来优雅地处理各种异常情况?

在Java编程中,异常处理是一个非常重要的话题。良好的异常处理可以帮助我们更好地调试和排除代码中的错误,同时也可以提高代码的可读性、可维护性和稳定性。本文将详细介绍如何使用Java异常处理来优雅地处理各种异常情况。 异常分类 在Java中&#xff0…