管理整个文件中记录的增删改查
更多...
#include <record_manager.h>
|
RC | init_free_pages () |
| 初始化当前没有填满记录的页面,初始化free_pages_成员
|
|
|
DiskBufferPool * | disk_buffer_pool_ = nullptr |
|
std::unordered_set< PageNum > | free_pages_ |
| 没有填充满的页面集合
|
|
common::Mutex | lock_ |
| 当编译时增加-DCONCURRENCY=ON 选项时,才会真正的支持并发
|
|
管理整个文件中记录的增删改查
整个文件的组织格式请参考该文件中最前面的注释
◆ delete_record()
RC RecordFileHandler::delete_record |
( |
const RID * |
rid | ) |
|
◆ get_record()
获取指定文件中标识符为rid的记录内容到rec指向的记录结构中
- 参数
-
page_handler[in] | 访问记录时,会拿住一些资源不释放,比如页面锁,使用这个对象保存相关的资源,并在析构时会自动释放 |
rid | 想要获取的记录ID |
readonly | 获取的记录是只读的还是需要修改的 |
rec[out] | 通过这个参数返回获取到的记录 |
- 注解
- rec 参数返回的记录并不会复制数据内存。page_handler 对象会拿着相关的资源,比如 pin 住页面和加上页面锁。 如果page_handler 释放了,那也不能再访问rec对象了。
◆ init()
◆ insert_record()
RC RecordFileHandler::insert_record |
( |
const char * |
data, |
|
|
int |
record_size, |
|
|
RID * |
rid |
|
) |
| |
插入一个新的记录到指定文件中,并返回该记录的标识符
- 参数
-
data | 纪录内容 |
record_size | 记录大小 |
rid | 返回该记录的标识符 |
◆ recover_insert_record()
RC RecordFileHandler::recover_insert_record |
( |
const char * |
data, |
|
|
int |
record_size, |
|
|
const RID & |
rid |
|
) |
| |
数据库恢复时,在指定文件指定位置插入数据
- 参数
-
data | 记录内容 |
record_size | 记录大小 |
rid | 要插入记录的指定标识符 |
◆ visit_record()
RC RecordFileHandler::visit_record |
( |
const RID & |
rid, |
|
|
bool |
readonly, |
|
|
std::function< void(Record &)> |
visitor |
|
) |
| |
与get_record类似,访问某个记录,并提供回调函数来操作相应的记录
- 参数
-
rid | 想要访问的记录ID |
readonly | 是否会修改记录 |
visitor | 访问记录的回调函数 |
该类的文档由以下文件生成:
- src/observer/storage/record/record_manager.h
- src/observer/storage/record/record_manager.cpp