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

【MySQL是怎么运行的】三、事务

概念

多组sql,要满足四大特性

四大特性

 原子性:事务内的多个sql同时成功,同时失败,靠undo日志保证
 一致性:事务执行前后,数据从一个合法状态转为另一个合法状态,靠业务保证
 隔离性:事务之间相互隔离,靠MVCC和锁保证
 持久性:持久化到磁盘,靠redo日志保证

并发问题

create table account
(
    id      int primary key auto_increment,
    name    varchar(15),
    balance DECIMAL(10, 2)
);
insert into account(name, balance)
values ('张三', 100),
       ('李四', 0);
  • 脏写:写了其他事务未提交的数据,最低的事务隔离级别就解决了
  • 脏读:读了其他事务未提交的数据

事务一中张三给李四转账50,未提交事务。事务二读取到的张三余额50是脏数据(可能回滚)

  • 不可重复读:同个事务内,多次读取的数据不一致

事务一中张三给李四转账50,提交事务。事务二第一次读取张三余额50。事务一中张三继续给李四转账50,提交事务,事务二第二次读取张三余额是0.

幻读:同个事务内,多次读取的行数不一致

事务一中张三给李四转账50,提交事务。事务二第一次读取余额为50的用户有两个(张三和李四)。事务一中张三继续给李四转账50,提交事务,事务二第二次读取余额为50的用户只有一个(李四100元)

隔离级别

读未提交:解决脏写
读已提交:解决脏读
可重复读:解决不可重复读,MySQL默认隔离级别
串行化:解决幻读,不推荐

http://www.dtcms.com/a/62647.html

相关文章:

  • 密立根油滴仪测油滴电荷数据计算 Python实现
  • [算法] 结点K个一组的链表反转(hard)
  • 深入解析 TCP 协议【真题】
  • js-对象浅拷贝和深拷贝( B复制A,看B的值对比:都变为浅,一变一不变为深)
  • 5G技术与物联网融合:未来智慧城市的基石
  • Docker+Flask 实战:打造高并发微服务架构
  • ListView_GetIconBufferX函数和ListView_GetIconBufferY函数和RECT结构的关系
  • 【CXX】6.6 UniquePtr<T> — std::unique_ptr<T>
  • Windows安装milvus和图形化管理工具attu
  • 【webrtc debug tools】 rtc_event_log_to_text
  • 大数据面试之路 (一) 数据倾斜
  • 第一章:介绍Python编程-1.Python是什么
  • 2.2 企业级ESLint/Prettier规则定制
  • Excel两列和依次相减
  • AnyAnomaly: 基于大型视觉语言模型的零样本可定制视频异常检测
  • 中断机制及NVIC管理解析
  • Xavier 初始化:深度网络权重初始化的经典之作
  • Java小白-管理项目工具Maven(2)初识Maven
  • Cursor配置Golang开发环境
  • Java变量与常量
  • ubuntu 22.04 本地部署DeepSeek的Janus Pro
  • BigFoot EventAlertMod lua
  • 【hot100】046全排列
  • 初识数组下篇
  • 滑动窗口及边缘化直观理解
  • Maven 的常用指令
  • 编程视界:C++命名空间
  • 人工智能之数学基础:坐标变换
  • 【JavaEE】SpringIoC与SpringDI
  • 详细学习 pandas 和 xlrd:从零开始