Chinaunix首页 | 论坛 | 认证专区 | 博客 登录 | 注册
  • 博客访问: 494065
  • 博文数量: 168
  • 博客积分: 55
  • 博客等级: 民兵
  • 技术积分: 1972
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 10:11
个人简介

xxxxxxxxxxxxxxxxxx

文章分类

全部博文(168)

文章存档

2017年(7)

2016年(9)

2015年(37)

2014年(10)

2013年(103)

2012年(2)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
PostgreSQL中的隐藏系统列 2013-09-25 16:42:26

分类: Mysql/postgreSQL

PostgreSQL中的隐藏系统列



1.oid
oid是object identifier的简写,和Oracle中的object_id是一样的功能。
PostgreSQL中default_with_oids默认设置为false,即创建表时默认不创建oid隐藏列。可通过create table table_name ... with oids 来指定创建表时建立OID列。

2.tableoid
是表对象中每一行的唯一标识符,可以和pg_class中的oid关联起来查询。

3.xmin
是插入的事务标识符,是用来标识不同事务下的一个版本控制。每一次更新该行都会改变这个值。

4.xmax
暂不明白。网上找到的说明经测试都不对,或许是我理解的不对。郁闷中。

5.cmin
cmin可理解为一个事务里,执行了几次sql命令的顺序,从0开始。
这里的c表示command。

6.cmax
cmax和cmin就是一个东西(参考http://www.cnblogs.com/gaojian/p/3165178.html http://www.postgresql.org/message-id/CAL454F1o56ZkfmsMasjxJHcOw=mwgowBu33JSkKWh2d31ARAUg@mail.gmail.com http://www.postgresql.org/message-id/CAKoxK+6Z248ur31PFMv460OagMOaZBVLRkd7k4bDfmXuUdsE4Q@mail.gmail.com
http://abcdmyz.me/?p=252)
    对于每个数据版本都有xmin和xmax,记录的是创建和删除这个版本的事务ID。那么如果在一个事务里,对某个数据版本UPDATE很多次,那么这个数据版本的xmin和xmax都相等,怎么知道这些数据版本的先后顺序呢?不过对于这个问题,又涉及另一个问题,为什么要知道顺序?我只要知道最新的哪个数据版本就可以了,以前的反正都被DELETE或者UPDATE了。其实对于这个顺序的作用,目前,我唯一知道的就是CURSOR需要。

7.ctid
以(page_id, 行号)的形式记录标识每一条记录在数据表中的物理位置,和oracle的rowid有点类似,但不同的是,当表被vacuum full或该行被update时该值一般会发生改变。




阅读(1328) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册