当前位置: 首页 > news >正文

【PostgreSQL】从零开始:(四十二)系统列

PostgreSQL 中的系统列

PostgreSQL 中的系统列是一组特殊的列,用于存储关于表和视图的元数据信息。这些列是由 PostgreSQL 数据库自动创建和维护的,并且不能直接修改或删除。

每个表都有多个系统列,这些列由系统隐式定义。因此,这些名称不能用作用户定义列的名称。(请注意,这些限制与名称是否为关键字是分开的;引用名称将不允许您逃避这些限制。您实际上不需要担心这些列;只要知道它们的存在。

  • oid:每个表和视图都有一个唯一的对象标识符(OID),可以用于在系统表中引用它们。

  • tableoid:每个行都有一个指向所属表的 OID 的字段。它可以用于识别行属于哪个表,即使在多态关系中也是如此。

  • xmin 和 xmax:这些列用于记录行的事务信息。xmin 表示创建行的事务 ID,xmax 表示删除或更新行的事务 ID。

  • ctid:每个行都有一个唯一的行标识符(CTID),用于在物理存储中引用它们。

  • cmin 和 cmax:这些列用于记录行的修改信息。cmin 表示插入行的事务 ID,cmax 表示删除或更新行的事务 ID。

  • xmin、xmax、cmin 和 cmax 这四个列通常与 MVCC(多版本并发控制)相关联,用于跟踪行的状态和版本信息。

这些系统列可以在查询中使用,但在大多数情况下,它们对于普通用户来说并不重要。它们主要用于数据库的内部管理和优化。

交易标识符也是 32 位数量。在长期存在的数据库中,事务 ID 可以换行。考虑到适当的维护程序,这不是一个致命的问题。然而,从长远来看,依赖交易 ID 的唯一性(超过 10 亿笔交易)是不明智的。

命令标识符也是 32 位数量。这将创建硬限制 232(40亿)单个事务中的 SQL 命令。在实践中,此限制不是问题 - 请注意,限制是针对 SQL 命令的数量,而不是处理的行数。此外,只有实际修改数据库内容的命令才会使用命令标识符。

http://www.lryc.cn/news/274172.html

相关文章:

  • 快速、准确地检测和分类病毒序列分析工具 ViralCC的介绍和详细使用方法, 附带应用脚本
  • DNs服务学习笔记
  • 获取线程池中任务执行数量
  • RK3566 Android 11平台上适配YT8512C 100M PHY
  • docker 部署haproxy cpu占用特别高
  • Oracle导出CSV文件
  • 图像分割实战-系列教程12:deeplab系列算法概述
  • 数据库02-07 存储
  • WPF 入门教程DispatcherTimer计时器
  • 【教学类-43-04】20231229 N宫格数独4.0(n=2,4,6,8) (ChatGPT AI对话大师生成 回溯算法)
  • WPF美化ItemsControl1:不同颜色间隔
  • 查看进程对应的路径查看端口号对应的进程ubuntu 安装ssh共享WiFi设置MyBatis 使用map类型作为参数,复杂查询(导出数据)
  • 医院信息系统集成平台—安全保障体系
  • 【信息论与编码】习题-填空题
  • 二叉树的层序遍历经典问题(算法村第六关白银挑战)
  • 信息学奥赛一本通:装箱问题
  • ReactNative 常见问题及处理办法(加固混淆)
  • 算法基础之合并果子
  • CSS 使用技巧
  • typescript,eslint,prettier的引入
  • web前端javaScript笔记——(7)Math和Date方法
  • 深入理解Java中资源加载的方法及Spring的ResourceLoader应用
  • 实时记录和查看Apache 日志
  • Java实战项目五:文本冒险游戏
  • docker_ROS的usb_cam使用与标定
  • 记一次RabbitMQ服务器异常断电之后,服务重启异常的处理过程
  • rime中州韵小狼毫 help lua Translator 帮助消息翻译器
  • C++完成使用map Update数据 二进制数据
  • ARCGIS PRO SDK 访问Geometry对象
  • 数据结构之各大排序(C语言版)