Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
2f320dc2
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2f320dc2
编写于
2月 07, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more TDB
上级
add314fa
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
51 addition
and
4 deletion
+51
-4
source/libs/tdb/src/db/pgcache.c
source/libs/tdb/src/db/pgcache.c
+29
-2
source/libs/tdb/src/inc/tdbInt.h
source/libs/tdb/src/inc/tdbInt.h
+22
-2
未找到文件。
source/libs/tdb/src/db/pgcache.c
浏览文件 @
2f320dc2
...
...
@@ -19,6 +19,7 @@ struct SPage {
pgid_t
pgid
;
// page id
frame_id_t
frameid
;
// frame id
SPgListNode
freeNode
;
// for SPgCache.freeList
SPgListNode
pghtNode
;
// for pght
uint8_t
*
pData
;
// real data
};
...
...
@@ -36,6 +37,8 @@ struct SPgCache {
}
pght
;
// page hash table
};
static
void
pgCachePinPage
(
SPage
*
pPage
);
int
pgCacheCreate
(
SPgCache
**
ppPgCache
,
pgsize_t
pgSize
,
int32_t
npage
)
{
SPgCache
*
pPgCache
;
SPage
*
pPage
;
...
...
@@ -123,13 +126,37 @@ int pgCacheClose(SPgCache *pPgCache) {
}
SPage
*
pgCacheFetch
(
SPgCache
*
pPgCache
,
pgid_t
pgid
)
{
SPage
*
pPage
;
SPage
*
pPage
;
SPgFile
*
pPgFile
;
SPgList
*
pBucket
;
// 1. Search the page hash table SPgCache.pght
pBucket
=
pPgCache
->
pght
.
buckets
+
((
0
/*TODO*/
)
%
pPgCache
->
pght
.
nbucket
);
pPage
=
TD_DLIST_HEAD
(
pBucket
);
while
(
pPage
&&
tdbCmprPgId
(
&
(
pPage
->
pgid
),
&
pgid
))
{
pPage
=
TD_DLIST_NODE_NEXT_WITH_FIELD
(
pPage
,
pghtNode
);
}
if
(
pPage
)
{
// Page is found, pin the page (TODO) and return the page
pgCachePinPage
(
pPage
);
return
pPage
;
}
// TODO
// 1. Check if the page is cached
return
NULL
;
}
int
pgCacheRelease
(
SPage
*
pPage
)
{
// TODO
return
0
;
}
static
void
pgCachePinPage
(
SPage
*
pPage
)
{
// TODO
}
static
void
pgCacheUnpinPage
(
SPage
*
pPage
)
{
// TODO
}
\ No newline at end of file
source/libs/tdb/src/inc/tdbInt.h
浏览文件 @
2f320dc2
...
...
@@ -38,8 +38,28 @@ typedef struct {
uint8_t
fileid
[
TDB_FILE_ID_LEN
];
pgno_t
pgno
;
}
pgid_t
;
#define TDB_IVLD_PGID (pgid_t){0, TDB_IVLD_PGNO};
static
FORCE_INLINE
int
tdbCmprPgId
(
const
void
*
p1
,
const
void
*
p2
)
{
pgid_t
*
pgid1
=
(
pgid_t
*
)
p1
;
pgid_t
*
pgid2
=
(
pgid_t
*
)
p2
;
int
rcode
;
rcode
=
memcmp
(
pgid1
->
fileid
,
pgid2
->
fileid
,
TDB_FILE_ID_LEN
);
if
(
rcode
)
{
return
rcode
;
}
else
{
if
(
pgid1
->
pgno
>
pgid2
->
pgno
)
{
return
1
;
}
else
if
(
pgid1
->
pgno
<
pgid2
->
pgno
)
{
return
-
1
;
}
else
{
return
0
;
}
}
}
// framd_id_t
typedef
int32_t
frame_id_t
;
...
...
@@ -51,14 +71,14 @@ typedef int32_t pgsize_t;
#define TDB_IS_PGSIZE_VLD(s) (((s) >= TDB_MIN_PGSIZE) && ((s) <= TDB_MAX_PGSIZE))
// cache
#define TDB_DEFAULT_CACHE_SIZE (256 * 1024) // 256K
#define TDB_DEFAULT_CACHE_SIZE (256 * 1024)
// 256K
// tdb_log
#define tdbError(var)
#include "btree.h"
#include "pgcache.h"
#include "pgfile.h"
#include "btree.h"
// tdb util
int
tdbGnrtFileID
(
const
char
*
fname
,
uint8_t
*
fileid
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录