c5-事务的处理与恢复
ACID
原子性
对应数据库来讲只有事务这个概念,没有更细微的操作.不能出现做到一半的情况.
一致性
在处理事务时不能出BUG导致数据库本身的破坏.
隔离性
对于一个正在执行的事务来讲,好像整个数据库是被其独占一样.
持久性
事务完成了就是完成了 crash/断电/其他异常出现后,恢复时也要保证这一点.
缓存管理
数据库的一大麻烦之处就在于要最优化磁盘/内存/CPU/网络,简单的讲就是最好重写操作系统 (笑)
这里的缓存管理实际上就是面向数据库操作优化的页缓存
5.1.3 在缓存中锁定页
某些文件(页)在使用中因为设计的原因会一直保持"高温"的状态,例如根节点的几个页.我们可以选择将其Pin在内存中
5.1.4 页置换
这个水晶球怎么看怎么像机器学习 (望天) 数据是有的 (真正的页缓存未命中的次数) 判断函数也是有的 (应用了新的策略后是否减小了缓存穿透)
FIFO/LRU
先入先出: 维护页缓存列表(加到最后),满时干掉第一个 最后访问时间: 访问时维护页缓存列表(每次访问赋予某页权重) 满时干掉权重最低的 LRU实现
Belady现象
在我看来Belady现象的本质原因在于,FIFO根本就不是一个有意义的置换算法,只不过是置换的一种方式罢了,没有考虑置换的意义是什么(减少置换).从实践的角度上讲,正好会越换越遭.
CLOCK
clock讲解 clock讲解 实际上感觉是对LRU在工程上的优化.在不使用哈希表的情况下减少了遍历的次数
LFU (最近最少使用)
访问累计频率, 满时干掉频率最低的
5.2
物理日志概念对应的应该是快照
5.3 并发控制
异常
下面是报菜名阶段