什么是脏读,不可重复读,幻读_什么是脏读,不可重复读,幻读

什么是脏读,不可重复读,幻读_什么是脏读,不可重复读,幻读在了解脏读,不可重复度,幻读之前,首先要明白这三种情况的出现都是和数据库并发事务有关联的,如果所有的读写都按照队列的形式进行,就不会出现问题。 名词解析和解决方案 脏读 脏读又称无效数据读出(读出了脏

脏读,不可重复读,幻读区别和避免

在了解脏读,不可重复度,幻读之前,首先要明白这三种情况的出现都是和数据库并发事务有关联的,如果所有的读写都按照队列的形式进行,就不会出现问题。

名词解析和解决方案

脏读

脏读又称无效数据读出(读出了脏数据)。一个事务读取另外一个事务还没有提交的数据叫脏读。

例如:事务T1修改了某个表中的一行数据,但是还没有提交,这时候事务T2读取了被事务T1修改后的数据,之后事务T1因为某种原因回滚(Rollback)了,那么事务T2读取的数据就是脏的(无效的)。

解决办法:把数据库的事务隔离级别调整到READ_COMMITTED(读提交/不可重复读)

不可重复读

不可重复读是指在同一个事务内,两次相同的查询返回了不同的结果。

例如:事务T1会读取两次数据,在第一次读取某一条数据后,事务T2修改了该数据并提交了事务,T1此时再次读取该数据,两次读取便得到了不同的结果。

解决办法:把数据库的事务隔离级别调整到REPEATABLE_READ(可重复读)

幻读

幻读也是指当事务不独立执行时,插入或者删除另一个事务当前影响的数据而发生的一种类似幻觉的现象。

例如:系统事务A将数据库中所有数据都删除的时候,但是事务B就在这个时候新插入了一条记录,当事务A删除结束后发现还有一条数据,就好像发生了幻觉一样。这就叫幻读。

解决办法:把数据库的事务隔离级别调整到SERIALIZABLE_READ(序列化执行),或者数据库使用者自己进行加锁来保证。

题外话:

不可重复读出现多是因为修改;幻读重点是新增、删除。mysql中的REPEATABLE_READ模式引入了间隙锁(GAP),解决了幻读的问题。不论是什么方式解决幻读,都会付出一定代价的性能让步。所以说在业务需求和技术方案之间权衡也是技术人员最需要掌握得技能之一。

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

(0)
上一篇 2023-02-10
下一篇 2023-02-10

相关推荐

  • [mysql]mysql8修改root密码

    [mysql]mysql8修改root密码use mysql select * from user where user='root'; update user set password=password('m…

    2022-12-15
    141
  • Explain详解与索引优化实践

    Explain详解与索引优化实践为什么要用explain 使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈 如何使用explain 下面是使用 …

    2022-12-16
    103
  • Django文件上传教程

    Django文件上传教程Django是一个流行的Python Web框架,其上传文件的方法有多种。本篇文章将着重介绍如何在Django中完成文件上传。通过学习本文,你将会掌握如何在Django项目中构建一个文件上传功能,并加深对Django的理解。

    2024-06-14
    20
  • Python判断文件是否存在

    Python判断文件是否存在文件是计算机中存储数据的重要载体。在Python中判断文件是否存在,是我们处理文件和数据的基础。本篇文章将介绍Python判断文件是否存在的方法,并从多个方面详细阐述。

    2024-06-22
    7
  • 使用Python编写文件操作程序

    使用Python编写文件操作程序在Python中进行文件读取操作非常简单,只需要使用open函数打开文件,指定读取模式即可。

    2024-02-29
    56
  • 学习Python编程

    学习Python编程Python是一种高级编程语言,广泛应用于科学计算、Web开发、人工智能和数据分析等领域。它的简洁语法、优秀的可读性和强大的模块化支持,深受程序员的喜爱。本文将从多个方面详细介绍学习Python编程的必要性、学习路径、实战案例、常见问题以及解决方法等。

    2024-04-26
    39
  • kafka 2.8.1_kafka python

    kafka 2.8.1_kafka python近日Kafka发布了最新版本 2.5.0,增加了很多新功能: 下载地址:https://kafka.apache.org/downloads 2.5.0 对TLS 1.3的支持(默认为1.2) 引入用

    2023-02-19
    114
  • MySQL学习笔记(21):优化磁盘IO

    MySQL学习笔记(21):优化磁盘IO本文更新于2020-04-05,使用MySQL 5.7,操作系统为Deepin 15.4。 使用符号连接分布IO 利用操作系统的符号连接,将不同的数据库、表、索引指向不同的物理磁盘,从而达到分布磁盘I

    2023-03-24
    128

发表回复

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