DB2 缓冲池设计原则


访问模式

  • 首次访问数据库时,由于缓冲池内没有数据页,数据库管理器会将磁盘上相应的数据页读入缓冲池中。
  • 每当向缓冲池添加新页时,都会为该页生成一个页面描述符(BPD)以标识该页,并存放在Database Heap中。
  • 删除页时会将其描述符一并删除,页面状态发生变化后会更新该页描述符。

数据同步

  • 对数据页进行操作时,数据库会添加一个共享锁或排它锁以保证数据的同步,并存放在Locklist中统一管理。相应的SQL语句会被存储到包缓存(package Cache)中,根据包缓存在日志缓冲区生成日志文件。
  • 当操作提交时,如果数据页没有被修改(干净页),则无需向磁盘回写数据页;如果数据页被修改(脏页),则需要将修改后的数据页回写到磁盘,替换原有页,该脏页变成干净页。相应的日志文件会被写入磁盘,以保证发生断电等突发事故时保证能够利用磁盘上的日志文件进行回滚(Undo)或重做(Redo)。
  • 操作提交后,数据页所持有的共享锁或排它锁也相应解除。所有数据页会继续保留在缓冲池中。
  • 下次进行访问时,如果缓冲池中存在需要访问的数据页,则直接对该页进行操作,并同样进行日志记录和数据页回写等操作。如果不存在需要访问的数据页,则需要先从磁盘将数据页读入缓冲池,重复以上过程。