文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PostgreSQL源码学习(1)Page页

2015-11-20 17:23

关注

PostgreSQL源码学习(1)Page页

The Internals of PostgreSQL中对于存储的描述http://www.interdb.jp/pg/pgsql01.html#_1.2.

每个表或索引都作为一个page数组存储于物理数据文件中(page大小默认为8k,编译时可以指定),单个的表数据文件中包含多个page页(默认单个表文件最大1G,超过1G后会新建同名+“.1”后缀的数据文件,依次累加,同样在编译时可以指定单个文件的最大值)。page页的结构如下图所示。

page页的结构

而对于page页中存储的行数据Tuple,其结构为下图所示。 Heap Tuple结构

相关数据结构

// src/include/storage/bufpage.h

typedef struct PageHeaderData
{
	
	PageXLogRecPtr pd_lsn;		
	uint16		pd_checksum;	
	uint16		pd_flags;		
	LocationIndex pd_lower;		
	LocationIndex pd_upper;		
	LocationIndex pd_special;	
	uint16		pd_pagesize_version;
	TransactionId pd_prune_xid; 
	ItemIdData	pd_linp[FLEXIBLE_ARRAY_MEMBER]; 
} PageHeaderData;
// src/include/storage/itemid.h

typedef struct ItemIdData
{
	unsigned	lp_off:15,		
				lp_flags:2,		
				lp_len:15;		
} ItemIdData;


#define LP_UNUSED		0		
#define LP_NORMAL		1		
#define LP_REDIRECT		2		
#define LP_DEAD			3		
// src/include/access/htup_details.h

struct HeapTupleHeaderData
{
	union
	{
		HeapTupleFields t_heap;
		DatumTupleFields t_datum;
	}			t_choice;

	ItemPointerData t_ctid;		

	

#define FIELDNO_HEAPTUPLEHEADERDATA_INFOMASK2 2
	uint16		t_infomask2;	

#define FIELDNO_HEAPTUPLEHEADERDATA_INFOMASK 3
	uint16		t_infomask;		

#define FIELDNO_HEAPTUPLEHEADERDATA_HOFF 4
	uint8		t_hoff;			

	

#define FIELDNO_HEAPTUPLEHEADERDATA_BITS 5
	bits8		t_bits[FLEXIBLE_ARRAY_MEMBER];	

	
};
// src/include/access/htup.h

typedef struct HeapTupleData
{
	uint32		t_len;			
	ItemPointerData t_self;		
	Oid			t_tableOid;		
#define FIELDNO_HEAPTUPLEDATA_DATA 3
	HeapTupleHeader t_data;		
} HeapTupleData;
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯