当前位置: 首页 > news >正文

MySQL事务介绍

一、一个典型的事务场景 

步骤操作描述SQL 语句
1开启事务,确保转账操作的原子性START TRANSACTION;
2从用户 A 的账户中扣除 100 元UPDATE account SET balance = balance - 100 WHERE user = 'A';
3向用户 B 的账户中添加 100 元UPDATE account SET balance = balance + 100 WHERE user = 'B';
4检查用户 A 的账户余额是否足够,若不足则回滚事务SELECT balance FROM account WHERE user = 'A';<br>若余额不足,执行ROLLBACK;
5若转账成功,提交事务使更改永久生效COMMIT;

二、事务的特性

特性描述实现方式
原子性(Atomicity)事务是不可分割的工作单位,要么全部执行,要么全部不执行通过Undo log来实现原子性
一致性(Consistency)事务执行前后,数据库从一个一致状态转换到另一个一致状态通过Redo log和Undo log来实现一致性
隔离性(Isolation)并发执行的事务之间互不干扰,一个事务的执行不能被其他事务干扰

通过锁来实现写与写之间事务的隔离性

MVCC来实现读和写的隔离性

持久性(Durability)事务一旦提交,其结果是永久性的,即使系统发生故障,数据也不会丢失Redo log实现了MySQL的持久性

三、事务在数据库中的作用

  • 数据一致性
  • 并发控制
  • 故障恢复
  • 应用程序逻辑的一致性

相关文章:

  • Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传
  • 通过NodeRED三步完成数据上报|AIoTedge最佳实践
  • MyBatis XMLMapperBuilder 是如何将 SQL 语句解析成可执行的对象? 如何将结果映射规则解析成对应的处理器?
  • vue3中用v-for循环出三个元素,绑定元素的ref并拿到这三个元素的ref属性
  • YOLO11结构
  • 深度学习框架PyTorch——从入门到精通(2)张量
  • 项目中pnpm版本和全局pnpm版本不一致
  • Vue:Vue2和Vue3创建项目的几种常用方式以及区别
  • Canary
  • 小程序API —— 52 小程序界面交互 - 模态对话框 - 消息对话框
  • 15 文件操作
  • 【初学者】解释器和脚本各是什么?有什么区别与联系?
  • Agent系列——Agent框架调研
  • 再学:函数可见性、特殊函数、修饰符
  • Python IP解析器 ip2region使用
  • Hessian矩阵详解与应用
  • VBA常见的知识都有哪些,让AI编写的VBA经常 报错,所以VBA的基础还是要学习的
  • Java 代理模式详解
  • 嵌入式GPRS协议面试题及参考答案
  • 自动驾驶背后的数学:特征提取中的线性变换与非线性激活
  • “上海之帆”巡展在日本大阪开幕,松江区组织企业集体出展
  • 上海启动万兆光网试点建设,助力“模速空间”跑出发展加速度
  • 奥利弗·斯通回顾越战50周年:我们不善于总结历史教训
  • 暴雨及强对流天气黄色预警已发布!南方进入本轮降雨最强时段
  • 咖啡戏剧节举办第五年,上生新所“无店不咖啡,空间皆可戏”
  • 公元1057年:千年龙虎榜到底有多厉害?