数据库系统实现技术之缓冲区管理报告

数据库系统实现技术之缓冲区管理报告

ID:33772520

大小:79.50 KB

页数:5页

时间:2019-03-01

数据库系统实现技术之缓冲区管理报告_第1页
数据库系统实现技术之缓冲区管理报告_第2页
数据库系统实现技术之缓冲区管理报告_第3页
数据库系统实现技术之缓冲区管理报告_第4页
数据库系统实现技术之缓冲区管理报告_第5页
资源描述:

《数据库系统实现技术之缓冲区管理报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、StorageandBufferManager(1)实验要求:实现数据存储与缓冲区管理,并模拟LRU页面置换算法,记录I/O次数、命中次数。(2)实验环境:操作系统win7ultimate64bitSP1编译环境:Microsoftvisualstudio2010professional程序语言:C++数据文件存放:E:data-5w-50w-zipf.txt,生成的数据文档data.dbf在E:盘根目录下。(3)实验设计:BCB链表:…………^next^next^nextnnextnextHash链

2、表:Hash链表与LRU链表:(黄色部分为哈希链)pre^link^BCBnext^Next^prelinkBCBnextnext……prelinkBCBnextnext……LRU链表:……prelinkBCBnext^nextprelinkBCBnextnextPrelinkBCBnext^nextprelinkBCBnextnextLRUList指向最新节点(4)结构实现:typedefstructbuffer_LRUNode*buffer_LRUList;structBCB{//BufferCont

3、rolBlocks定义说明BCB();voidBCB_set();intpage_id;//记录相应的页号intframe_id;//记录缓冲区的块号intR_count;//文件被读操作使用计数intW_count;//文件被写操作使用计数intdirty;//文件读写标识符BCB*next;buffer_LRUNode*link;//指向LRU链表的对应位置};structbuffer_LRUNode{buffer_LRUNode();voidLRU_Set();BCB*pBCB;buffer_LRU

4、Node*next;buffer_LRUNode*pre;};(5)算法实现:BCB链表采用链式结构存储,于BMgr初始化,即调用构造函数BMgr()时分配1024个缓存块,组成BCB缓存链表当有读写访问请求时,首先通过Hash链表检查是否在缓冲区。若不在缓冲区中,则从BCB链表中申请一个BCB块,当缓冲区已满(BCB链表空)则执行LRU换入换出算法,否则直接分配一个BCB块,放入相应的hash链表与LRU链表,保证LRU链表保持旧到新的顺序排放且LRU指针始终指向最新实用结点;若在缓冲区中,则依据当前状

5、态位与操作类型进行相应操作并修改LRU链表,使其保持原有时序关系。当文件需要读入读出磁盘时,I/O次数加1;当与读写文件恰好在缓冲区且满足读写条件时,Hit(命中)次数加1.执行换入换出时,依据dirty位判断是否需要写回磁盘,同时从hash链表与LRU链表中移除相应块并存放在BCB链表中,以供后续使用。(5)执行结果:(6)实验分析:在本程序的读写锁控制中,仅在状态量上进行模拟,并未真正实现并发控制机制其次在程序执行时间记录上,稍微小于实际执行时间(在程序结束时类析构过程未予记录)对同一页数据进行读、写

6、不同操作时,若进行写操作则命中计数,若进行读操作前已经被修改,则命中数不计(读共享,需要先写回磁盘并再次读出)若仅考虑单进程情况,则不必考虑读、写不一致性,所得实验结果如下:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。