数据库脏读怎么解决_数据库事务的隔离等级为重复读

数据库脏读怎么解决_数据库事务的隔离等级为重复读面试的时候碰到了此类问题,此前认知一直模棱两可,特在此重新学习总结一下: 1、脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,…

面试的时候碰到了此类问题,此前认知一直模棱两可,特在此重新学习总结一下:

1、脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。
例如:
张三的工资为5000,事务A中把他的工资改为8000,但事务A尚未提交。
与此同时,
事务B正在读取张三的工资,读取到张三的工资为8000。
随后,
事务A发生异常,而回滚了事务。张三的工资又回滚为5000。
最后,
事务B读取到的张三工资为8000的数据即为脏数据,事务B做了一次脏读。

2、不可重复读:是指在一个事务中两次读取的数据因为另一个事务的影响而不同的情况。
例如:
在事务A中,读取到张三的工资为5000,操作没有完成,事务还没提交。
与此同时,
事务B把张三的工资改为8000,并提交了事务。
随后,
在事务A中,再次读取张三的工资,此时工资变为8000。在一个事务中前后两次读取的结果并不致,导致了不可重复读。

3、幻读:是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。(针对新增和修改的情况下多条数据)
例如:
目前工资为5000的员工有10人,事务A读取所有工资为5000的人数为10人。
此时,
事务B插入一条工资也为5000的记录。
这是,事务A再次读取工资为5000的员工,记录为11人。此时产生了幻读。

第一类丢失更新

A事务撤销时,把已经提交的B事务的更新数据覆盖了(一个撤销的事务覆盖了另一个成功提交的事务);

第二类丢失更新

A事务覆盖B事务已经提交的数据,造成B事务所做的操作丢失 (一个成功提交的事务影响了另一个成功及提交的事务)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10664.html

(0)
上一篇 2022-12-23
下一篇 2022-12-23

相关推荐

  • 原生加密:腾讯云数据安全中台解决方案「建议收藏」

    原生加密:腾讯云数据安全中台解决方案「建议收藏」导语 | 数据安全问题既是技术问题,也是管理问题。本文是对腾讯安全云鼎实验室专家姬生利老师在云+社区沙龙online的分享整理,从技术角度剖析当前国内数据安全面临的难题及密码应用现状,并带来腾讯数据…

    2023-04-01
    151
  • 学习之Redis(一)「建议收藏」

    学习之Redis(一)「建议收藏」一、redis简介 一般学习,最好先去官网,之所以建议看官网,是因为这是一手的学习资料,其他资料都最多只能算二手,一手资料意味着最权威,准确性最高。https://redis.io/topics/in

    2022-12-26
    142
  • Python中如何提前退出循环

    Python中如何提前退出循环在Python中,我们通常使用break语句来提前退出循环。当程序执行到break语句时,程序会直接跳出循环体。

    2024-03-16
    92
  • Python GUI实现用户界面交互

    Python GUI实现用户界面交互GUI全称为图形用户界面,是指通过可视化的方式,让用户和计算机进行交互的操作界面。它的出现,使得用户可以通过鼠标、键盘等视觉和触觉的方式来操作计算机,从而逐渐取代了过去的命令行界面。Python提供了多种GUI库,比如Tkinter、PyQt、wxPython等,这些库都能够轻松实现GUI界面的开发。

    2024-02-01
    101
  • Mariadb之复制过滤器 – Linux

    Mariadb之复制过滤器 – Linuxmariadb的主从复制集群,默认情况下是把主库上的所有库进行复制,只要在主库上产生写操作,从库基于主库的二进制日志做重放,从而实现把主库的上的库表复制到从库;复制过滤器指的是我们仅复制一个或几个数据

    2023-03-18
    160
  • Linux下安装Redis4.0版本(简便方法)

    Linux下安装Redis4.0版本(简便方法)Redis介绍: Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key – value 缓存产品有以下三个特点: Redis支持数据的持久

    2023-02-19
    135
  • Ubuntu 服务器安装 MySQL 远程数据库[亲测有效]

    Ubuntu 服务器安装 MySQL 远程数据库[亲测有效]在 Web 项目中,我们需要使用到远程数据库,开发阶段也需要连接并查看数据库的状况。腾讯云、阿里云等云平台提供了远程数据库,可直接使用;当然也可以自己在部署 Web 的服务器上安装数据库,将其配置为远

    2023-05-31
    150
  • mongodb 内存使用小结[通俗易懂]

    mongodb 内存使用小结[通俗易懂]mongodb 内存组成 对于使用WiredTiger,mongodb的内存,主要包括WirTiger引擎内部cache 与filesystem cache,对于WirTiger引擎内部cache …

    2023-03-31
    144

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注