立即前往

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
查看全部活动
热门活动
  • 智算采购季 热销S6云服务器2核4G限时88元/年起,部分主机可加赠对象存储组合包!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 一键部署Llama3大模型学习机 0代码一键部署,预装最新主流大模型Llama3与StableDiffusion
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 产品能力
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
    • 关系数据库SQL Server版
    • 企业主机安全
    • 云防火墙
    • CDN加速
    • 物理机
    • GPU云主机
    • 天翼云电脑(政企版)
    • 天翼云电脑(公众版)
    • 云主机备份
    • 弹性云主机
      搜索发现
      关系数据库SQL Server版企业主机安全云防火墙CDN加速物理机GPU云主机天翼云电脑(政企版)天翼云电脑(公众版)云主机备份弹性云主机
    • 文档
    • 控制中心
    • 备案
    • 管理中心
    • 登录
    • 免费注册

    初始MYSQL数据库(6)—— 事务

    首页 知识中心 数据库 文章详情页

    初始MYSQL数据库(6)—— 事务

    2025-02-12 09:28:16 阅读次数:10

    SQL,事务,回滚,提交,数据,语句,隔离

    事务的概念 

    首先,得了解什么是事务? 事务将一组SQL语句打包成一个整体,在这组SQL语句的执行过程中,要么全部成功,要么全部失败,以保证数据的一致性。

    事务的ACID特性

    事务的ACID特性指的是 Atomicity (原子性), Consistency (一致性), Isolation (隔离性)和 Durability (持久性)。 

    Atomicity(原子性):一个事务中的所有操作,要么全部成功,要么全部失败,不会出现只执行了一半的情况,如果事务在执行过程中发生错误,会回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样;
    Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性不会被破坏。这表示写入的数据必须完全符合所有的预设规则,包括数据的精度、关联性以及关于事务执行过程中服务器崩溃后如何恢复。简单理解就是事务开始前后的数据量要一致;
    Isolation(隔离性):数据库允许多个并发事务同时对数据进行读写和修改,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务可以指定不同的隔离级别,以权衡在不同的应用场景下数据库性能和安全;
    Durabi礼ity(持久性):事务处理结束后,对数据的修改将永久的写入存储介质,即便系统故障也不会丢失。

    正因为事务具备上述四个特性,保证了在使用事务过程中,要么提交,要么回滚,不用去考虑网络异常,服务器宕机等其他因素,因此事务在数据库的使用是非常频繁的。

    既然事务这么好用,那么我们该怎么去使用事务呢? 

    使用事务

    查看支持事务的存储引擎 

    在使用事务之前,得查看我们本机的数据库是否支持事务。

    在MySQL中支持事务的存储引擎是InnoDB,可以通过 show engines; 语句查看:

    初始MYSQL数据库(6)—— 事务

    知道了本机中的数据库是支持事务之后,便可以开始进行事务了。

    事务的语法 

    -- 开始一个新的事务
    start transaction;
    -- 或者下面这种写法
    begin;
    
    -- 提交当前事务,并对SQL语句的执行而影响的数据进行持久化保存
    commit;
    
    -- 回滚当前事务,并取消SQL语句的执行而影响的数据
    rollback;

    注意:无论是commit 还是 rollback 都会把事务关闭。

    下面就来进行实操:

    -- 开启事务
    start transaction;
    
    -- 插入一条数据
    insert into student values (NULL, '小红', 18, 0);
    
    -- 在事务中查看student表中的结果集
    select * from student;
    
    -- 回滚事务
    rollback;
    
    -- 在回滚之后,再查看student表中的结果集
    select * from student; 

     

    初始MYSQL数据库(6)—— 事务

    从上面的结果,我们就可以看出回滚之后,事务中的SQL语句全部失效。现在我们再来观察commit 的效果。 

    -- 开启事务
    start transaction;
    
    -- 插入一条数据
    insert into student values (NULL, '小红', 18, 0);
    
    -- 在事务中查看student表中的结果集
    select * from student;
    
    -- 提交事务
    commit;
    
    -- 在提交之后,再查看student表中的结果集
    select * from student; 

    初始MYSQL数据库(6)—— 事务

    从上面的结果,我们可以看出提交事务之后,事务中的SQL语句便生效了。 

    保存点 

    在事务执行的过程中设置保存点,回滚时指定保存点可以把数据恢复到保存点的状态。当事务中有多个修改数据的SQL语句时(包括插入、删除、更新),便可以设置多个保存点,以保证数据的一致性和操作方便。

    语法:

    savepoint savepoint_name; 

    示例:

    -- 开启事务
    start transaction;
    
    -- 修改多条数据
    
    savepoint sp1; -- 设置第一个保存点
    delete from student where id = 8 or id = 9;
    select * from student;
    
    savepoint sp2; -- 设置第二个保存点
    insert into student values (NULL, '小丽', 19, 0);
    select * from student;
    
    savepoint sp3; -- 设置第三个保存点
    update student set age = 20 where name = '张三';
    select * from student;
    
    -- 可以通过回滚到某一个保存点来取消修改
    rollback to sp3; 
    select * from student;
    
    -- 如果rollback后面啥也不跟,那就是默认回滚到事务开始之前,并关闭事务
    rollback;
    select * from student;

    初始MYSQL数据库(6)—— 事务

    自动/手动提交事务

    默认情况下,MySQL是自动提交事务的,也就是说我们执行的每个修改操作,比如插入、更新和删除,都会自动开启一个事务并在语句执行完成之后自动提交,发生异常时自动回滚。即每一条SQL语句对应着一个事务。

    查看当前事务是否自动提交可以使用以下语句:

    show variables like 'autocommit';

    初始MYSQL数据库(6)—— 事务

    如果value对应的是off,就是关闭的意思。

    可以通过以下语句设置事务为自动或手动提交:

    -- 设置事务为自动提交
    set autocommit = 1; -- 方式一
    set autocommit = on; -- 方式二
    
    -- 设置事务为手动提交
    set autocommit = 0; -- 方式一
    set autocommit = off; -- 方式二

    其实就是把自动提交开启或者关闭即可。

    使用事务的时候,要注意一下三点:

    1、只要使用start transaction 或 begin 开启事务,必须要通过commit 提交才会持久化,与是否设置set commit 无关。因为我们手动开启事务之后,必须要自己手动关闭事务。

    2、手动提交模式下,不用显示开启事务,执行修改操作后,提交或回滚事务时直接使用commit
    或rollback。因为手动提交下,就是需要我们自己把事务手动提交。

    3、已提交的事务是不能够回滚的。

    事务的隔离性和隔离级别

    隔离性的概念: 

    MySQL服务可以同时被多个客户端访问,每个客户端执行的SQL语句是以事务为基本单位,那么不同的客户端在对同一张表中的同一条数据进行修改的时候就可能出现相互影响的情况,为了保证不同的事务之间在执行的过程中不受影响,那么事务之间就需要要相互隔离,这种特性就是隔离性。这就类似于我们在食堂里面打饭的场景,同一个窗口,同一份饭菜,肯定有先来后到,不可能出现两个人同时拿到这份饭菜(假设不存在多个阿姨打饭的情况)。这就隔离开了。

    隔离级别分类:

    事务具有隔离性,那么如何实现事务之间的隔离?隔离到什么程度?如何保证数据安全的同时也
    要兼顾性能?这都是要思考的问题。

    事务间不同程度的隔离,称为事务的隔离级别;不同的隔离级别在性能和安全方面做了取舍,有
    的隔离级别注重并发性,有的注重安全性,有的则是并发和安全适中;在MySQL的InnoDB引擎中事务的隔离级别有四种,分别是:
    READ UNCOMMITTED,读未提交 —— 性能最强,但安全性最差。
    READCOMMITTED,读已提交 —— 性能稍逊于读未提交,安全性比读未提交高。
    REPEATABLE READ,可重复读(InnoDB默认) —— 性能比读已提交差,安全性比读已提交高。
    SERIALIZABLE,串行化  —— 性能最差,但安全性最高。

    下面就来解释上面四种隔离级别:

    READ UNCOMMITED —— 在读取数据时,可以读取到用户正在编辑的数据。这些数据处于事务中,但是还未提交。虽然性能高,但会造成一种现象'脏读'——读取的数据不一定是真实的,可以用户后面会进行修改,再提交。

    READ COMMITED —— 和上面的一对比,我们就知道这个是只能读取已经提交的数据。但这还会造成一种现象‘不可重复读’——可能现在这个时刻读取的数据内容是这样的,但是在另外一个时刻读取的数据内容确实另外的。

    REPEATABLE READ —— 在出现不可重复读的基础上,进行了改进。既然这些数据在被读取时,可能刷新一下就变样了,那直接把这些数据加上枷锁,那么用户就不能进行修改了。但还会出现另外一个问题,此时用户往这个表中插入了数据,即结果集的条数发生了变化。这种现象叫做‘幻读’。

    SERIALIZABLE —— 这个就是和我们学过的队列一样,数据是一次一次的读取。致使其不会出现安全问题,但是效率相比之下就慢很多。

    好啦!本期 初始MYSQL数据库(5)—— 事务 的学习之旅就到此结束啦!我们下一期再一起学习吧!

    版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.csdn.net/2301_80854132/article/details/142425139,作者:我要学编程(ಥ_ಥ),版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

    上一篇:数据结构之红黑树

    下一篇:字符串专题 算法小题

    相关文章

    2025-04-23 08:18:38

    基础—SQL—DML(数据操作语言)插入数据

    基础—SQL—DML(数据操作语言)插入数据

    2025-04-23 08:18:38
    字段 , 字段名 , 插入 , 数据 , 添加 , 表中
    2025-04-23 08:18:38

    基础—SQL—图形化界面工具的DataGrip使用(2)

    基础—SQL—图形化界面工具的DataGrip使用(2)

    2025-04-23 08:18:38
    创建 , 操作 , 数据库 , 界面 , 语句
    2025-04-23 08:18:38

    SQL—DQL之执行顺序(基础)

    SQL—DQL之执行顺序(基础)

    2025-04-23 08:18:38
    FROM , SELECT , 执行 , 查询 , 语句
    2025-04-22 09:28:31

    零基础玩转C语言系列第二章——分支语句

    零基础玩转C语言系列第二章——分支语句

    2025-04-22 09:28:31
    break , num , switch , 分支 , 语句
    2025-04-22 09:28:31

    零基础玩转C语言系列第三章——循环语句

    零基础玩转C语言系列第三章——循环语句

    2025-04-22 09:28:31
    字符 , 循环 , 语句 , 读取
    2025-04-22 09:28:19

    Mybatis-Flex实战

    Mybatis-Flex实战

    2025-04-22 09:28:19
    主键 , 数据 , 查询
    2025-04-22 09:28:19

    61. Spring事务传播行为实现原理

    61. Spring事务传播行为实现原理

    2025-04-22 09:28:19
    Spring , ThreadLocal , 事务
    2025-04-22 09:27:37

    【Redis】浅析 Redis 事务

    【Redis】浅析 Redis 事务

    2025-04-22 09:27:37
    redis , Redis , 事务 , 命令 , 执行
    2025-04-22 09:27:37

    【数据结构】栈和队列-->理解和实现(赋源码)

    【数据结构】栈和队列-->理解和实现(赋源码)

    2025-04-22 09:27:37
    初始化 , 删除 , 数据 , 队列
    2025-04-22 09:27:28

    【Python】系列之判断和循环

    【Python】系列之判断和循环

    2025-04-22 09:27:28
    Python , 判断 , 循环 , 执行 , 语句
    查看更多
    推荐标签

    作者介绍

    天翼云小翼
    天翼云用户

    文章

    32777

    阅读量

    4820003

    查看更多

    最新文章

    基础—SQL—图形化界面工具的DataGrip使用(2)

    2025-04-23 08:18:38

    Mybatis-Flex实战

    2025-04-22 09:28:19

    【Redis】浅析 Redis 事务

    2025-04-22 09:27:37

    基础—SQL—通用语法及分类

    2025-04-18 08:01:53

    mysql上课总结(3)(DML所有操作总结、TRUNCATE小结)

    2025-04-18 07:11:02

    Hive-数据模型详解(超详细)

    2025-04-18 07:10:44

    查看更多

    热门文章

    ​云原生微服务K8s容器编排第七章之ETCD的使用及备份

    2023-03-16 07:45:55

    Oracle用SQL打印日历

    2023-06-14 09:13:43

    JSP之 MySQL 插入数据时,中文乱码问题的解决

    2022-11-14 02:56:39

    #yyds干货盘点# mysql常见面试问题

    2022-12-26 09:32:17

    数据结构与算法之四 搜索算法

    2022-11-17 12:37:20

    MySQL数据库(2):SQL简介

    2023-02-22 06:43:47

    查看更多

    热门标签

    数据库 mysql 字符串 数据结构 MySQL redis 算法 java oracle sql python 数据 索引 数组 SQL
    查看更多

    相关产品

    弹性云主机

    随时自助获取、弹性伸缩的云服务器资源

    天翼云电脑(公众版)

    便捷、安全、高效的云电脑服务

    对象存储

    高品质、低成本的云上存储服务

    云硬盘

    为云上计算资源提供持久性块存储

    查看更多

    随机文章

    MySQL(16)事务

    MySQL复习-高级查询

    MySql数据库复杂查询示例

    面试题之数据库中事务及其四个特性

    【MySQL】MGR集群相关简介

    【mysql基础】mysql 四种类型语句常见操作

    • 7*24小时售后
    • 无忧退款
    • 免费备案
    • 专家服务
    售前咨询热线
    400-810-9889转1
    关注天翼云
    • 权益商城
    • 天翼云APP
    • 天翼云微信公众号
    服务与支持
    • 备案中心
    • 售前咨询
    • 智能客服
    • 自助服务
    • 工单管理
    • 客户公告
    • 涉诈举报
    账户管理
    • 管理中心
    • 订单管理
    • 余额管理
    • 发票管理
    • 充值汇款
    • 续费管理
    快速入口
    • 权益商城
    • 文档中心
    • 最新活动
    • 免费试用
    • 信任中心
    • 天翼云学堂
    云网生态
    • 甄选商城
    • 渠道合作
    • 云市场合作
    了解天翼云
    • 关于天翼云
    • 天翼云APP
    • 服务案例
    • 新闻资讯
    • 联系我们
    热门产品
    • 云电脑
    • 弹性云主机
    • 云电脑政企版
    • 天翼云手机
    • 云数据库
    • 对象存储
    • 云硬盘
    • Web应用防火墙
    • 服务器安全卫士
    • CDN加速
    热门推荐
    • 云服务备份
    • 边缘安全加速平台
    • 全站加速
    • 安全加速
    • 云服务器
    • 云主机
    • 智能边缘云
    • 应用编排服务
    • 微服务引擎
    • 共享流量包
    更多推荐
    • web应用防火墙
    • 密钥管理
    • 等保咨询
    • 安全专区
    • 应用运维管理
    • 云日志服务
    • 文档数据库服务
    • 云搜索服务
    • 数据湖探索
    • 数据仓库服务
    友情链接
    • 中国电信集团
    • 189邮箱
    • 天翼企业云盘
    • 天翼云盘
    ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
    公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
    • 用户协议
    • 隐私政策
    • 个人信息保护
    • 法律声明
    备案 京公网安备11010802043424号 京ICP备 2021034386号