数据库 事务管理 专项作战记录

做题技巧

可交换?可冲突可串行化?

对于一个并行调度,如果能证明其等价于一个串行调度,那么就不会冲突。

冲突可串行化【读后写 写后读 写后写触发冲突】(通过冲突等价交换 将并行变为串行证明可行)

视图可串行化【读后读(第一个读覆盖后续读) 写前写(最后一个写覆盖前面所有写) 写后读触发冲突】

可恢复调度【用别人的在别人后提交】(对commit的位置有要求)

级联调度(可能级联崩溃)

无级联调度【写完就交】(对commit有要求,且要求commit后读依赖数据)

ACID

原子性需求(非黑即白):系统必须保证所有操作在数据库中要么全部正确反映出来,要么完全不反应

持久性需求:对数据库的改变必须是永久的,即使出现系统故障也是如此.

一致性需求:隐形约束不被本次操作改变(转账后,A的余额和B的余额应该保持不变)

隔离性需求:A执行完 B还没执行完,然后T2事务来查询ReadA ReadB 输出A+B。不能被T2偷窥到。

事务状态

活跃 Active------开始执行

部分提交 Partially committed------内存已经修改了,但是还没在磁盘中写入(逻辑完成,物理没完成)

提交 Commited------落盘

失效 Failed------如果在活跃或部分提交的状态下,死锁 断电了 违背一致性约束 就失效。下一步会落实Rollback 回滚,撤出做了一半的操作。

中止 Aborted------回滚户后就是终止状态。 两种解决方案:重启事务(物理断电导致的);杀死kill事务(除零导致的,重启也过不了)。

调度 ☆ 必考一道调度大题

可串行化 很乱的调度通过交换顺序可以得到串行调度

对于一个并行调度,如果能证明其等价于一个串行调度,那么就不会冲突。

冲突------如果两人同时读写数据

冲突等价------交换顺序,不产生冲突,是冲突等价的。

☆ 冲突可串行化

通过交换顺序,将并行变为串行执行。

做题------优先图 解决 可串行化检测(是在T事务中的) 6个节点

如何画图?先把对于每个数据的WR写成一行,然后看看前后1两个操作能否交换,不能交换说明存在依赖,就画出从前到后的边

如果最后出现环说明不是冲突可串行化调度。

如果不出现环,就可以通过拓扑排序写出所有的调度顺序。

事务管理1

解答

事务管理2

解答

事务管理3

解答

事务管理4

解答

事务管理5

解答

事务管理6

可恢复就是用别人的比别人晚交

相关推荐
AllData公司负责人2 小时前
AI大模型数据开发底座系列说明书,AllData集成Chat2DB开源项目建设AI 数据库分析底座,涵盖AI 洞察/对话SQL/智能视图!
数据库·人工智能·sql·开源·ai 洞察·对话sql
xixingzhe22 小时前
数据库备份的分类与特点
数据库
时间的拾荒人6 小时前
Redis 主从复制详解:配置实操 + 原理机制
数据库·redis·面试
隔窗听雨眠6 小时前
MySQL三表JOIN执行内核与优化器决策机制
数据库·mysql·sql优化
Decay__7 小时前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
笃行3508 小时前
【金仓数据库产品体验官】订单增量同步实战:MERGE、OUTPUT 与 IDENTITY 的兼容验证
数据库
星恒随风12 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
无奈笑天下13 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
xiaoye-duck14 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
AllData公司负责人15 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析