01. 并发事务问题、事务隔离级别

news/2024/6/16 17:29:06

文章目录

  • 1. 什么是事务
  • 2. 事物的特性(ACID)
  • 3. 并发事务问题
  • 4. 怎么解决并发事务问题——对事务进行隔离
  • 5. 事务隔离级别

1. 什么是事务

事务是一组 SQL 操作的集合。这一组 SQL 语句,要么都成功,要么都失败。

最经典的说明事务的例子是转账。假如张三要给李四转1000块钱,转账涉及两个操作:张三的余额减少 1000,李四的余额增加 1000。如果在转账的时候出现问题导致张三的余额减少而李四的余额没有增加,这种情况肯定是不能允许的。事务,就是要保证这两个操作要么都成功,要么都失败。

2. 事物的特性(ACID)

特性说明
原子性事务的原子性确保动作要么全部成功,要么全部失败
一致性执行事务前后,数据保持一致。例如转账业务,无论事务是否成功,转账人和收款人的总额应该不变
隔离性并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的
持久性事务一旦被提交,数据就持久化到数据库,即使数据库发生故障也不应该对其有任何影响

3. 并发事务问题

问题描述
脏读一个事务读到了另一个事务还没有提交的数据
不可重复读一个事务先后读取同一条记录,但两次读取的数据不同
幻读一个事务在查询数据时,没有对应的数据行,但是在插入数据时,发现这行数据已经存在,好像出现了“幻影”

4. 怎么解决并发事务问题——对事务进行隔离

5. 事务隔离级别

隔离级别说明
READ-UNCOMMITTED(读取未提交)最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读
READ-COMMITTED(读取已提交)允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生
REPEATABLE-READ(可重复读)对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生
SERIALIZABLE(串行化)最高的隔离级别,完全服从 ACID 的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,可以防止脏读、不可重复读以及幻读
  • 事务隔离级别越高,数据越安全,但性能越低;
  • MySQL 默认的事务隔离级别是可重复读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.tangninghui.cn.cn/item-12940.htm

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】Centos7安装MySql

【Linux】Centos7安装MySql 下载 MySQL 官网下载 MySQL,用的是 CentOS7.9 所以选择红帽系统 https://downloads.mysql.com/archives/community/ 安装 使用rz命令上传 MySQL tar # 创建 MySQL 解压目录 [rootlocalhost /]# mkdir /usr/local/mysql# 解压 [rootloca…

【C#】未能加载文件或程序集“CefSharp.Core.Runtime.dll”或它的某一个依赖项。找不到指定的模块。

欢迎来到《小5讲堂》 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景错误提示分析原因解决方法Chromium知识点相关文章 背景 最近在使…

【vue/uniapp】ucharts 作为子组件在被引入的时候不显示图表

将 onReady 函数 换成 mounted 函数试试,因为直接从官网复制来的代码是 onReady 函数,而 vue 组件会让 uniapp 的生命周期函数失效; 如图所示进行替换即可: 图片中的官网栗子:https://www.ucharts.cn/v2/#/demo/inde…

【软件测试之等价类划分法概述】

【软件测试之等价类划分法概述】*(蓝桥云课学习笔记) 在《软件测试的原则》小节中我们提到过一个案例,假设让你负责一个计算器小程序的测试工作,如何着手呢?假设先测试其加法运算功能,在字长为 32 位的计算机上运行&am…

无线LED显示屏的优势

无线LED显示屏是利用GSM、GPRS、CDMA、3G等无线通讯网络,实现LED显示屏远程、实时和大规模组网信息发布的技术产品。这里有无线LED显示屏技术解答。 相较于传统的有线连接方式,无线LED显示屏具有许多优势,下面让我们一起来了解一下&#xff1…

Linux学习-网络UDP

网络 数据传输,数据共享 网络协议模型 OSI协议模型 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式(数据报、流式&#…