持久性取决于:redolog两阶段提交 ,有个问题,如果mysql在写操作突然断电,那是不是数据就会丢失,那么mysql是如何保证数据不丢失的呢?
mysql性能卡在io,如果是随机读写那么效率低,需要寻址,如果是顺序读写没那么效率高,只需要在后面append即可。io也就类似c语言中的指针来操作文件,指针移动的过程。
wal:write ahead log
打个比喻:加入村里开了饭店,村里的人来吃饭,只记账在一个黑板中,当你饭店不忙的时候,把这些黑板的账务记录在你真实的本子中
问题1:redolog和undolog谁先写谁后写?
假设先写redolog后写undolog那么会导致2台数据库数据不一致
那么先写undolog厚些redolog结果也是数据不一致,如何根治这两种情况呢?
如果是prepare断电,那么数据不会提交,如果是commit那么数据就提交
核心思想也就是通过新增一个状态位来保证数据一致
rc:读取到数据,每次进行快照读,都会生成新的readview
rr:读取不到数据,只有在当前事物第一次进行快照读的时候生成readview,之后的快照读都会沿用第一次生成的readview



