事务___

1.什么是事务?

事务是把一组SQL语句打包为一个"整体",执行时要么执行全部,要么全部不执行(回滚)。这组SQL语句数量>=0

例如:

现在张三给李四转账100元:

执行时12,14行的语句必须都执行,否则数据出错。所以就把这两句SQL打包为一组

又比如:商品库存表和订单表

订单+1,库存-1

必须都执行

2.回滚(rollback)

如果数据库再运行过程中,在运行完12行后,突然服务器断电/系统宕机/服务器崩溃等,不能执行14行,这就会造成数据出错

所以数据库在运行过程中,进行增/删/改操作时,都会记录一个日志,记录当前操作并将其保存在硬盘上

如果事务正常执行完毕,保存的日志就会删除

如果事务执行一半异常退出,日志就会保存到硬盘上

重启MySQL服务器,就会读取日志中的内容,查看之前的操作。然后根据之前的操作,把硬盘保存的数据还原回去

3.事物的ACID特性

1.A(Atomicity)

原子性

把事务当作不可再分的"原子"

即一个事务中的所有操作,要么全部成功,要么全部失败,不会出现执行了一半这样的情况。如果在事务执行中发生错误,会回滚会事务开始前状态

2.C(Consistency)

一致性

在事务开始之前和事务结束以后,数据库的完整性不会被破坏。这表示写入的数据必须完全符合所有的预设规则,包括数据的精度、关联性以及关于事务执行过程中服 务器崩溃后如何恢复。

比如转账。必须是你-500,他+500,不能是你-500,他+0

3.I(Isolation)

隔离性

一个数据库服务器可以同时执行多个客户端提交的事务,并且事物之间不会相互影响。数据库允许多个事务同时并发,同时对数据进行读写和修改,隔离性可以防止多个事务并发执行时交叉执行导致数据不一致的问题。

事务隔离可以指定不同级别

4.D(Durabilty)

持久性

事务对数据做出的修改,都是持久的。数据保存在硬盘上,重启服务器,重启数据库,都不会使数据丢失

相关推荐
IT枫斗者枫哥2 小时前
MyBatis一对多分页:LIMIT 20,为什么凑不齐20个订单?
java·数据库
代码方舟2 小时前
Java数据工程:利用天远全网运营商三要素优化线上实名认证合规体验
java·人工智能
BBmmo2 小时前
我的 Java 学习笔记 · 第 7 篇:泛型与通配符
java
独泪了无痕2 小时前
Hutool之RandomUtil:随机数生成的终极利器
java·后端
Flynt2 小时前
"MySQL搜不动就上ES"?我先在50万行数据上测了它自带的ngram全文索引
mysql·elasticsearch·搜索引擎
花开路口2 小时前
深入理解 Java/Kotlin 协变与逆变
java·kotlin
运行时异常2 小时前
【WMS 仓储系统集成 AI Agent 实战】第 7 讲:Vue3 前端工程化——Token 刷新锁、Markdown 渲染踩坑与权限体系
java
她的男孩2 小时前
开放接口限流从 20 改到 200 还是每分钟 20 次:拆完防重放+幂等+限流,我找到 5 个静默失效的坑
java·后端·架构
Y002 小时前
PostgreSQL 的锁:为什么你的 ALTER TABLE 会卡住,以及怎么查
数据库·postgresql
天天被压力2 小时前
【Python 量化取数指南 #13】Python 把行情落库:sqlite 一键存,回测随用随取
java·人工智能·python