postgressql——Tuple学习(2)
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的长度不确定,为了后面数据能对齐,这里对HeapTupleHeaderData+nulls 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; /* slot's tuple descriptor */MemoryContext tts_mcxt; /* slot itself is in this context */Buffer tts_buffer; /* tuple's 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】

相关文章:
postgressql——Tuple学习(2)
Tuple含义 作用 PG并没有像Oracle那样的undo来存放旧数据,而且PG没有真正意义上的delete,而是将旧版本直接存放于relation文件中,也就是成为了dead tuple。我们可以理解成“过期的数据”含义 tuple就相当于一个存储数据的小容器,…...
Linux日志管理
文章目录 一、日志管理概述1.1、日志管理介绍1.2、日志管理的重要性1.3、日志管理的组件1.4、日志管理的流程1.5、日志管理的挑战 二、日志分类介绍2.1、windows日志类别2.1.1、Application Log2.1.2、Security Log2.1.3、System Log2.1.4、Setup Log2.1.5、ForwardedEvents Lo…...
【社区投稿】给 NdArray 装上 CUDA 的轮子
Ndarry是Rust编程语言中的一个高性能多维、多类型数组库。它提供了类似 numpy 的多种多维数组的算子。与 Python 相比 Rust 生态缺乏类似 CuPy, Jax 这样利用CUDA 进行加速的开源项目。虽然 Hugging Face 开源的 candle 可以使用 CUDA backend 但是 candle 项瞄准的是大模型的相…...
Linux|Linux常用命令合集(一)
想记录一下个人会用到的一些linux命令,持续更新中… chmod\chown 之前如果文件权限不足,直接就是 chmod 777 filename/dirname ,这并不是一个好习惯。 r(读权限):值为4w(写权限)&a…...
RTPS协议之Behavior Module
目录 交互要求基本要求RTPS Writer 行为RTPS Reader行为 RTPS协议的实现与Reader匹配的Writer的行为涉及到的类型RTPS Writer实现RTPS WriterRTPS StatelessWriterRTPS ReaderLocatorRTPS StatefulWriterRTPS ReaderProxyRTPS ChangeForReader RTPS StatelessWriter BehaviorBe…...
Socket网络通讯入门(一)
提示:能力有限,不足以及错误之处还请指出! 文章目录 前言一、 计算机网络 OSI、TCP/IP、五层协议 体系结构1.OSI七层模型每层的作用2.TCP/IP协议分成3.五层协议体系结构 二、Socket服务端和客户端 简单通信1.服务端代码2.客户端 总结 前言 简…...
第十五课,海龟画图:抬笔与落笔函数、画曲线函数
一,turtle.penup()和turtle.pendown():抬起与落下画笔函数 当使用上节课学习的这个turtle.forward():画笔前进函数时,画笔会朝着当前方向在画布上留下一条指定(像素)长度的直线,但你可能发现&a…...
【机器学习】让大模型变得更聪明
文章目录 前言1. 理解大模型的局限性1.1 理解力的挑战1.2 泛化能力的挑战1.3 适应性的挑战 2. 算法创新:提高模型学习和推理能力2.1 自监督学习2.2 强化学习2.3 联邦学习 3. 数据质量与多样性:增强模型的泛化能力3.1 高质量数据的获取3.2 数据多样性的重…...
5.26机器人基础-DH参数 正解
1.建立DH坐标系 1.确定Zi轴(关节轴) 2.确定基础坐标系 3.确定Xi方向(垂直于zi和zi1的平面) 4.完全确定各个坐标系 例子: 坐标系的布局是由个人决定的,可以有不同的选择 标准坐标系布局: …...
Vue3项目练习详细步骤(第五部分:用户模块的功能)
顶部导航栏个人信息显示 接口文档 接口请求与绑定 导航栏下拉菜单功能 路由实现 退出登录和路由跳转实现 基本资料修改 页面结构 接口文档 接口请求与绑定 修改头像 页面结构 头像回显 头像上传 接口文档 重置密码 页面结构 接口文档 接口请求与绑定 顶部导航…...
测试onlyoffice在线预览文件功能
HTML示例代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><title>测试onlyoffice在线预览文件功能</title><script type"text/javascript" src"http://onlyoffice服务器ip:端口/…...
Day57 每日温度 + 下一个更大元素Ⅰ
739 每日温度 题目链接:739.每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,…...
nuxt3 api如何透传(不引第3方库)
背景: nuxt做为一个vue的服务端渲染框架,本身就具备服务端的功能,理论上可以完整做一个系统功能,包括对数据库等等操作,但更合理的做法是nuxt应该定位只做服务端渲染的事情,更偏向ui层面,而非数据curd,业务逻辑,权限等等偏向服务端的逻辑。本身基于vue的服务端渲染已…...
list常用接口模拟实现
文章目录 一、模拟list类的框架二、函数接口实现1、迭代器接口2、常用删除、插入接口3、常用其他的一些函数接口4、默认成员函数 一、模拟list类的框架 1、使用带哨兵的双向链表实现。 2、链表结点: // List的结点类 template<class T> struct ListNode {Li…...
前端工程化工具系列(三) —— Stylelint(v16.6.1):CSS/SCSS 代码质量工具
Stylelint 是 CSS/SCSS 代码的静态分析工具,用于检查代码中的错误和样式违规。 1. 环境要求 v16 以上的 Stylelint,支持 Node.js 的版本为 v18.12.0。 在命令行中输入以下内容来查看当前系统中 node 的版本。 node -vNode.js 推荐使用 v18.20.3 或者 …...
crossover mac好用吗 CrossOver Mac怎么下载 Mac用crossover损害电脑吗
CrossOver 是一款可以让Mac用户能够自由运行和游戏windows游戏软件的虚拟机类应用,虽然能够虚拟windows但是却并不是一款虚拟机,也不需要重启系统或者启动虚拟机,类似于一种能够让mac系统直接运行windows软件的插件。它以其出色的跨平台兼容性…...
PHP模块pdo_sqlite.so: undefined symbol: sqlite3_column_table_name
安装 php-sqlite3 之后,执行php -m 命令有警告,如下 PHP Warning: PHP Startup: Unable to load dynamic library pdo_sqlite (tried: /usr/lib64/php/modules/pdo_sqlite (/usr/lib64/php/modules/pdo_sqlite: cannot open shared object file: No su…...
卷积神经网络-奥特曼识别
数据集 四种奥特曼图片_数据集-飞桨AI Studio星河社区 (baidu.com) 中间的隐藏层 已经使用参数的空间 Conv2D卷积层 ReLU激活层 MaxPool2D最大池化层 AdaptiveAvgPool2D自适应的平均池化 Linear全链接层 Dropout放置过拟合,随机丢弃神经元 -----------------…...
VB.net进行CAD二次开发(四)
netload不能弹出对话框,参考文献2 参考文献1说明了自定义菜单的问题,用的是cad的系统命令 只要加载了dll,自定义的命令与cad的命令同等地位。 这时,可以将自定义菜单的系统命令替换为自定义命令。 <CommandMethod("Add…...
3步轻松月入过万,APP广告新模式大揭秘!
万万没想到:用这个APP广告模式,月入过万竟然如此简单! 在移动应用开发的世界里,变现一直是一道难题。 许多APP开发者和产品经理为了提高收益、增强用户黏性,不断尝试各种策略。 然而,很多时候,…...
OpCore Simplify:开源工具驱动的OpenCore EFI高效配置技术方案
OpCore Simplify:开源工具驱动的OpenCore EFI高效配置技术方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 问题引入:Hacki…...
捉妖雷达Web版:如何解决游戏数据实时同步的技术挑战?
捉妖雷达Web版:如何解决游戏数据实时同步的技术挑战? 【免费下载链接】zhuoyao_radar 捉妖雷达 web版 项目地址: https://gitcode.com/gh_mirrors/zh/zhuoyao_radar 捉妖雷达Web版是一个开源的游戏辅助工具项目,旨在为捉妖游戏玩家提供…...
CTF新手必看:攻防世界幂数加密题解(附Python脚本)
CTF密码学实战:从零破解幂数加密的完整指南 第一次接触CTF密码学题目时,看到那串神秘数字"8842101220480224404014224202480122",我的大脑就像被加密了一样完全空白。直到理解了幂数加密的精髓,才发现这不过是字母游戏…...
Ollama一键部署translategemma-27b-it:图文翻译模型在国产统信UOS验证通过
Ollama一键部署translategemma-27b-it:图文翻译模型在国产统信UOS验证通过 1. 开篇:当翻译遇上图文对话 想象一下,你拿到一份产品说明书,上面有中文文字和复杂的图表。你需要把它翻译成英文,但传统的翻译工具只能处理…...
少样本学习实战指南:从数据增强到多模态融合的5个关键技巧
少样本学习实战指南:从数据增强到多模态融合的5个关键技巧 在工业质检和医疗影像等实际场景中,数据稀缺问题长期困扰着机器学习工程师。传统深度学习模型需要海量标注数据,而现实情况往往是每个类别仅有几个样本可用。这种少样本学习…...
动漫IP商业化新路径:AnythingtoRealCharacters2511助力二次元角色真人化营销落地
动漫IP商业化新路径:AnythingtoRealCharacters2511助力二次元角色真人化营销落地 1. 动漫角色真人化的商业价值 动漫IP的商业化一直是内容产业的重要课题。传统的周边商品、联名合作虽然有效,但缺乏突破性创新。随着AI技术的发展,动漫角色真…...
计算机网络知识应用:保障分布式StructBERT微服务集群通信
计算机网络知识应用:保障分布式StructBERT微服务集群通信 最近在搞一个基于StructBERT模型的智能问答系统,随着用户量上来,单台服务器明显扛不住了,响应慢不说,还动不动就挂掉。没办法,只能上微服务集群&a…...
破解Swin Transformer部署困境:从环境适配到性能突围的全维度方案
破解Swin Transformer部署困境:从环境适配到性能突围的全维度方案 【免费下载链接】Swin-Transformer This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows". 项目地址: https://gitcod…...
MogFace-large项目GitHub Actions CI/CD流水线构建教程
MogFace-large项目GitHub Actions CI/CD流水线构建教程 最近在折腾一个基于MogFace-large的人脸检测项目,每次手动测试、打包、部署,流程繁琐不说,还容易出错。团队协作时,代码合并后谁去跑测试、谁去更新镜像,也是个…...
RStudio Server部署与运维实战:从零搭建到高效管理
1. 环境准备:搭建RStudio Server的基石 在开始部署RStudio Server之前,我们需要确保服务器环境已经准备就绪。就像盖房子需要打地基一样,这一步决定了后续所有工作的稳定性。我遇到过不少因为环境问题导致的安装失败案例,大多数都…...
