17#include "common/lang/mutex.h"
18#include "common/lang/unordered_map.h"
19#include "common/types.h"
20#include "common/sys/rc.h"
21#include "storage/buffer/page.h"
50 static const int32_t SIZE;
56 int32_t buffer_pool_id;
61 return buffer_pool_id == other.buffer_pool_id && page_num == other.page_num;
69 return hash<int32_t>()(key.buffer_pool_id) ^ hash<PageNum>()(key.page_num);
150 unordered_map<DoubleWritePageKey, DoubleWritePage *, DoubleWritePageKeyHash> dblwr_pages_;
163 RC read_page(
DiskBufferPool *bp, PageNum page_num,
Page &page)
override {
return RC::BUFFERPOOL_INVALID_PAGE_NUM; }
BufferPool的管理类
Definition: disk_buffer_pool.h:322
BufferPool的实现
Definition: disk_buffer_pool.h:189
页面二次缓冲区,为了解决页面原子写入的问题
Definition: double_write_buffer.h:86
RC recover()
Definition: double_write_buffer.cpp:291
RC flush_page()
Definition: double_write_buffer.cpp:75
RC open_file(const char *filename)
Definition: double_write_buffer.cpp:58
RC clear_pages(DiskBufferPool *bp) override
清空所有与指定buffer pool关联的页面
Definition: double_write_buffer.cpp:193
RC write_page(DoubleWritePage *page)
Definition: double_write_buffer.cpp:161
RC load_pages()
将磁盘文件中的内容加载到内存中。在启动时调用
Definition: double_write_buffer.cpp:235
RC add_page(DiskBufferPool *bp, PageNum page_num, Page &page) override
Definition: double_write_buffer.cpp:95
RC write_page_internal(DoubleWritePage *page)
Definition: double_write_buffer.cpp:144
Definition: double_write_buffer.h:28
virtual RC clear_pages(DiskBufferPool *bp)=0
清空所有与指定buffer pool关联的页面
virtual RC add_page(DiskBufferPool *bp, PageNum page_num, Page &page)=0
Definition: double_write_buffer.h:154
RC clear_pages(DiskBufferPool *bp) override
清空所有与指定buffer pool关联的页面
Definition: double_write_buffer.h:168
RC add_page(DiskBufferPool *bp, PageNum page_num, Page &page) override
Definition: double_write_buffer.cpp:297
Definition: double_write_buffer.h:66
Definition: double_write_buffer.h:55
Definition: double_write_buffer.cpp:25
表示一个页面,可能放在内存或磁盘上
Definition: page.h:34