资源简介
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服务器性能调整
相关资源
- MoNyog8.5+破解补丁
- ANSYS LS-DYNA
- ManageEngine_OpManager_12.3安装手册+管理员
- 全国4级地址库,京东数据
- 一个超简单的企业管理系统(带ACCE
- 数据库课设:图书管理系统报告
- 合同管理系统的源代码(附数据库)
- ado数据库MFC图书管理系统vs2010
- 数据库VFP课程设计
- 数据库实现学生成绩管理系统选课管
- 排队机叫号 源代码
- Access数据库在线编辑器
- Php 导出数据为EXCEL程序
- 人大金仓数据库系统表
- 模拟ATM柜员机系统--连接数据库
- 用工厂模式开发多数据库连接类
- 图片存储到数据库保存二进制文件并
- 数据库水印嵌入提取数据库水印数据
- 数据库课程设计以及指导思想
- 加班网上管理 单位
- 数据库课程设计报告(关于房地产销
- 数据库课程设计(改改直接交)
-
将数据库的表生成xm
l文件 - Ajax定时读取数据库(源代码发布)
- 浪潮数据库结构
- 数据库查询优化算法
- PB做的俄罗斯方块
- 典当综合业务管理系统(完整版)
- 标准化题库考试系统
- 04酒店前台收银系统
评论
共有 条评论