暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
buffer管理
505
10页
2次
2020-01-04
5墨值下载
一、数据结构
1
Buer
由数组
BuerDescriptor[]
数组进行管理。该数组由函
InitBuerPool
创建,大
NBuers
BuerDesc
StrategyControl
rstFreeBuer
lastFreeBuer
free list
中成员由
freeNext
串起来,该值为数组下标。
2
BuerDescriptor
数组是共享内存中申请,所有进程共享。
进程
1
(gdb) p BuerDescriptors
$1 = (BuerDescPadded *) 0xa615fb80
(gdb) p *BuerDescriptors
$2 = {buerdesc = {tag = {rnode = {spcNode = 1664, dbNode = 0,
relNode = 1262}, forkNum = MAIN_FORKNUM, blockNum = 0}, buf_id =
0,
state = {value = 2199126016}, wait_backend_pid = 0, freeNext = -2,
content_lock = {tranche = 53, state = {value = 536870912}, waiters = {
head = 2147483647, tail = 2147483647}}}, pad = "\200"}
进程
2
(gdb) p BuerDescriptors
$1 = (BuerDescPadded *) 0xa615fb80
(gdb) p *BuerDescriptors
$2 = {buerdesc = {tag = {rnode = {spcNode = 1664, dbNode = 0,
relNode = 1262}, forkNum = MAIN_FORKNUM, blockNum = 0}, buf_id =
0,
state = {value = 2199126016}, wait_backend_pid = 0, freeNext = -2,
content_lock = {tranche = 53, state = {value = 536870912}, waiters = {
head = 2147483647, tail = 2147483647}}}, pad = "\200"}
3
、同时还会通过一个环形区进行管理这些数组成员。当进行大表扫描时使用。由
strategy-
>buers[]
BuerDescriptors[]
+1
buf
描述符时,从
strategy->current
值开始进行选择。选出的不可用后,依次向后进行遍历
遍历到头后从头再来进行选择,即形成一个环。是否可用的标准后文详述。
4
、下面说下
BuerDesc
成员变量。
1
BuerTag tag
为一描述对应盘物页的射。
space ID+database ID+
文件
ID
-- forkNum
(表文件还是
fsm
文件或者
vm
文件)
--
页号
2
buf_id
buer
数组
BuerBlocks[]
的下标
3
state
为状态标记,包括该
buer
refcount
usagecount
以及是否合法
valid
等待
4
wait_backend_pid
A
访
refcount>0
时,进程
A
不能物理上删除元组。系统将该进程的
ID
记录在
wait_backend_id
上,冲块
pin
,并。当
refcount
1
最后使该缓
程释放缓冲区时,会向
wait_backend_id
进程发送消息。
5
FreeNext
为链表的下一个节点的下标
6
content_lock
buer
访
LW_SHARE
LW_EXCLUSIVE
of 10
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜