当前位置: 首页 > 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默认隔离级别
串行化:解决幻读,不推荐

相关文章:

  • 密立根油滴仪测油滴电荷数据计算 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变量与常量
  • 新华时评:中国维护国际经贸秩序的立场坚定不移
  • 告别户口本!今天起婚姻登记实现全国通办
  • 古埃及展进入百天倒计时,闭幕前168小时不闭馆
  • 习近平向中国人民解放军仪仗队致意
  • 中日有关部门就日本水产品输华问题进行第三次谈判,外交部回应
  • 屈晓华履新四川省社科联党组书记,此前担任省国动办主任