BufferPool的实现
更多...
#include <disk_buffer_pool.h>
◆ allocate_page()
RC DiskBufferPool::allocate_page |
( |
Frame ** |
frame | ) |
|
在指定文件中分配一个新的页面,并将其放入缓冲区,返回页面句柄指针。 分配页面时,如果文件中有空闲页,就直接分配一个空闲页; 如果文件中没有空闲页,则扩展文件规模来增加新的空闲页。
◆ check_all_pages_unpinned()
RC DiskBufferPool::check_all_pages_unpinned |
( |
| ) |
|
检查是否所有页面都是pin count == 0状态(除了第1个页面) 调试使用
◆ close_file()
RC DiskBufferPool::close_file |
( |
| ) |
|
◆ create_file()
RC DiskBufferPool::create_file |
( |
const char * |
file_name | ) |
|
◆ dispose_page()
RC DiskBufferPool::dispose_page |
( |
PageNum |
page_num | ) |
|
◆ flush_all_pages()
RC DiskBufferPool::flush_all_pages |
( |
| ) |
|
◆ flush_page()
RC DiskBufferPool::flush_page |
( |
Frame & |
frame | ) |
|
◆ flush_page_internal()
RC DiskBufferPool::flush_page_internal |
( |
Frame & |
frame | ) |
|
|
protected |
◆ get_this_page()
RC DiskBufferPool::get_this_page |
( |
PageNum |
page_num, |
|
|
Frame ** |
frame |
|
) |
| |
根据文件ID和页号获取指定页面到缓冲区,返回页面句柄指针。
◆ load_page()
RC DiskBufferPool::load_page |
( |
PageNum |
page_num, |
|
|
Frame * |
frame |
|
) |
| |
|
protected |
◆ open_file()
RC DiskBufferPool::open_file |
( |
const char * |
file_name | ) |
|
◆ purge_frame()
RC DiskBufferPool::purge_frame |
( |
PageNum |
page_num, |
|
|
Frame * |
used_frame |
|
) |
| |
|
protected |
刷新指定页面到磁盘(flush),并且释放关联的Frame
◆ recover_page()
RC DiskBufferPool::recover_page |
( |
PageNum |
page_num | ) |
|
回放日志时处理page0中已被认定为不存在的page
◆ unpin_page()
RC DiskBufferPool::unpin_page |
( |
Frame * |
frame | ) |
|
用于解除pageHandle对应页面的驻留缓冲区限制
在调用GetThisPage或AllocatePage函数将一个页面读入缓冲区后, 该页面被设置为驻留缓冲区状态,以防止其在处理过程中被置换出去, 因此在该页面使用完之后应调用此函数解除该限制,使得该页面此后可以正常地被淘汰出缓冲区
该类的文档由以下文件生成:
- src/observer/storage/buffer/disk_buffer_pool.h
- src/observer/storage/buffer/disk_buffer_pool.cpp