昆山玉山网站建设,重庆游戏公司,服务器网站开发,怎么把网站黑了#x1f308;键盘敲烂#xff0c;年薪30万#x1f308; 目录
一、log日志文件
#x1f4d5; 事务执行流程
#x1f4d5; redo log
#x1f4d5; undo log
二、总结 #x1f440;再来一遍ACID 1. 原子性#xff1a;原子性确保事务作为一个整体执行#xff0c;要么… 键盘敲烂年薪30万 目录
一、log日志文件 事务执行流程 redo log undo log
二、总结 再来一遍ACID 1. 原子性原子性确保事务作为一个整体执行要么全部执行成功要么全部不执行。 2. 一致性一致性确保事务将数据库从一个状态转换为另一个状态。 3. 隔离性隔离性确保并发执行的多个事务互相隔离。 4. 持久性事务一旦提交其修改将永远保存在数据库中。 一、log日志文件 事务执行流程
为什么会有日志❓ 先说结论 数据库日志的存在是为了确保事务的持久性支持故障恢复和并发控制并提供回滚、撤销以及备份和恢复的功能。日志记录了对数据库的操作使得数据库系统能够有效地管理数据的修改和恢复。 确保持久性❓ 难道没有日志事务提交后可能出现数据不一致❓ 分析 执行事务-判断内存中有无数据-加载磁盘数据到内存-事务提交-日志保存到磁盘 问题1刷新数据时机 系统会根据负载情况和性能优化的考虑来决定脏数据刷新的时机和方式。 问题2为什么不能提交完事务直接将Buffer Pool数据保存到磁盘文件 我们平时操作的数据库都是随机的也就意味着随机访问磁盘文件这会大量占用I/O性能很低。但是日志是以追加的方式写入是顺序访问磁盘文件性能高的很。 WAL机制
Writer - Ahead - Logging: 先记录日志在刷新脏数据 小结 了解了事务的执行流程在看日志就比较简单了无非就是两种记录方式。 redo log
重做日志记录事务提交时对数据页的操作从而实现事务的持久性。
redo log buffer:内存中的数据库数据。
redo log file:磁盘中的数据库数据。 undo log
又称回滚日志用于记录被修改前的信息作用有两个回滚事务MVCC。它可以保障事务的原子性 注意 Undo log记录的数据是反向的比如执行一条delete语句undo log保存一条insert语句回滚就是读取undo log中的sql语句再比如执行update语句undo log会保存update前的数据库状态。 Undo log销毁事务提交后不会立刻销毁日志因为这些日志可能用于MVCC
Undo log存储采用段的方式进行管理和记录这里不太懂 二、总结
redo log保证了事物的持久性
undo log保证了事务的原子性
redo log undo log保证了事务的一致性
MVCC锁保证了事务的隔离性下一篇