数据库->事务

目录

一、事务

1.什么是事务

2.事务的ACID特性

1.Atomicity (原⼦性)

2.Consistency (⼀致性)

3.Isolation (隔离性)

4.Durability (持久性)

3.为什么要使用事务

4. 如何使⽤事务

1.查看MySQL中支持事务的存储引擎

2.⾃动/⼿动提交事务

2.1自动提交事务

2.2手动提交事务

 3.语法

5.事务的隔离性和隔离级别

1.什么是隔离性

2.隔离级别

3.不同隔离级别存在的问题

3.1READ UNCOMMITTED - 读未提交与脏读

3.2READ COMMITTED - 读已提交与不可重复读

3.3REPEATABLE READ - 可重复读与幻读

3.4SERIALIZABLE - 串⾏化

4.不同隔离级别的性能与安全

5.查看和设置隔离级别

1.查看不同作⽤域事务的隔离级别

2.设置事务的隔离级别和访问模式


一、事务

1.什么是事务

事务把⼀组SQL语句打包成为⼀个整体,在这组SQL的执⾏过程中,要么全部成功,要么全部失
败。这组SQL语句可以是⼀条也可以是多条。来看⼀个转账的例⼦,如图:

• 如果转账成功,应该有以下结果:
1. 张三的账⼾余额减少 100 ,变成 900 ,李四的账⼾余额增加了 100 ,变成 1100 ,不能出现张
三的余额减少⽽李四的余额没有增加的情况;
2. 张三和李四在发⽣转账前后的总额不变,也就是说转账前张三和李四的余额总数为1000+1000=2000 ,转账后他们的余额总数为 900+1100=2000 ;
3. 转账后的余额结果应当保存到存储介质中,以便以后读取;(持久化
4. 还有⼀点需要要注意,在转账的处理过程中张三和李四的余额不能因其他的转账事件⽽受到干扰;
以上这四点在事务的整个执⾏过程中必须要得到保证,这也就是事务的 ACID 特性

2.事务的ACID特性

1.Atomicity (原⼦性)

⼀个事务中的所有操作,要么全部成功,要么全部失败,不会出现只执⾏了⼀半的情况,如果事务在执⾏过程中发⽣错误,会回滚( Rollback )到事务开始前的状态,就像这个事务从来没有执⾏过⼀样

支持事务的数据库中最基本的一个特性,一个SQL要么全部成功,要么全部失败 
事务如果没有出现错误提交,数据进行落盘,永久保存
事务如果在执行中出现错误,则回滚到事务开始之前的状态

2.Consistency (⼀致性)

在事务开始之前和事务结束以后,数据库的完整性不会被破坏。这表⽰写⼊的数据必须完全符合所有的预设规则,包括数据的精度、关联性以及关于事务执⾏过程中服务器崩溃后如何恢复

事务执行完成之后,保证数据的正确并且符合预期

3.Isolation (隔离性)

数据库允许多个并发事务同时对数据进⾏读写和修改,隔离性可以防⽌多个事务并发执⾏时由于交叉执⾏⽽导致数据的不⼀致。事务可以指定不同的隔离级别,以权衡在不同的应⽤场景下数据库性能和安全

多个事务之间不能相互影响

4.Durability (持久性)

事务处理结束后,对数据的修改将永久的写⼊存储介质,即便系统故障也不会丢失

事务一旦查询,就需要永久的保存到存储介质中,不论数据库软件或电脑和操作系统是否崩溃,都不会影响数据的安全(不能丢失)

3.为什么要使用事务

事务具备的ACID特性,是我们使⽤事务的原因,在我们⽇常的业务场景中有⼤量的需求要⽤事务
来保证。⽀持事务的数据库能够简化我们的编程模型,不需要我们去考虑各种各样的潜在错误和并发问题,在使⽤事务过程中,要么提交,要么回滚,不⽤去考虑⽹络异常,服务器宕机等其他因素,因此我们经常接触的事务本质上是数据库对 ACID 模型的⼀个实现,是为应⽤层服务的。

如果数据库不能保持事务,那么业务系统(程序)也要去保证事务

4. 如何使⽤事务

1.查看MySQL中支持事务的存储引擎

2.⾃动/⼿动提交事务

每执行一条update insert delete 都会包含在事务当中

• 默认情况下,MySQL是⾃动提交事务的,也就是说我们执⾏的每个修改操作,⽐如插⼊、更新和删除,都会⾃动开启⼀个事务并在语句执⾏完成之后⾃动提交,发⽣异常时⾃动回滚。
• 查看当前事务是否⾃动提交可以使⽤以下语句

2.1自动提交事务

事务自动提交的情况下,一个事务中包含SQL,也就是说执行的增删改的操作会立刻提交

2.2手动提交事务

事务手动提交,不用手动开启事务,执行完SQL之后,手动COMMIT或ROLLBACK

 3.语法
# 开始⼀个新的事务
START TRANSACTION;
# 或
BEGIN;
# 提交当前事务,并对更改持久化保存
COMMIT;
# 回滚当前事务,取消其更改
ROLLBACK;

• START TRANSACTION 或 BEGIN 开始⼀个新的事务;
• COMMIT 提交当前事务,并对更改持久化保存;
• ROLLBACK 回滚当前事务,取消其更改;
• ⽆论提交还是回滚,事务都会关闭

5.事务的隔离性和隔离级别

1.什么是隔离性

MySQL服务可以同时被多个客⼾端访问,每个客⼾端执⾏的DML语句以事务为基本单位,那么不
同的客⼾端在对同⼀张表中的同⼀条数据进⾏修改的时候就可能出现相互影响的情况,为了保证不同的事务之间在执⾏的过程中不受影响,那么事务之间就需要要相互隔离,这种特性就是隔离性

2.隔离级别

事务间不同程度的隔离,称为事务的隔离级别;不同的隔离级别在性能和安全⽅⾯做了取舍,有
的隔离级别注重并发性,有的注重安全性,有的则是并发和安全适中;在MySQL的InnoDB引擎中事务的隔离级别有四种,分别是:

并发:多个客户端可以同时进行数据操作         安全:相互之间影响的程序

3.不同隔离级别存在的问题
3.1READ UNCOMMITTED - 读未提交与脏读

3.2READ COMMITTED - 读已提交与不可重复读

3.3REPEATABLE READ - 可重复读与幻读

3.4SERIALIZABLE - 串⾏化

4.不同隔离级别的性能与安全

5.查看和设置隔离级别
1.查看不同作⽤域事务的隔离级别
# 全局作⽤域
SELECT @@GLOBAL.transaction_isolation;
# 会话作⽤域
SELECT @@SESSION.transaction_isolation;

2.设置事务的隔离级别和访问模式
# 通过GLOBAL|SESSION分别指定不同作⽤域的事务隔离级别
SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL level|access_mode;
# 隔离级别
level: {
REPEATABLE READ # 可重复读| READ COMMITTED # 读已提交| READ UNCOMMITTED # 读未提交| SERIALIZABLE # 串⾏化
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QCon演讲实录|徐广治:边缘云原生操作系统的设计与思考

10月18日,在 QCon 全球软件开发大会 2024(上海站),火山引擎边缘云资深架构师徐广治围绕火山引擎边缘计算产品背后的算力底座 - 边缘云原生操作系统,探讨如何实现算力服务的混合部署和跨区域弹性调度,以及在…

高效作业之Mybatis缓存

高效作业之Mybatis缓存 引言1. MyBatis的一级缓存1.1. 代码示例一级缓存1.2. 使一级缓存失效的四种情况 2. Mybatis二级缓存2.1. 代码示例二级缓存2.2 使二级缓存失效的情况2.4. 二级缓存配置 3. MyBatis缓存查询的顺序4. 整合第三方缓存EHCache4.1. 添加依赖4.2. 创建EHCache的…

论文阅读笔记-Covariate Shift: A Review and Analysis on Classifiers

前言 标题:Covariate Shift: A Review and Analysis on Classifiers 原文链接:Link\ 我们都知道在机器学习模型中,训练数据和测试数据是不同的阶段,并且,通常是是假定训练数据和测试数据点遵循相同的分布。但是实际上&…

[含文档+PPT+源码等]精品基于PHP实现的会员综合管理平台的设计与实现

基于PHP实现的会员商城平台的设计与实现背景,可以从以下几个方面进行详细阐述: 一、电子商务的兴起与发展 随着Internet的广泛普及,电子商务迅速崛起并成为一种主流的购物趋势。通过网络,消费者可以足不出户地浏览和购买各种各样…

微博舆情分析:使用Python进行深度解析

目录 一、准备工作 二、基础理论知识 三、步骤详解 数据预处理 情感分析 关键词提取 四、案例分享 数据爬取 数据分析 五、优化 六、结论 在当今信息爆炸的时代,社交媒体平台如微博已成为公众表达意见和情感的重要渠道。微博舆情分析通过对大量微博数据进…

GPT原理;ChatGPT 等类似的问答系统工作流程如下;当用户向 ChatGPT 输入一个问题后:举例说明;ChatGPT不是通过索引搜索的传统知识库

目录 GPT原理 GPT架构 GPT 主要基于 Transformer 的解码器部分 ChatGPT 等类似的问答系统工作流程如下: 用户输入 文本预处理 模型处理 答案生成 输出回答 当用户向 ChatGPT 输入一个问题后:举例说明 文本预处理: ChatGPT不是通过索引搜索的传统知识库 GPT GPT…

【C++】C++内存管理(一):new/delete

大家好,我是苏貝,本篇博客带大家了解C的内存管理,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1.C/C内存分布2. C语言中动态内存管理方式:malloc/calloc/realloc/free3. C内…

选择适合你的报表工具,山海鲸报表与Tableau深度对比

在数据分析和报表制作的领域,企业往往面临着选择合适工具的难题。尤其是当市场上有很多功能强大的工具时,如何从中挑选出最适合自己需求的报表软件成为了一个关键问题。今天,我们将对比两款报表工具——山海鲸报表和Tableau,看看它…

网站架构知识之Ansible(day020)

1.Ansible架构 Inventory 主机清单:被管理主机的ip列表,分类 ad-hoc模式: 命令行批量管理(使用ans模块),临时任务 playbook 剧本模式: 类似于把操作写出脚本,可以重复运行这个脚本 2.修改配置 配置文件:/etc/ansible/ansible.cfg 修改配置文件关闭主机Host_key…

`psdparse`:解锁Photoshop PSD文件的Python密钥

文章目录 psdparse:解锁Photoshop PSD文件的Python密钥背景:为何选择psdparse?psdparse是什么?如何安装psdparse?简单函数使用方法应用场景常见Bug及解决方案总结 psdparse:解锁Photoshop PSD文件的Python密…

淘宝反爬虫机制的主要手段有哪些?

淘宝的反爬虫机制主要有以下手段: 一、用户身份识别与验证: User-Agent 识别:通过检测 HTTP 请求头中的 User-Agent 字段来判断请求是否来自合法的浏览器。正常用户使用不同浏览器访问时,User-Agent 会有所不同,而爬虫…

使用ssh-key免密登录服务器或免密连接git代码仓库网站

ssh登录服务器场景 假设有两台机器,分别是: 源机器:主机A(hostA),ip:198.168.0.1 目标机器:主机B(hostB),ip:192.168.0.2 ssh-key免…

swoole扩展安装--入门篇

对于php来说,swoole是个强大的补充扩展。这是我第3次写swoole扩展安装,这次基于opencloudos8系统,php使用8.2。 安装swoole扩展首先想到的是用宝塔来安装,毕竟安装方便,还能统一管理。虽然获得swoole版本不是最新的&am…

神经网络基础--什么是神经网络?? 常用激活函数是什么???

前言 本专栏更新神经网络的一些基础知识;案例代码基于pytorch;欢迎收藏 关注, 本人将会持续更新。 神经网络 1、什么是神经网络 人工神经网络( Artificial Neural Network, 简写为ANN)也简称为神经网络…

Pycharm,2024最新专业版下载安装配置详细教程!

先来一段官方介绍,PyCharm是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能…

Edge浏览器打开PDF无法显示电子签章

Edge浏览器打开PDF无法显示电子签章 直接说处理方式 直接说处理方式 浏览器地址栏,输入 edge://flags/搜索:pdf禁用:New PDF Viewer效果如下

论 ONLYOFFICE:开源办公套件的深度探索

公主请阅 引言第一部分:ONLYOFFICE 的历史背景1.1 开源软件的崛起1.2 ONLYOFFICE 的发展历程 第二部分:ONLYOFFICE 的核心功能2.1 文档处理2.2 电子表格2.3 演示文稿 第三部分:技术架构与兼容性3.1 技术架构3.2 兼容性 第四部分:部…

算法——双指针

目录 前言一、什么是双指针二、算法特点三、算法实现步骤四、常见形式五、应用场景与示例六、优势与注意事项七、双指针算法动态图解八、经典例题[1. 回文判定](https://www.lanqiao.cn/problems/1371/learning/?page1&first_category_id1&name%E5%9B%9E%E6%96%87%E5%…

【简信CRM-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

burpsuite安装详细教程(非常详细)零基础入门到精通,收藏这篇就够了

BurpSuite是一款功能强大的集成化安全测试工具,专门用于攻击和测试Web应用程序的安全性。适合安全测试、渗透测试和开发人员使用。本篇文章基于BurpSuite安装及常用实操做详解,如果你是一名安全测试初学者,会大有收获! 前****言 …