数据库并发与并发异常的区别_高并发数据库解决方案

数据库并发与并发异常的区别_高并发数据库解决方案在使用数据库来支撑业务系统时,随着用户量的增大,经常会遇到同时读取相同数据的情况,在没有进行并发控制的情况下就会遇到各种各样的问题,对于可能出现的问题我们要有所了解。

	数据库并发与并发异常[数据库教程]

数据库并发与并发异常

本文关键字:脏读、脏写、更新丢失、不可重复读、幻读

在使用数据库来支撑业务系统时,随着用户量的增大,经常会遇到同时读取相同数据的情况,在没有进行并发控制的情况下就会遇到各种各样的问题,对于可能出现的问题我们要有所了解。

一、什么是并发

并发指的是在同一时间,有多个程序都处在启动运行到运行完毕之间的状态,并且都在同一个处理机上运行。
对于数据库来说,数据库并发指的就是在同一时间内,有多个事务都处在开始到提交之间的状态,并都在同一个数据库服务中。

二、常见并发异常

假设不做任何的并发控制,让那些对数据的操作自由执行,将会遇到下列的问题:

1. 脏读

脏读指的是一个事务A在运行时读取了另一个失败事务B未提交的数据,这就导致事务B回滚后,事务A读取到了一个与数据库记录冲突的错误数据。
数据库并发与并发异常
数据库中某条数据的money值为20,在处理过程中,事务B修改值为100,随后被事务A读取,接下来事务B因为其他环节的错误导致回滚,money的值被还原为20,这时事务A所读取的数据即为脏数据(错误数据)。

2. 脏写

脏写指的是一个事务A一同回滚了另外一个事务B已经提交的数据,这将导致事务B已经执行成功的操作一同被回滚。
数据库并发与并发异常
事务B先于事务A执行成功,但随后事务A回滚,将事务B的提交内容一同回滚。

3. 更新丢失

更新丢失指的是事务A与事务B均提交成功,但是由于读取和写入的时间点问题,导致事务B的修改结果好像未生效一样。
数据库并发与并发异常
最初数据库中money的值为20,在事务B提交成功后money的值为40,按正常逻辑事务A将money的值减去20,结果应为20,但对事务A来说读取到的值为20,导致最后结果为0

4. 不可重复读

不可重复读指的是由于另外一个事务B对数据的操作,导致事务A前后两次读取到的结果不一致。与脏读的主要区别是:一个读取的是已经被回滚的数据,一个读取的是已经成功提交后的数据,但前后并不一致。
数据库并发与并发异常

5. 幻读

幻读指的是读取某个范围的数据时,因为有其他事务的操作导致前后两次的查询结果不同。不可重复读与幻读的主要区别在于不可重复读是一条具体数据的不一致,幻读是对一组数据的前后不一致。
数据库并发与并发异常
在事务B执行前,事务A得到的结果集为:1,3,4,7,在事务B插入一个新的账户:8后,事务A得到的结果集为:1,3,4,7,8

数据库并发与并发异常

原文地址:https://blog.51cto.com/10984944/2514454

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

(0)
上一篇 2023-03-29 14:00
下一篇 2023-03-29 15:00

相关推荐

  • Python字符串替换方法:轻松修改文本内容

    Python字符串替换方法:轻松修改文本内容在Python中,字符串是一种重要的数据类型。相比较其他的编程语言,Python提供了一个非常强大的字符串处理机制。在日常开发中,我们常常需要对文本内容进行修改。本文将为大家介绍Python的字符串替换方法,帮助大家轻松修改文本内容。

    2024-04-07
    73
  • MySQL5.7免安装版配置详细教程

    MySQL5.7免安装版配置详细教程MySQL5.7免安装版配置详细教程 一、 软件下载 Mysql是一个比较流行且很好用的一款数据库软件,如下记录了我学习总结的mysql免安装版的配置经验,要安装的朋友可以当做参考哦 mysql5.7

    2023-01-31
    166
  • Python定义空列表的方法

    Python定义空列表的方法Python是一种流行的编程语言,其列表是一种非常重要的数据类型。列表是一种有序的,可变的集合,可以存储多个不同类型的元素。在编写Python代码时,我们通常需要创建一个空的列表,用于存储数据或列表操作的结果。本文将介绍Python定义空列表的方法。

    2024-05-06
    73
  • BaikalDB在同程艺龙的应用实践(二)[通俗易懂]

    BaikalDB在同程艺龙的应用实践(二)[通俗易懂]本系列文章主要介绍 BaikalDB在同程艺龙的落地实践 作者简介:王勇,同程艺龙架构师,BaikalDB Column Store Contributor,专注于分布式数据库方向的研发工作 欢迎S…

    2023-03-20
    154
  • mongodb的_初学钢琴入门

    mongodb的_初学钢琴入门一.什么是MongoDB? MongoDB is a document database with the scalability and flexibility that you want with

    2023-01-30
    170
  • redis:RDB AOF -master &slave -sentinel-cluster「建议收藏」

    redis:RDB AOF -master &slave -sentinel-cluster「建议收藏」1、RDB和AOF的优缺点 2、master和slave同步过程 3、哨兵的使用和实现机制4、redis cluster集群创建和使用 第一个题目、RDB和AOF的优缺点 一、 RDB的优点1、优点…

    2023-04-06
    138
  • mysql数据库索引数据结构_数据库中索引的概念

    mysql数据库索引数据结构_数据库中索引的概念一、什么是索引 索引是mysql数据库中的一种数据结构,就是一种数据的组织方式,这种数据结构又称为key 表中的一行行数据按照索引规定的结构组织成了一种树型结构,该树叫B+树 二、为何要用索引 优化查

    2023-05-05
    156
  • redis基本操作 —— string[亲测有效]

    redis基本操作 —— string[亲测有效]一、设置指定key的值 命令:set 格式:set key value 127.0.0.1:6379> set test_key test_value OK 二、获取指定key的值 命令:get

    2023-03-06
    138

发表回复

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