数据库的读写过程会经历三个地址空间。
1. disk
2. buffer
3. 当前查询或事务自己的地址空间。
所有输入数据都要先流经buffer才能到达disk。反之亦然:所有输出数据都要先从disk进入buffer,才会到达客户端。
也就是说,可以 3=>2=>1或1=>2=>3, 不能直接1=>3或3=>1.
不仅数据读写如此,redo log和undo log的写入也要先经buffer,才能进入disk.
有个专门的buffer manager来管理buffer, 比如在什么时机将数据flush至disk, 就是由它来决定的。