韩国美容网站 模板,网至普的营销型网站建设,光谷做网站推广,提高图片网站访问速度Tuple含义
作用 PG并没有像Oracle那样的undo来存放旧数据#xff0c;而且PG没有真正意义上的delete#xff0c;而是将旧版本直接存放于relation文件中#xff0c;也就是成为了dead tuple。我们可以理解成“过期的数据”含义 tuple就相当于一个存储数据的小容器#xff0c;…Tuple含义
作用 PG并没有像Oracle那样的undo来存放旧数据而且PG没有真正意义上的delete而是将旧版本直接存放于relation文件中也就是成为了dead tuple。我们可以理解成“过期的数据”含义 tuple就相当于一个存储数据的小容器它包含了两个及以上的components。可能会与Oracle中的row类似但是这二者之间并不能划等号。结构 ----------------------------------------------------| HeapTupleHeaderData | nulls bitmap | padding |---------------------------------------------------| object ID | value1 value2 value3 ... |-----------------------------------------------------(1) HeapTupleHeaderData (2)nulls bitmap 这是个可选项当t_infomask有HEAP_HASNULL标志的话这个数组就会有值 (3) padding 前面null bitmap的长度不确定为了后面数据能对齐这里对HeapTupleHeaderDatanulls bitmap 字节对齐这里会有留空。 (4) OID值这是个可选项当t_infomask有HEAP_HASOID_OLD时会有此值 (5)用户数据就是各列的数据
Tuple的实践
主要函数为如下五个 step1. ExecInsert step2. ExecMaterializeSlot step3. ExecCopySlotTuple——拼装入口 step4. heap_form_tuple——根据values和isnull拼装tuple step5. heap_fill_tuple——根据desc把数据填到正确的位置
执行器会把tuple包装成tuple table slot来处理相当于给HeapTuple包装了一层TupleTableSlots
代码里会见到很多tts TupleTableSlots结构如下
typedef struct TupleTableSlot
{NodeTag type;bool tts_isempty; /* true slot is empty */bool tts_shouldFree; /* should pfree tts_tuple? */bool tts_shouldFreeMin; /* should pfree tts_mintuple? */bool tts_slow; /* saved state for slot_deform_tuple */HeapTuple tts_tuple; /* physical tuple, or NULL if virtual */TupleDesc tts_tupleDescriptor; /* slots tuple descriptor */MemoryContext tts_mcxt; /* slot itself is in this context */Buffer tts_buffer; /* tuples buffer, or InvalidBuffer */int tts_nvalid; /* # of valid values in tts_values */Datum *tts_values; /* current per-attribute values */bool *tts_isnull; /* current per-attribute isnull flags */MinimalTuple tts_mintuple; /* minimal tuple, or NULL if none */HeapTupleData tts_minhdr; /* workspace for minimal-tuple-only case */long tts_off; /* saved state for slot_deform_tuple */
} TupleTableSlot;于普通tuple来说ExecInsert的第一件事就是“物化”Tuple Slot 【slot】 ----组装---- 【materialized slot】