1. 程式人生 > >postgresql 系統表

postgresql 系統表

 

 表 pg_class 

該系統表記錄了資料表、索引(仍然需要參閱pg_index)、序列、檢視、複合型別和一些特殊關係型別的元資料。

名字 型別 引用 描述
relname name   資料型別名字。
relnamespace oid pg_namespace.oid 包含這個物件的名字空間(模式)的OI。
reltype oid pg_type.oid 對應這個表的行型別的資料型別。
relowner oid pg_authid.oid 物件的所有者。
relam oid pg_am.oid 對於索引物件,表示該索引的型別(B-tree,hash)。
relfilenode oid   物件儲存在磁碟上的檔名,如果沒有則為0。
reltablespace oid pg_tablespace.oid 物件所在的表空間。如果為零,則表示使用該資料庫的預設表空間。(如果物件在磁碟上沒有檔案,這個欄位就沒有什麼意義)
relpages int4   該資料表或索引所佔用的磁碟頁面數量,查詢規劃器會藉助該值選擇最優路徑。
reltuples float4   表中行的數量,該值只是被規劃器使用的一個估計值。
reltoastrelid oid pg_class.oid 與此表關聯的TOAST表的OID,如果沒有為0。TOAST表在一個從屬表裡"離線"儲存大欄位。
reltoastidxid oid pg_class.oid 如果是TOAST表,該欄位為它索引的OID,如果不是TOAST表則為0。
relhasindex bool    如果這是一個數據表而且至少有(或者最近有過)一個索引,則為真。它是由CREATE INDEX設定的,但DROP INDEX不會立即將它清除。如果VACUUM發現一個表沒有索引,那麼它清理 relhasindex。
relisshared bool    如果該表在整個叢集中由所有資料庫共享,則為真。 
relkind char   r = 普通表,i = 索引,S = 序列,v = 檢視, c = 複合型別,s = 特殊,t = TOAST表
relnatts int2   資料表中使用者欄位的數量(除了系統欄位以外,如oid)。在pg_attribute裡肯定有相同數目的資料行。見pg_attribute.attnum.
relchecks int2   表中檢查約束的數量,參閱pg_constraint表。
reltriggers int2   表中觸發器的數量;參閱pg_trigger表。
relhasoids bool   如果我們為物件中的每行都生成一個OID,則為真。
relhaspkey bool   如果該表存在主鍵,則為真。
relhasrules  bool   如表有規則就為真;參閱pg_rewrite表。
relhassubclass bool    如果該表有子表,則為真。
relacl aclitem[]   訪問許可權。

 

表 pg_attribute 

   該系統表儲存所有表(包括系統表,如pg_class)的欄位資訊。資料庫中的每個表的每個欄位在pg_attribute表中都有一行記錄。

名字 型別 引用 描述
attrelid oid pg_class.oid 此欄位所屬的表。
attname name   欄位名。
atttypid oid pg_type.oid 欄位的資料型別。
attstattarget int4   attstattarget控制ANALYZE為這個欄位設定的統計細節的級別。零值表示不收集統計資訊,負數表示使用系統預設的統計物件。正數值的確切資訊是和資料型別相關的。
attlen int2   該欄位所屬型別的長度。(pg_type.typlen的拷貝)
attnum int2   欄位的編號,普通欄位是從1開始計數的。系統欄位,如oid,是任意的負數。
attndims int4   如果該欄位是陣列,該值表示陣列的維數,否則是0。
attcacheoff int4   在磁碟上總是-1,但是如果裝載入記憶體中的行描述器中, 它可能會被更新為緩衝在行中欄位的偏移量。
atttypmod int4   表示資料表在建立時提供的型別相關的資料(比如,varchar欄位的最大長度)。其值對那些不需要atttypmod的型別而言通常為-1。
attbyval bool   pg_type.typbyval欄位值的拷貝。
attstorage char   pg_type.typstorage欄位值的拷貝。
attalign char   pg_type.typalign欄位值的拷貝。
attnotnull bool   如果該欄位帶有非空約束,則為真,否則為假。
atthasdef bool   該欄位是否存在預設值,此時它對應pg_attrdef表裡實際定義此值的記錄。
attisdropped bool   該欄位是否已經被刪除。如果被刪除,該欄位在物理上仍然存在表中,但會被分析器忽略,因此不能再通過SQL訪問。
attislocal bool   該欄位是否區域性定義在物件中的。
attinhcount int4   該欄位所擁有的直接祖先的個數。如果一個欄位的祖先個數非零,那麼它就不能被刪除或重新命名。

表 pg_attrdef 

 該系統表主要儲存欄位預設值,欄位中的主要資訊存放在pg_attribute系統表中。

名字 型別 引用 描述
adrelid oid pg_class.oid 這個欄位所屬的表
adnum int2 pg_attribute.attnum 欄位編號,其規則等同於pg_attribute.attnum
adbin text   欄位預設值的內部表現形式。
adsrc text   預設值的人可讀的表現形式。

表 pg_authid

該系統表儲存有關資料庫認證的角色資訊,在PostgreSQL中角色可以表現為使用者和組兩種形式。對於使用者而言只是設定了rolcanlogin標誌的角色。由於該表包含口令資料,所以它不是公共可讀的。PostgreSQL中提供了另外一個建立在該表之上的系統檢視pg_roles,該檢視將口令欄位填成空白。

名字 型別 引用 描述
rolname name   角色名稱。
rolsuper bool   角色是否擁有超級使用者許可權。
rolcreaterole bool   角色是否可以建立其它角色。
rolcreatedb bool   角色是否可以建立資料庫。
rolcatupdate bool   角色是否可以直接更新系統表(如果該設定為假,即使超級使用者也不能更新系統表)。
rolcanlogin bool   角色是否可以登入,換句話說,這個角色是否可以給予會話認證識別符號。
rolpassword text   口令(可能是加密的);如果沒有則為NULL。
rolvaliduntil timestamptz   口令失效時間(只用於口令認證);如果沒有失效期,則為NULL。
rolconfig text[]   執行時配置變數的會話預設。

表 pg_auth_members 

該系統表儲存角色之間的成員關係。 

 

名字 型別 引用 描述
roleid oid pg_authid.oid 組角色的ID。
member oid pg_authid.oid 屬於組角色roleid的成員角色的ID。
grantor oid pg_authid.oid 賦予此成員關係的角色的ID。
admin_option bool   如果具有把其它成員角色加入組角色的許可權,則為真。

 

表 pg_constraint 

該系統表儲存PostgreSQL中表物件的檢查約束、主鍵、唯一約束和外來鍵約束。

名字 型別 引用 描述
conname name   約束名字(不一定是唯一的)。
connamespace oid pg_namespace.oid 包含這個約束的名字空間(模式)的OID。
contype char   c = 檢查約束, f = 外來鍵約束, p = 主鍵約束, u = 唯一約束
condeferrable bool   該約束是否可以推遲。
condeferred bool   預設時這個約束是否是推遲的?
conrelid oid pg_class.oid 該約束所在的表,如果不是表約束則為0。
contypid oid pg_type.oid 該約束所在的域,如果不是域約束則為0。
confrelid oid pg_class.oid 如果為外來鍵,則指向參照的表,否則為0。
confupdtype char   外來鍵更新動作程式碼。
confdeltype char   外來鍵刪除動作程式碼。
confmatchtype char   外來鍵匹配型別。
conkey int2[] pg_attribute.attnum 如果是表約束,則是約束控制的欄位列表。
confkey int2[] pg_attribute.attnum 如果是外來鍵,則是參照欄位的列表。
conbin text   如果是檢查約束,則表示表示式的內部形式。
consrc text   如果是檢查約束,則是表示式的人可讀的形式。

 

表 pg_tablespace 

該系統表儲存表空間的資訊。注意:表可以放在特定的表空間裡,以幫助管理磁碟佈局和解決IO瓶頸。

名字 型別 引用 描述
spcname name   表空間名稱。
spcowner oid pg_authid.oid 表空間的所有者,通常是建立它的角色。
spclocation text   表空間的位置(目錄路徑)。
spcacl aclitem[]   訪問許可權。

  

表 pg_namespace 

    該系統表儲存名字空間(模式)。

 

名字 型別 引用 描述
nspname name   名字空間(模式)的名稱。
nspowner oid pg_authid.oid 名字空間(模式)的所有者
nspacl aclitem[]   訪問許可權。