日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

系統(tǒng)表

更新時(shí)間:

本文將會(huì)為您介紹Hologres中的系統(tǒng)表以及每個(gè)表如何使用。

概述

Hologres系統(tǒng)表的組成如下表所示。

表名

使用場(chǎng)景

hologres.hg_table_properties

查看當(dāng)前數(shù)據(jù)庫(kù)下Hologres所有表以及表屬性。

pg_catalog.pg_tables

查看表、視圖等關(guān)系的信息。

pg_catalog.pg_locks

查看表的鎖信息。

pg_catalog.pg_class

PostgreSQL原生元數(shù)據(jù)表,一般是結(jié)合其他PostgreSQL系統(tǒng)表一起使用,查看表關(guān)系等信息。

hologres_statistic.hg_table_statistic

Hologres的統(tǒng)計(jì)信息表,用于多節(jié)點(diǎn)共享統(tǒng)計(jì)信息存儲(chǔ)。

pg_catalog.pg_stats

PostgreSQL原生統(tǒng)計(jì)信息表,在單節(jié)點(diǎn)本地直接供planner使用。

pg_catalog.pg_roles

查看實(shí)例內(nèi)角色及其權(quán)限信息。

information_schema.role_table_grants

查看用戶角色被授予對(duì)象(表、視圖等)的權(quán)限信息。

使用限制

  • 表名稱以hg開(kāi)頭的是Hologres系統(tǒng)表,以pg開(kāi)頭的是PostgreSQL系統(tǒng)表,簡(jiǎn)稱PG系統(tǒng)表。PG系統(tǒng)表不能與業(yè)務(wù)創(chuàng)建的表進(jìn)行關(guān)聯(lián)查詢,也不能將PG系統(tǒng)表的數(shù)據(jù)導(dǎo)入至業(yè)務(wù)創(chuàng)建的表中。

    說(shuō)明

    Hologres 從V1.3.22版本開(kāi)始,支持PG系統(tǒng)表與業(yè)務(wù)創(chuàng)建的表進(jìn)行Join,以及將系統(tǒng)表數(shù)據(jù)導(dǎo)出到Hologres表,但需注意,如果存在Hologres不支持的數(shù)據(jù)類型,則無(wú)法導(dǎo)出到Hologres表,也無(wú)法與Hologres表進(jìn)行Join。如果有需求請(qǐng)您升級(jí)實(shí)例。

  • 在Hologres中,系統(tǒng)表中的OID字段表示表、索引、視圖等關(guān)系的唯一標(biāo)志符。但Postgres是單機(jī)系統(tǒng),Hologres是分布式系統(tǒng),有多個(gè)FE節(jié)點(diǎn),每個(gè)FE節(jié)點(diǎn)的OID序列通常不相同。所以當(dāng)查詢結(jié)果中有OID時(shí),可能會(huì)出現(xiàn)OID結(jié)果不一致的情況。

hologres.hg_table_properties

hologres.hg_table_properties用于存放當(dāng)前數(shù)據(jù)庫(kù)下的所有表和表屬性,包含如下字段。

字段

說(shuō)明

table_namespace

Schema名稱,Hologres會(huì)包含3個(gè)系統(tǒng)Schema:

  • hologres:用于Hologres的系統(tǒng)表。

  • hologres_statistic:用于存放統(tǒng)計(jì)信息表。

  • pg_catalog:用于PostgreSQL原生的元數(shù)據(jù)表。

table_name

表名稱,Hologres包含多個(gè)系統(tǒng)表,如下。

  • hologres.hg_insert_progress_stats:insert進(jìn)度信息。

  • hologres.hg_table_properties:表的索引、屬性信息。

  • hologres.hg_table_group_properties:Table Group元信息。

  • hologres_statistic.hg_table_statistic:存放統(tǒng)計(jì)信息。

  • pg_catalog.pg_stat_activity:Query運(yùn)行數(shù)據(jù)。

property_key

表屬性,包含如下屬性。

  • table_id:表的ID信息,后端會(huì)給每個(gè)表分配一個(gè)ID,方便身份識(shí)別。

  • clustering_index_id:Clustering索引的ID信息。

  • clustering_index_name:Clustering索引的名稱。

  • lifecycle_in_days:表的生存時(shí)間TTL,值為-1表示永久生效,目前Hologres不支持修改。

  • storage_format:表數(shù)據(jù)的存儲(chǔ)格式,行存表為sst,列存表從HologresV0.10版本開(kāi)始默認(rèn)為orc

  • table_group:表所在的Table Group名稱。

  • schema_version:表的版本信息。

  • primary_key:表的主鍵信息。

  • orientation:表的存儲(chǔ)模式,有以下三種模式。

    • row:行存。

    • column:列存。

    • row,column:行列混存(HologresV1.1版本開(kāi)始支持)。

  • distribution_key:設(shè)置的分布列信息。

  • dictionary_encoding_columns:設(shè)置的字典編碼列信息。

  • bitmap_columns:設(shè)置的Bitmap編碼列。

  • clustering_key:設(shè)置的Clustering key(聚簇索引)信息。

  • create_time:表的創(chuàng)建時(shí)間。

  • last_ddl_time:最后執(zhí)行DDL的時(shí)間。

  • storage_mode:表的分層存儲(chǔ)屬性。

    • hot:標(biāo)準(zhǔn)存儲(chǔ)

    • cold:低頻存儲(chǔ)

property_value

表屬性的值。

pg_catalog.pg_tables

pg_tables保存表的元信息,包含如下字段。

字段

描述

schemaname

表所在的Schema名稱,除了業(yè)務(wù)創(chuàng)建的Schema外,還包含系統(tǒng)Schema名稱如下。

  • hologres:保存Hologres的系統(tǒng)表。

  • pg_catalog:保存Postgres的元數(shù)據(jù)信息。

  • information_schema:保存當(dāng)前數(shù)據(jù)庫(kù)對(duì)象信息的視圖。

tablename

表名稱。

tableowner

表的Owner。

developer用戶組:開(kāi)啟了簡(jiǎn)單權(quán)限模型(SPM)或者基于Schema級(jí)別的簡(jiǎn)單權(quán)限模型(簡(jiǎn)稱SLPM)。

tablespace

Hologres無(wú)此概念,無(wú)需關(guān)注

hasindexes

如果表有(或最近有過(guò))任何一個(gè)索引,此列為true。

hasrules

如果表有(或曾經(jīng)有過(guò))規(guī)則,此列為true。

hastriggers

如果表有(或曾經(jīng)有過(guò))觸發(fā)器,此列為true。

rowsecurity

如果表上啟用了安全性規(guī)則,此列為true。在Hologres中無(wú)需關(guān)注。

pg_catalog.pg_locks

pg_locks記錄運(yùn)行時(shí)的鎖信息,常用于當(dāng)發(fā)現(xiàn)DDL卡住或者Query卡住時(shí),定位是否有鎖,其字段如下。

字段

說(shuō)明

locktype

鎖的類型,包含如下類型。

  • relation:表鎖。

  • extend、page、tuple、transactionid、virtualxid、object、userlock:Postgres原生鎖,在Hologres內(nèi)無(wú)需關(guān)注。

  • advisory:DDL鎖。

database

目標(biāo)所在的數(shù)據(jù)庫(kù)的對(duì)象標(biāo)識(shí)符(OID)。

relation

表的對(duì)象標(biāo)識(shí)符(OID),如果目標(biāo)不是表,也不是表的一部分,則為null。

page

在Hologres內(nèi)無(wú)需關(guān)注。

tuple

在Hologres內(nèi)無(wú)需關(guān)注。

virtualxid

事務(wù)的虛擬ID,如果目標(biāo)不是虛擬事務(wù)ID,就為null。

transactionid

事務(wù)的ID,如果目標(biāo)不是事務(wù)ID,就為null。

classid

包含該目標(biāo)的系統(tǒng)表的對(duì)象標(biāo)識(shí)符(OID),如果目標(biāo)不是普通數(shù)據(jù)庫(kù)對(duì)象,則為null。在Hologres內(nèi)無(wú)需關(guān)注。

objid

在Hologres內(nèi)無(wú)需關(guān)注。

objsubid

在Hologres內(nèi)無(wú)需關(guān)注。

virtualtransaction

持有或者等待此鎖的事務(wù)ID。在Hologres內(nèi)無(wú)需關(guān)注。

pid

持有或者等待這個(gè)鎖的服務(wù)器進(jìn)程的進(jìn)程 ID,可以通過(guò)pg_stat_activity這個(gè)表查看進(jìn)程信息。

mode

這個(gè)進(jìn)程的鎖模式,分為共享鎖和排他鎖等模式。

granted

  • 如果持有鎖,為true。

  • 如果等待鎖,為false。

fastpath

  • 如果鎖通過(guò)快速路徑獲得為true。

  • 如果通過(guò)主鎖表獲得為false。

在Hologres內(nèi)無(wú)需關(guān)注。

pg_catalog.pg_class

pg_class用于保存原生Postgres的所有系統(tǒng)信息,包含如下字段。

名字

說(shuō)明

oid

表、索引、視圖等關(guān)系的唯一標(biāo)志符。

說(shuō)明

Postgres是單機(jī)系統(tǒng),Hologres是分布式系統(tǒng),有多個(gè)FE節(jié)點(diǎn),每個(gè)FE節(jié)點(diǎn)的OID序列通常不相同。所以當(dāng)查詢結(jié)果中有OID時(shí),可能會(huì)出現(xiàn)OID結(jié)果不一致的情況。

relname

表、索引、視圖等關(guān)系的名稱。

relnamespace

包含這個(gè)關(guān)系的Schema的OID。

reltype

在Hologres內(nèi)無(wú)需關(guān)注。

reloftype

在Hologres內(nèi)無(wú)需關(guān)注。

relowner

關(guān)系的Owner。

relam

在Hologres內(nèi)無(wú)需關(guān)注。

relfilenode

在Hologres內(nèi)無(wú)需關(guān)注。

reltablespace

在Hologres內(nèi)無(wú)需關(guān)注。

relpages

在Hologres內(nèi)無(wú)需關(guān)注。

reltuples

表中行的數(shù)目。只是查詢規(guī)劃器使用的一個(gè)估計(jì)值,由VACUUM、ANALYZE和幾個(gè)DDL命令更新。在Hologres中用作統(tǒng)計(jì)信息的行數(shù)。

relallvisible

在表的可見(jiàn)映射中標(biāo)記所有可見(jiàn)的頁(yè)的數(shù)目。只是查詢規(guī)劃器使用的一個(gè)估計(jì)值, 由VACUUM、ANALYZE 和幾個(gè) DDL 命令更新。在Hologres中用作統(tǒng)計(jì)信息的版本

reltoastrelid

在Hologres內(nèi)無(wú)需關(guān)注。

relhasindex

如果它是一個(gè)表而且至少有(或者最近有過(guò))一個(gè)索引,則為true。

relisshared

如果該表在整個(gè)集群中由所有數(shù)據(jù)庫(kù)共享則為true。只有某些系統(tǒng)表(比如pg_database)是共享的,在Hologres內(nèi)無(wú)需關(guān)注。

relpersistence

有如下值。

  • p:permanent table(永久表)。

  • u:unlogged table(未加載的表)。

  • t: temporary table (臨時(shí)表)。

relkind

有如下值。

  • r:ordinary table(普通表)。

  • i: index(索引)。

  • S:sequence(序列)。

  • v:view(視圖)。

  • m: materialized view(物化視圖)。

  • c: composite type(復(fù)合類型)。

  • t: TOAST table(TOAST 表)。

  • f:foreign table(外部表)。

relnatts

表中列的數(shù)目(不包含系統(tǒng)字段)。

relchecks

表里的CHECK約束的數(shù)目,詳情請(qǐng)參見(jiàn)pg_constraint,在Hologres內(nèi)無(wú)需關(guān)注。

relhasoids

如果為關(guān)系中每行都生成一個(gè)OID則為true。在Hologres內(nèi)無(wú)需關(guān)注。

relhaspkey

如果這個(gè)表有一個(gè)(或者曾經(jīng)有一個(gè))主鍵,則為true。

relhasrules

如果這個(gè)表有(或曾經(jīng)有)規(guī)則就為true,詳情請(qǐng)參見(jiàn)pg_rewrite。在Hologres內(nèi)無(wú)需關(guān)注。

relhastriggers

如果表有(或者曾經(jīng)有)觸發(fā)器,則為true,詳情見(jiàn)pg_trigger。在Hologres內(nèi)無(wú)需關(guān)注。

relhassubclass

如果表有(或者曾經(jīng)有)任何繼承的子表,則為true。

relispopulated

在Hologres內(nèi)無(wú)需關(guān)注。

relreplident

在Hologres內(nèi)無(wú)需關(guān)注。

relfrozenxid

在Hologres內(nèi)無(wú)需關(guān)注。

relminmxid

在Hologres內(nèi)無(wú)需關(guān)注。

relacl

訪問(wèn)權(quán)限。詳情請(qǐng)參見(jiàn)GRANT、REVOKE。

reloptions

表的屬性,例如autovacuum_enabled=false代表關(guān)閉此表的autovacuum/autoanalyze功能。

hologres_statistic.hg_table_statistic

Hologres的統(tǒng)計(jì)信息表,其字段如下。

字段

說(shuō)明

unique_name

表的唯一標(biāo)志。

schema_version

表的版本號(hào)。

statistic_version

統(tǒng)計(jì)信息版本。

statistics

統(tǒng)計(jì)信息內(nèi)容,Base64編碼。

schema_name

表所在Schema名稱。

table_name

表名稱。

total_rows

總行數(shù)。

sample_rows

本統(tǒng)計(jì)信息的采樣行數(shù)。

nattr

表的字段個(gè)數(shù)。

used_attrs

Analyze用到的字段。

histogram_attrs

具備直方圖統(tǒng)計(jì)信息的字段。

ndv_attrs

具備distinct value統(tǒng)計(jì)信息的字段。

user_name

Analyze或者Auto Analyze的執(zhí)行者。

analyze_timestamp

Analyze或者Auto Analyze的執(zhí)行開(kāi)始時(shí)間。

analyze_cost

Analyze或者Auto Analyze的耗時(shí)。

analyze_count

Analyze或者Auto Analyze的次數(shù)。

pg_catalog.pg_stats

pg_stats用于保存Postgres原生的統(tǒng)計(jì)信息,字段如下。

字段

說(shuō)明

schemaname

Schema名稱。

tablename

表名稱。

attname

列名(字段名)。

inherited

如果為true,表示此行包括繼承子列。

null_frac

記錄中字段為空的百分比。

avg_width

列的平均字節(jié)寬度。

n_distinct

  • 大于零,表示列中distinct值的估計(jì)個(gè)數(shù)。

  • 小于零,是distinct值個(gè)數(shù)除以行數(shù)的負(fù)值(當(dāng)ANALYZE認(rèn)為distinct值的數(shù)量會(huì)隨著表增長(zhǎng)而增加時(shí)采用負(fù)值的形式,而如果認(rèn)為列具有固定數(shù)量的distinct值時(shí)采用正值的形式)。

例如,-1表示一個(gè)唯一列,即其中distinct值的個(gè)數(shù)等于行數(shù)。

most_common_vals

列中Most Common Values的一個(gè)列表(如果沒(méi)有任何一個(gè)值看起來(lái)比其他值更常用,此列為空)。

most_common_freqs

Most Common Values值的頻率列表,即每一個(gè)常用值的出現(xiàn)次數(shù)除以總行數(shù)(如果most_common_vals為空,則此列為空)。

histogram_bounds

將列值劃分成大小接近的組的值列表,即直方圖列表。如果存在most_common_vals,其中的值會(huì)被直方圖計(jì)算所忽略。

correlation

在Hologres內(nèi)無(wú)需關(guān)注。

most_common_elems

在列值中,Most Common Values出現(xiàn)的非空元素列表。

most_common_elem_freqs

Most Common Values值的頻度列表,即含有至少一個(gè)給定值實(shí)例的行的分?jǐn)?shù)。(如果most_common_elems為空,則此列為空)。

elem_count_histogram

在Hologres中無(wú)需關(guān)注。

pg_catalog.pg_roles

pg_roles用于存放實(shí)例內(nèi)角色及其權(quán)限信息,字段如下。

字段

說(shuō)明

rolname

角色名稱。

rolsuper

角色是否具有超級(jí)用戶權(quán)限,取值如下。

  • f:無(wú)超級(jí)用戶權(quán)限。

  • t:有超級(jí)用戶權(quán)限。

rolinherit

如果此角色是另一個(gè)角色的成員,角色是否能自動(dòng)繼承,取值如下。

  • f:不可以繼承另一個(gè)角色的權(quán)限。

  • t:可以繼承另一個(gè)角色的權(quán)限。

rolcreaterole

能否創(chuàng)建更多角色,取值如下。

  • f:不可以創(chuàng)建更多角色。

  • t:可以創(chuàng)建更多角色。

rolcreatedb

能否創(chuàng)建數(shù)據(jù)庫(kù),取值如下。

  • f:不可以創(chuàng)建數(shù)據(jù)庫(kù)。

  • t:可以創(chuàng)建數(shù)據(jù)庫(kù)。

rolcanlogin

角色是否能登錄實(shí)例,取值如下。

  • f:不可以登錄實(shí)例。

  • t:可以登錄實(shí)例。

rolreplication

在Hologres內(nèi)無(wú)需關(guān)注。

rolconnlimit

用戶的連接數(shù)限制,-1表示無(wú)限制。

rolpassword

在Hologres內(nèi)無(wú)需關(guān)注。

rolvaliduntil

在Hologres內(nèi)無(wú)需關(guān)注。

rolbypassrls

在Hologres內(nèi)無(wú)需關(guān)注。

rolconfig

在Hologres內(nèi)無(wú)需關(guān)注。

oid

角色的ID,唯一標(biāo)志符。

information_schema.role_table_grants

Hologres實(shí)例中用戶角色被授予對(duì)象(表、視圖等)的權(quán)限信息表,其字段如下。

字段

描述

grantor

授權(quán)方角色。

grantee

被授權(quán)方角色。

table_catalog

數(shù)據(jù)庫(kù)名稱。

table_schema

Schema名稱。

table_name

表名稱。

privilege_type

被授予權(quán)限的類型:

  • SELECT。

  • INSERT。

  • UPDATE。

  • DELETE。

  • TRUNCATE。

  • REFERENCES。

  • TRIGGER。

is_grantable

如果權(quán)限是可授予的,則此列值為YES,否則為NO。

with_hierarchy

權(quán)限類型為SELECT時(shí),此列值為YES,其他權(quán)限類型時(shí)值為NO

常用SQL

一些常見(jiàn)命令可以通過(guò)psql簡(jiǎn)寫(xiě)來(lái)實(shí)現(xiàn),詳情請(qǐng)參見(jiàn)psql。同時(shí)也可以根據(jù)業(yè)務(wù)情況選擇使用如下提供的常見(jiàn)SQL。

查看表對(duì)應(yīng)的Hologres索引和屬性信息

SELECT * FROM hologres.hg_table_properties where table_name = '<tablename>';

tablename為表名稱。

查看表/視圖DDL

select hg_dump_script('<tablename>'); -- 表DDL
select hg_dump_script('<viewname>');  -- 視圖DDL
說(shuō)明

如果執(zhí)行失敗,需要使用如下命令在DB中創(chuàng)建extension。

create extension hg_toolkit;

查看實(shí)例的Endpoint

除了在Hologres管理控制臺(tái)查看實(shí)例的Endpoint外,還可以通過(guò)以下命令查看實(shí)例的Endpoint。

show hg_frontend_endpoints;

查看當(dāng)前實(shí)例下的所有數(shù)據(jù)庫(kù)

SELECT
    d.datname AS "Name",
    pg_catalog.pg_get_userbyid(d.datdba) AS "Owner",
    pg_catalog.pg_encoding_to_char(d.encoding) AS "Encoding",
    d.datcollate AS "Collate",
    d.datctype AS "Ctype",
    pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM
    pg_catalog.pg_database d
WHERE
    d.datname != 'postgres'
    AND d.datname != 'template0'
    AND d.datname != 'template1'
ORDER BY
    1;

列出當(dāng)前數(shù)據(jù)庫(kù)下所有User Mapping

SELECT
    um.srvname AS "Server",
    um.usename AS "User name"
FROM
    pg_catalog.pg_user_mappings um
WHERE
    um.srvname != 'query_log_store_server'
ORDER BY
    1,
    2;

列出當(dāng)前數(shù)據(jù)庫(kù)下所有Schema

SELECT
    n.nspname AS "Name",
    pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"
FROM
    pg_catalog.pg_namespace n
WHERE
    n.nspname !~ '^pg_'
    AND n.nspname <> 'information_schema'
    AND n.nspname != 'hologres'
    AND n.nspname != 'hologres_sample'
    AND n.nspname != 'hologres_statistic'
    AND n.nspname !~ '^hg_'
    AND n.nspname !~ '^holo_'
ORDER BY
    1;

列出當(dāng)前數(shù)據(jù)庫(kù)下所有表、外表和視圖

SELECT
    n.nspname AS "Schema",
    c.relname AS "Name",
    CASE c.relkind
    WHEN 'r' THEN
        'table'
    WHEN 'v' THEN
        'view'
    WHEN 'm' THEN
        'materialized view'
    WHEN 'i' THEN
        'index'
    WHEN 'S' THEN
        'sequence'
    WHEN 's' THEN
        'special'
    WHEN 'f' THEN
        'foreign table'
    WHEN 'p' THEN
        'partitioned table'
    WHEN 'I' THEN
        'partitioned index'
    END AS "Type",
    pg_catalog.pg_get_userbyid(c.relowner) AS "Owner"
FROM
    pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE
    c.relkind IN ('r', 'p', 'v', 'm', 'S', 'f', '')
    AND n.nspname <> 'pg_catalog'
    AND n.nspname <> 'information_schema'
    AND n.nspname !~ '^pg_toast'
    AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY
    1,
    2;

查看當(dāng)前Schema下所有表以及表Owner(不包含系統(tǒng)表)

--查看當(dāng)前DB下所有表(包含系統(tǒng)表)
SELECT * FROM pg_tables


--查看當(dāng)前schema下所有表以及表owner(不包含系統(tǒng)表)
SELECT  n.nspname as "Schema"
        ,c.relname as "Name"
        ,CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type"
        ,pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM    pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n
ON      n.oid = c.relnamespace
WHERE   c.relkind IN ('r','p','v','m','S','f','')
and     n.nspname <> 'pg_catalog'
and     n.nspname <> 'information_schema'
and     n.nspname !~ '^pg_toast'
and     pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1, 2;
            

查看父表對(duì)應(yīng)的所有子表

-- 含分區(qū)鍵值
SELECT  c.oid::pg_catalog.regclass
        ,c.relkind
        ,pg_catalog.pg_get_expr(c.relpartbound, c.oid)
FROM    pg_catalog.pg_class c
        ,pg_catalog.pg_inherits i
WHERE   c.oid = i.inhrelid
AND     i.inhparent::pg_catalog.regclass = 'parent_table_name'::pg_catalog.regclass
ORDER BY pg_catalog.pg_get_expr(c.relpartbound, c.oid) = 'DEFAULT'
;



-- 不含分區(qū)鍵值
SELECT
    nmsp_parent.nspname AS parent_schema,
    parent.relname      AS parent,
    nmsp_child.nspname  AS child_schema,
    child.relname       AS child
FROM pg_inherits
    JOIN pg_class parent            ON pg_inherits.inhparent = parent.oid
    JOIN pg_class child             ON pg_inherits.inhrelid   = child.oid
    JOIN pg_namespace nmsp_parent   ON nmsp_parent.oid  = parent.relnamespace
    JOIN pg_namespace nmsp_child    ON nmsp_child.oid   = child.relnamespace
WHERE parent.relname='parent_table_name';

查看所有子表的創(chuàng)建時(shí)間和所屬父表

select
        cn.nspname as child_schema_name,c.relname as child_table_name,
        pn.nspname as parent_schema_name,p.relname as parent_table_name,
        to_timestamp(cp.property_value::bigint) as create_time
from pg_inherits i
left join pg_class p on p.oid=i.inhparent
left join pg_namespace pn on pn.oid = p.relnamespace
left join pg_class c on c.oid=i.inhrelid
left join pg_namespace cn on cn.oid = c.relnamespace
left join hologres.hg_table_properties cp on cp.property_key='create_time' and cp.table_namespace=pn.nspname and cp.table_name = c.relname;

查看所有外部表以及外部表對(duì)應(yīng)的MaxCompute表

SELECT  n.nspname
        ,c.relname
        ,s.srvname
        ,pg_catalog.array_to_string(
            ARRAY(
                SELECT pg_catalog.quote_ident(option_name) || ' ' || pg_catalog.quote_literal(option_value) FROM pg_catalog.pg_options_to_table(ftoptions)
            )
            ,', '
        )
FROM    pg_catalog.pg_foreign_table f
        ,pg_catalog.pg_foreign_server s
        ,pg_catalog.pg_class c
        ,pg_catalog.pg_namespace n
WHERE   s.oid = f.ftserver
and     c.oid = f.ftrelid
and     c.relnamespace = n.oid
and     n.nspname not in ('hologres', 'hologres_statistic', 'pg_catalog', 'pg_toast')
;
            

列出當(dāng)前數(shù)據(jù)庫(kù)下所有視圖

SELECT
    n.nspname AS "Schema",
    c.relname AS "Name",
    CASE c.relkind
    WHEN 'r' THEN
        'table'
    WHEN 'v' THEN
        'view'
    WHEN 'm' THEN
        'materialized view'
    WHEN 'i' THEN
        'index'
    WHEN 'S' THEN
        'sequence'
    WHEN 's' THEN
        'special'
    WHEN 'f' THEN
        'foreign table'
    WHEN 'p' THEN
        'partitioned table'
    WHEN 'I' THEN
        'partitioned index'
    END AS "Type",
    pg_catalog.pg_get_userbyid(c.relowner) AS "Owner"
FROM
    pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE
    c.relkind IN ('v', '')
    AND n.nspname <> 'pg_catalog'
    AND n.nspname <> 'information_schema'
    AND n.nspname !~ '^pg_toast'
    AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY
    1,
    2;

查看表被哪些view依賴

select * from information_schema.view_table_usage where table_name = '<table_name>';

查看表或者表字段的注釋

  • 查看指定表中字段的注釋:

    SELECT a.attname as Column,
      pg_catalog.format_type(a.atttypid, a.atttypmod) as "Type",
      a.attnotnull as "Nullable",
      pg_catalog.col_description(a.attrelid, a.attnum) as "Description"
    FROM pg_catalog.pg_attribute a
    WHERE a.attnum > 0 AND NOT a.attisdropped AND a.attrelid = '<schema.tablename>'::regclass::oid
    ORDER BY a.attnum;

    其中schema.tablename{Schema名稱}.{表名稱}

  • 查看表的注釋并且包含表的Owner等相關(guān)信息。

    SELECT n.nspname as "Schema",
      c.relname as "Name",
      CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'table' WHEN 'I' THEN 'index' END as "Type",
      pg_catalog.pg_get_userbyid(c.relowner) as "Owner",
      pg_catalog.pg_size_pretty(pg_catalog.pg_table_size(c.oid)) as "Size",
      pg_catalog.obj_description(c.oid, 'pg_class') as "Description"
    FROM pg_catalog.pg_class c
         LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relkind IN ('r','p','v','m','S','f','')
          AND n.nspname <> 'pg_catalog'
          AND n.nspname <> 'information_schema'
          AND n.nspname !~ '^pg_toast'
      AND pg_catalog.pg_table_is_visible(c.oid)
    ORDER BY 1,2;
    
    
    --返回結(jié)果示例
                            List of relations
     Schema | Name | Type  |      Owner       |  Size   | Description
    --------+------+-------+------------------+---------+-------------
     public | a    | table | 1365937xxxx | xxxx bytes | abcdef
    (1 row)
  • 只查看指定表的注釋信息:

    select pg_catalog.obj_description('<tablename>'::regclass::oid, 'pg_class') as "Description";
    
    --返回結(jié)果示例
    Description
    ------------
    abcdef

    其中tablename為指定表名稱。

列出當(dāng)前數(shù)據(jù)庫(kù)下所有用戶和角色

SELECT
    r.rolname,
    r.rolsuper,
    r.rolinherit,
    r.rolcreaterole,
    r.rolcreatedb,
    r.rolcanlogin,
    r.rolconnlimit,
    r.rolvaliduntil,
    ARRAY (
        SELECT
            b.rolname
        FROM
            pg_catalog.pg_auth_members m
            JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
        WHERE
            m.member = r.oid) AS memberof,
    r.rolreplication,
    r.rolbypassrls
FROM
    pg_catalog.pg_roles r
WHERE
    r.rolname !~ '^pg_'
ORDER BY
    1;

列出當(dāng)前數(shù)據(jù)庫(kù)下所有EXTENSIONS

SELECT
    e.extname AS "Name",
    e.extversion AS "Version",
    n.nspname AS "Schema",
    c.description AS "Description"
FROM
    pg_catalog.pg_extension e
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace
    LEFT JOIN pg_catalog.pg_description c ON c.objoid = e.oid
        AND c.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass
WHERE
    e.extname != 'hg_admin_cmd'
    AND e.extname != 'holo_dump_stat'
    AND e.extname != 'holo_funcs'
    AND e.extname != 'holo_link'
    AND e.extname != 'holo_system_admin'
    AND e.extname != 'holo_dump_stat'
    AND e.extname != 'query_log'
    AND e.extname != 'plpgsql'
ORDER BY
    1;

查看某個(gè)賬號(hào)的對(duì)應(yīng)權(quán)限

SELECT * FROM pg_roles where rolname='<uid>'

查看當(dāng)前實(shí)例下所有的用戶以及權(quán)限示例

SELECT  r.rolname
        ,r.rolsuper
        ,r.rolinherit
        ,r.rolcreaterole
        ,r.rolcreatedb
        ,r.rolcanlogin
        ,r.rolconnlimit
        ,r.rolvaliduntil
        ,ARRAY(
            SELECT b.rolname FROM pg_catalog.pg_auth_members m JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid) WHERE m.member = r.oid
        ) as memberof
        ,r.rolreplication
        ,r.rolbypassrls
FROM    pg_catalog.pg_roles r
WHERE   r.rolname !~ '^pg_'
ORDER BY 1;

查看一個(gè)用戶有權(quán)限的所有表

SELECT current_database()::information_schema.sql_identifier AS table_catalog,
    nc.nspname::information_schema.sql_identifier AS table_schema,
    c.relname::information_schema.sql_identifier AS table_name,
        CASE
            WHEN nc.oid = pg_my_temp_schema() THEN 'LOCAL TEMPORARY'::text
            WHEN c.relkind = ANY (ARRAY['r'::"char", 'p'::"char"]) THEN 'BASE TABLE'::text
            WHEN c.relkind = 'v'::"char" THEN 'VIEW'::text
            WHEN c.relkind = 'f'::"char" THEN 'FOREIGN'::text
            ELSE NULL::text
        END::information_schema.character_data AS table_type,
        CASE
            WHEN (c.relkind = ANY (ARRAY['r'::"char", 'p'::"char"])) OR (c.relkind = ANY 
(ARRAY['v'::"char", 'f'::"char"])) AND (pg_relation_is_updatable(c.oid::regclass, false) 
& 8) = 8 THEN 'YES'::text
            ELSE 'NO'::text
        END::information_schema.yes_or_no AS is_insertable_into,
        CASE
            WHEN t.typname IS NOT NULL THEN 'YES'::text
            ELSE 'NO'::text
        END::information_schema.yes_or_no AS is_typed,
    NULL::character varying::information_schema.character_data AS commit_action
   FROM pg_namespace nc
     JOIN pg_class c ON nc.oid = c.relnamespace
     LEFT JOIN (pg_type t
     JOIN pg_namespace nt ON t.typnamespace = nt.oid) ON c.reloftype = t.oid
  WHERE (c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'f'::"char", 'p'::"char"])) AND 
NOT pg_is_other_temp_schema(nc.oid) AND (pg_has_role('<USERID>', c.relowner, 'USAGE'::text)
 OR has_table_privilege('<USERID>', c.oid, 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER'::text)
 OR has_any_column_privilege('<USERID>', c.oid, 'SELECT, INSERT, UPDATE, REFERENCES'::text));

查看一張表有權(quán)限的所有用戶

select rolname from pg_roles where has_table_privilege(rolname, '<schemaname>.<tablename>',
 'SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER');