Movatterモバイル変換


[0]ホーム

URL:


MySQL中的MVCC机制-事务

原创已于 2025-03-05 17:46:38 修改·873 阅读
· 21
· 19·
CC 4.0 BY-SA版权
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
文章标签:

#mysql#数据库

于 2025-01-04 17:16:59 首次发布

事务是什么

在 MySQL 中,事务是一组原子性的 SQL 操作,这些操作要么全部成功执行,要么全部不执行。就好像是一个不可分割的工作单元,保证了数据的一致性和完整性。也就是说MySQL服务同样会被多个客户端同时访问(MySQL内部采用多线程架构),所以此时多个执行流同时访问MySQL数据库中的内容,为了保障数据一致性与完整性就有了事务的概念。所以事务就要满足以下特性:原子性、一致性、隔离性、持久性(ACID)

事务版本支持

在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务, MyISAM 不支持。查看数据库引擎 show engines \G指令:

事务提交方式

  • 手动提交
  • 自动提交

查看事务提交方式: 

设置提交方式:

SET AUTOCOMMIT = 0; // 关闭自动提交SET AUTOCOMMIT = 1; // 打开自动提交

开启事务后,数据库暂时停止自动提交功能,将后续的操作视为一个事务单元。而对于事务是否自动提交的设置只会对单SQL语句起作用,表明单SQL语句是否被当作一个事务进行提交。所以当设置自动提交以后,单SQL语句进行数据的CURD操作时,都会自动将该操作视作一个事务自动提交到数据库当中,使得修改立即生效,从而达到持久化的目的。 

事务启动与关闭

启动:

begin;/start transaction;

关闭:

commit;/rollback;

其中可以在启动事务执行中添加保存点 savepoint s1;然后回滚的时候可以rollback to s1;就直接回滚到保存点s1的位置,但此时并不会关闭事务。

事务的原子性与隔离性

  • 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
     
  • 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

事务隔离级别的认识

MySQL中的一个事物可能会有多条语句构成,所以在一个事务就会有三个阶段:执行前、执行中、执行后。而包保证事务得原子性就不运行事务执行中的过程被干扰,也就是用户层只能看到事务执行前和执行后的结果。而要保障事务的执行过程是原子性的就间接的有了隔离性特征,而对与不同的事务存在不同的干扰程度

最低0.47元/天 解锁文章
确定要放弃本次机会?
福利倒计时
::

立减 ¥

普通VIP年卡可用
立即使用
参与评论您还未登录,请先登录后发表或查看评论

博客等级

码龄3年
85
原创
817
点赞
672
收藏
507
粉丝
关注
私信

TA的精选

查看更多

大家在看

TA的历史创作历程

分类专栏

展开全部收起

上一篇:
MySQL中的索引
下一篇:
C++多态的认识与理解

目录

展开全部

收起

目录

展开全部

收起

上一篇:
MySQL中的索引
下一篇:
C++多态的认识与理解

目录

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
被折叠的  条评论为什么被折叠?到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝规则
hope_wisdom
发出的红包

打赏作者

CR0712

你的鼓励将是我创作的最大动力

¥1¥2¥4¥6¥10¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

[8]ページ先頭

©2009-2025 Movatter.jp