资源简介
http://blog.csdn.net/freagle112/article/details/17525249
为了了解数据库buffer管理器的工作原理,对数据库底层结构有进一步的了解,编写一个data storage manager和buffer manager。该试验涉及储存和缓冲管理器。缓冲技术,散列技术,文件储存结构,磁盘空间和缓冲模块的接口功能。
代码片段和文件信息
#include “BMgr.h“
#include
BMgr::BMgr()
{
for(int i = 0;i < DEFBUFSIZE;i++)
{
ftop[i] = -1;
ptof[i] = NULL;
}
head = NULL;
tail = NULL;
}
int BMgr::SelectVictim()
{
int vframe = 0page_id = 0frame_id = 0;
BCB *bcb = NULL;
bool found = false;
LRU *temp = tail;
if(temp == NULL)
{
return 0;
}
for(int i = 0; i < DEFBUFSIZE; i++)
{
if(ftop[i] == -1)
{
return i;
}
}
vframe = temp->frame_id;
page_id = ftop[vframe];
frame_id = Hash(page_id);
bcb = ptof[frame_id];
while(found != true)
{
if(bcb == NULL)
{
break;
}
while(bcb->frame_id != vframe)
{
bcb = bcb->next;
}
if(bcb->count == 0 && bcb->latch == 0)
{
found = true;
}
else
{
temp = temp->prior;
if(temp == NULL)
{
break;
}
vframe = temp->frame_id;
page_id = ftop[vframe];
frame_id = Hash(page_id);
bcb = ptof[frame_id];
}
}
page_id = ftop[vframe];
frame_id = Hash(page_id);
bcb = ptof[frame_id];
if(bcb != NULL)
{
if(bcb->next != NULL)
{
while(bcb != NULL && bcb->page_id != page_id)
{
bcb = bcb->next;
}
if(bcb != NULL && bcb->dirty == 1)
{
ds.WritePage(page_idbuf[vframe]);
}
if(bcb != NULL)
{
RemoveLRUEle(vframe);
RemoveBCB(bcbpage_id);
}
}
}
return vframe;
}
int BMgr::Hash(int page_id)
{
return page_id % DEFBUFSIZE;
}
void BMgr::LRUProcess(BCB *bcb)
{
double time = -1.0;
LRU *p = NULL;
LRU *temp = NULL;
if (head == NULL)
{
head = new LRU();
head->frame_id = bcb->frame_id;
if (bcb->last_time != -1.0)
{
head->b2dtime = bcb->last_time - bcb->first_time;
}
tail = head;
}
else
{
p = head;
if(bcb->last_time != -1.0)
{
time = bcb->last_time - bcb->first_time;
}
if(time == -1.0)
{
while(p->next != NULL)
{
if (p->next->b2dtime == -1.0)
{
temp = new LRU();
temp->frame_id = bcb->frame_id;
temp->b2dtime = time;
temp->next = p->next;
temp->prior = p;
p->next->prior = temp;
p->next = temp;
break;
}
p = p->next;
}
if(p->next == NULL)
{
p->next = new LRU();
p->next->prior = p;
p = p->next;
p->frame_id = bcb->frame_id;
p->next = NULL;
p->b2dtime = time;
tail = p;
}
}
else
{
while(p->next != NULL)
{
if(time <= p->next->b2dtime)
{
temp = new LRU();
temp->b2dtime = time;
temp->frame_id =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-12-24 10:38 db_01\
文件 6148 2013-12-24 10:38 db_01\.DS_Store
目录 0 2013-12-24 10:38 __MACOSX\
目录 0 2013-12-24 10:38 __MACOSX\db_01\
文件 120 2013-12-24 10:38 __MACOSX\db_01\._.DS_Store
目录 0 2013-11-23 23:14 db_01\bin\
目录 0 2013-11-23 23:14 db_01\bin\Debug\
文件 1054096 2013-11-23 23:42 db_01\bin\Debug\db_01.exe
目录 0 2013-12-24 10:38 __MACOSX\db_01\bin\
目录 0 2013-12-24 10:38 __MACOSX\db_01\bin\Debug\
文件 223 2013-11-23 23:42 __MACOSX\db_01\bin\Debug\._db_01.exe
文件 223 2013-11-23 23:14 __MACOSX\db_01\bin\._Debug
文件 223 2013-11-23 23:14 __MACOSX\db_01\._bin
文件 7094 2013-11-23 23:11 db_01\BMgr.cpp
文件 223 2013-11-23 23:11 __MACOSX\db_01\._BMgr.cpp
文件 749 2013-11-23 23:25 db_01\BMgr.h
文件 223 2013-11-23 23:25 __MACOSX\db_01\._BMgr.h
文件 4169 2013-11-23 22:48 db_01\d.cpp
文件 223 2013-11-23 22:48 __MACOSX\db_01\._d.cpp
文件 3690270 2013-11-23 23:19 db_01\data-5w-50w-zipf.txt
文件 223 2013-11-23 23:19 __MACOSX\db_01\._data-5w-50w-zipf.txt
文件 1315 2013-11-23 23:09 db_01\db_01.cbp
文件 223 2013-11-23 23:09 __MACOSX\db_01\._db_01.cbp
文件 800 2013-11-23 23:42 db_01\db_01.depend
文件 223 2013-11-23 23:42 __MACOSX\db_01\._db_01.depend
文件 278 2013-11-23 22:11 db_01\def.cpp
文件 223 2013-11-23 22:11 __MACOSX\db_01\._def.cpp
文件 616 2013-11-23 23:42 db_01\def.h
文件 223 2013-11-23 23:42 __MACOSX\db_01\._def.h
文件 1132 2013-11-23 23:30 db_01\DSMgr.cpp
文件 223 2013-11-23 23:30 __MACOSX\db_01\._DSMgr.cpp
............此处省略21个文件信息
- 上一篇:蓝牙蓝牙基础知识ppt
- 下一篇:Linux服务器性能调整
相关资源
- Cracking the PM Interview How to Land a Produc
- 东南大学 崇志宏:非结构数据存储和
- ATM取款机系统数据库设计.rar
- 网上购物系统 数据库设计
- 电影院售票系统
- 学生报名系统数据库单据报表注释全
- 省市县数据库及三级联动菜单
- 数据库 考勤管理系统
- 外卖小程序源码及后台有数据库,附
- firebird数据库相关链接库(dll)文件
- 数据库课程设计 医院药品进销存系统
- 微信小程序-商城源码+后台数据库
- 2018最新手机号段归属地数据库 (20
- 网狐数据库储存过程解密工具
- 数据库系统基础教程第三版-课后答案
- HP加易语言数据库,全源码制作的网络
- 数据库系统概念第五版课后答案英文
- 毕业论文学生管理系统+源代码+数据库
- 地质遗迹空间数据库标准
- 人才招聘系统(这是完整版包括数据
- 数据库课程设计开题报告
- 在线考试系统2
- 教务评教系统含数据库+报告
- 瀑布流视频讲解配套源码和数据库
- 广东工业大学数据库实验报告包含4个
- 数据库超市设计完整
- 扫描线Zbuffer
- 数据库课程设计—新生入学管理系统
- Yale 人脸数据库
- 《面向对象程序设计》项目设计
评论
共有 条评论