其他分享
首页 > 其他分享> > Greenplum表里的8个隐含字段

Greenplum表里的8个隐含字段

作者:互联网

一、8个隐含字段

注意:这个字段只有在创建表的时候使用了WITH OIDS,或者是设置了配置参数default_with_oids时出现,
这个字段的类型是oid(和字段同名)。OID是32位的量,是在同一个集群内通用的计数器上赋值的。对于一个大型或者长时间使用的数据库,
这个计数器是有可能重叠的。因此,OID是唯一的是非常错误的想法.

       如下建表SQL在greenplum中不能通过:

create table "public"."t_spec_name"(
	"id" int PRIMARY KEY,
	"oid" int
)WITH OIDS;

        而下面的可通过:

create table "public"."t_spec_name"(
	"id" int PRIMARY KEY,
	"oid" int
);

注意,尽管ctid可以用于非常快速地定位行版本,但每次VACUUM FULL之后,一个行的ctid都会被更新或者移动。
因此ctid是不能作为长期的行标识符的。

二、示例:

      首先,创建一个含有2个字段的表:

create table "t_aaa"(
	"id" int PRIMARY KEY,
	"ival" int 
)WITH OIDS;

  然后,查询该表所含有的字段名:

SELECT c.relname,a.attname from pg_class c, pg_attribute a where c.oid=a.attrelid and c.relname='t_aaa';

  

      继续,插入一条数据后,查看该行数据所在的segement节点:

INSERT INTO "public"."t_aaa" ("id", "ival") VALUES ('1', '2')
SELECT *,gp_segment_id from t_aaa;

 

标签:事务,aaa,int,Greenplum,oid,表里,隐含,ctid,id
来源: https://www.cnblogs.com/inrgihc/p/14122797.html