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

这篇具有很好参考价值的文章主要介绍了数据库四种事务隔离级别的区别以及可能出现的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

① 丢失修改

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

② 脏读

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

③ 不可重复读

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

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

① Read uncommitted(读未提交)

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

② Read committed(读提交)

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

③ Repeatable read(可重复读)

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

④ Serializable(可串行化)

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

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

到了这里,关于数据库四种事务隔离级别的区别以及可能出现的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库——事务,事务隔离级别

    什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误

    2024年02月11日
    浏览(34)
  • 【数据库的四种隔离级别】

    在关系型数据库中,隔离级别是指多个事务并发执行时,彼此之间的隔离程度。数据库的四种隔离级别如下: 最低级别的隔离级别,一个事务可以读取到另一个事务未提交的数据,可能会出现脏读、不可重复读和幻读等问题。 一个事务只能读取到另一个事务已经提交的数据

    2024年02月13日
    浏览(37)
  • 数据库事务隔离级别

    读未提交、读已提交、可重复读、串行化 对事务中所有读写的数据加上读锁、写锁、范围锁。所以冲突的事务必须同步执行。 核心是只对事务中所有读写的数据加上读锁、写锁,不加范围锁。 相比于读已提交,由于对整个事务都加上了读锁,避免其他事务可以进行更新,进

    2024年02月08日
    浏览(31)
  • 数据库之事务隔离级别详解

    事务是一个原子操作,要么全部执行成功,要么全部执行失败。 事务的原子性确保一组逻辑操作,要么全部完成,要么完全不起作用。 执行事务前后,数据保持一致,例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的。 事务的隔离性是指在并发执行

    2024年02月07日
    浏览(59)
  • 数据库事务的四大特性与事务的隔离级别

    概要: 事务的四个特性:原子性、一致性、隔离性、持久性 事务不隔离带来的问题:更新丢失、脏读、不可重复读、虚读(幻读)。其中更新丢失就是并发写,这是一定不允许的,因此一定要解决更新丢失问题。 事务隔离的级别:读未提交(1000)、读已提交(1100)、可重

    2023年04月09日
    浏览(35)
  • 【Spring/MySQL数据库系列】数据库事务的特点与隔离级别

    ⭐️ 前面的话 ⭐️ 本文已经收录到《Spring框架全家桶系列》专栏,本文将介绍有关数据库事务的特点以及隔离级别。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由 未见花闻 原创, CSDN 首发! 📆首发时间:🌴2023年5月20日🌴 ✉️坚

    2024年02月05日
    浏览(42)
  • 【后端面经-数据库】MySQL的事务隔离级别简介

    目录 0. 事务的概念 1. 三类问题 2. 事务隔离级别 3. 操作指令 4. 总结 5. 参考博文 事务指的是一连串的集中操作指令,一个事务的执行必须执行完所有的动作才能算作执行结束。事务具有四个特点,简记作 ACID : A -Atomicity: 原子性,事务的执行必须保证所有的动作都执行完毕;

    2024年02月08日
    浏览(37)
  • 聊一聊数据库事务的那些事(隔离级别,传播行为)

      我们平时使用事务的时候,可能脑子里面想到和事务有关的知识点无非就是,ACID,事务隔离级别那一套,使用的事务也就是是通过注解的形式,或者手动开启事务。更细致一点的问题或许没有深究下去,比如事务的传播行为,注解形式和手动事务的区别等,今天我们就这几

    2024年02月07日
    浏览(42)
  • 【Mysql数据库 第13章】MySQL的事务、事务的隔离级别、事务的保存点

    💖Spring中的创建对象的三种方式、第三方资源配置管理详细描述及使用(XML版完结篇) 💖Spring中的bean的配置、作用范围、生命周期详细描述及使用(XML版上篇) 💖

    2023年04月20日
    浏览(48)
  • elasticsearch的查询方式和mysql数据库事务隔离级别的思考

    目录 普通分页 解除查询限制 scroll查询 search_after 官方改进 轻量级试图(pit,Point in time) 总结 项目中用到了 elasticsearch,发现有几种查询方式不太一样,思考了一下,总结如下 等同于关系数据库的分页查询,例如 mysql 的 limit,如下 sql 这种查询方式有一个问题,需要查询

    2024年01月18日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包