华为云用户手册

  • gs_bm25_distance_text 功能说明:返回bm25文档相似分数,只在使用BM25索引检索时有效。 入参类型:text, text 出参类型:double precision 代码示例: -- 建表及BM25索引 gaussdb=# CREATE TABLE t1(_id TEXT UNIQUE, title TEXT, texts TEXT, metadata TEXT) WITH (storage_type=astore); gaussdb=# CREATE INDEX "bm25_idx1" ON "t1" USING bm25 ("texts"); -- 执行检索 gaussdb=# SELECT /*+ indexscan(t1, bm25_idx1) */ _id, gs_bm25_distance_text(texts, 'drop table t1;') AS SCORE FROM t1 ORDER BY texts ### 'drop table t1;' desc LIMIT 10;
  • gs_bm25_distance_textarr 功能说明:返回bm25文档相似分数,只在使用BM25索引检索时有效。 入参类型:text[], text[] 出参类型:double precision 代码示例: -- 建表及BM25索引 gaussdb=# CREATE TABLE st_information (st_id SERIAL PRIMARY KEY, st_name TEXT[], st_email TEXT[]); gaussdb=# CREATE INDEX st_information_st_email_bm25_index ON st_information USING bm25(st_email); -- 执行检索 gaussdb=# SELECT /*+ indexscan(st_information, st_information_st_email_bm25_index) */ *, gs_bm25_distance_textarr(st_email, '{common-domain@xyz.com}') AS score FROM st_information ORDER BY st_email ### '{common-domain@xyz.com}' desc LIMIT 10;
  • PG_USER_STATUS PG_USER_STATUS系统表存储访问数据库用户的状态信息。需要有系统管理员权限才可以访问此系统表。 表1 PG_USER_STATUS字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 roloid oid 角色的标识。 failcount integer 尝试失败次数。 locktime timestamp with time zone 默认显示角色的创建日期,如果角色被管理员锁定,或者登录失败次数超过阈值被锁定,则显示角色被锁定的日期。 rolstatus smallint 角色的状态。 0:正常状态。 1:由于登录失败次数超过阈值被锁定了一定的时间。 2:被管理员锁定。 3:登录失败次数超过阈值,但不锁定账户。 permspace bigint 角色已经使用的永久表存储空间大小。 tempspace bigint 角色已经使用的临时表存储空间大小。 passwordexpired smallint 密码是否失效。 0:密码有效。 1:密码失效。 父主题: 用户和权限管理
  • PG_EXTENSION PG_EXTENSION系统表存储关于所安装扩展的信息。 GaussDB 默认扩展是plpgsql、DIST_FDW、FILE_FDW、 LOG _FDW、DBLINK_FDW、PACKAGES、SECURITY_PLUGIN、GSSTAT_PLUGIN、NUMERIC_ENHANCE、PKG_DBE_RAW、PKG_DBE_OUTPUT、PKG_DBE_UTILITY、PKG_ILM、PKG_DBE_XMLGEN、PKG_DBE_STATS、PKG_DBE_XML、PKG_DBE_DESCRIBE和PKG_PL_PROFILER。该系统表为内部使用,不建议用户使用。 表1 PG_EXTENSION 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 extname name 扩展名。 extowner oid 扩展的所有者。 extnamespace oid 扩展导出对象的名称空间。 extrelocatable boolean 标识此扩展是否可迁移到其他名称空间,true表示允许。 extversion text 扩展的版本号。 extconfig oid[] 扩展的配置信息。 extcondition text[] 扩展配置信息的过滤条件。 父主题: 其他系统表
  • 查看和停止正在运行的查询语句 通过视图PG_STAT_ACTIVITY可以查看正在运行的查询语句。方法如下: 设置参数track_activities为on。 1 SET track_activities = on; 当此参数为on时,数据库系统才会获取当前活动查询的运行信息。 查看正在运行的查询语句。以查看正在运行的查询语句所连接的数据库名、执行查询的用户、查询状态及查询对应的PID为例: 1 SELECT datname, usename, state,pid FROM pg_stat_activity; 1 2 3 4 5 6 7 8 datname | usename | state | pid ----------+---------+--------+----------------- testdb | Ruby | active | 140298793514752 testdb | Ruby | active | 140298718004992 testdb | Ruby | idle | 140298650908416 testdb | Ruby | idle | 140298625742592 testdb | omm | active | 140298575406848 (5 rows) 如果state字段显示为idle,则表明此连接处于空闲,等待用户输入命令。 如果仅需要查看非空闲的查询语句,则执行如下命令查看: 1 SELECT datname, usename, state, pid FROM pg_stat_activity WHERE state != 'idle'; 若需要取消运行时间过长的查询,通过pg_terminate_backend(pid...函数,根据线程ID(即2中查询结果的pid字段)结束会话。 1 SELECT PG_TERMINATE_BACKEND(140298793514752); 显示类似如下信息,表示结束会话成功。 1 2 3 4 PG_TERMINATE_BACKEND ---------------------- t (1 row) 显示类似如下信息,表示用户执行了结束当前会话的操作。 1 2 FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command gsql客户端使用pg_terminate_backend(pid...函数结束当前正在执行会话的后台线程时,如果当前的用户是初始用户,客户端不会退出而是自动重连,即还会返回“The connection to the server was lost. Attempting reset: Succeeded.”;否则客户端会重连失败,即返回。“The connection to the server was lost. Attempting reset: Failed.”。这是因为只有初始用户可以免密登录,普通用户不能免密登录,从而重连失败。 对于使用pg_terminate_backend(pid...函数结束非活跃的后台线程时,如果打开了线程池,此时空闲的会话没有线程ID,无法结束会话。非线程池模式下,结束的会话不会自动重连。
  • 查看数据库用户 通过GS_USER可以查看数据库中所有用户的列表,还可以查看用户ID(USESYSID)和用户权限。 1 2 3 4 5 6 7 8 SELECT * FROM gs_user; usename | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valbegin | valuntil | respool | parent | spacelimit | useconfig | nodegroup | tempspacelimit | spillsp acelimit | usemonitoradmin | useoperatoradmin | usepolicyadmin ---------+----------+-------------+----------+-----------+---------+----------+----------+----------+--------------+--------+------------+-----------+-----------+----------------+-------- ---------+-----------------+------------------+---------------- omm | 10 | t | t | t | t | ******** | | | default_pool | 0 | | | | | | t | t | t (1 row)
  • 查看数据库中包含的表 在public Schema下新建五张表: gaussdb=# CREATE TABLE public.search_table_t1(a int) distribute by hash(a); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t2(b int) distribute by hash(b); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t3(c int) distribute by hash(c); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t4(d int) distribute by hash(d); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t5(e int) distribute by hash(e); CREATE TABLE 在PG_TABLES系统表中查看public Schema中包含的前缀为search_table的表: 1 gaussdb=# SELECT distinct(tablename) FROM pg_tables WHERE SCHEMANAME = 'public' AND TABLENAME LIKE 'search_table%'; 结果如下: 1 2 3 4 5 6 7 8 tablename ----------------- search_table_t1 search_table_t2 search_table_t3 search_table_t4 search_table_t5 (5 rows)
  • ADM_AUDIT_TRAIL ADM_AUDIT_TRAIL显示所有标准审计跟踪条目,GaussDB审计信息主要通过gs_query_audit函数查询,该视图同时存在于PG_CATALOG和SYS schema下。仅拥有AUDITADMIN属性及ADM_AUDIT_TRAIL的SELECT权限的用户才可以查看审计信息。三权分立未开启时,拥有SYSADMIN属性的用户也可以查看审计信息。 在分布式下,gs_query_audit函数只能查询当前节点的审计信息。 表1 ADM_AUDIT_TRAIL字段 名称 类型 描述 os_username character varying(255) 暂不支持,值为NULL。 username character varying(128) 操作被审计的用户的名称,不是用户id。 userhost character varying(128) 暂不支持,值为NULL。 terminal character varying(255) 暂不支持,值为NULL。 timestamp date 在本地数据库会话时区中创建审计跟踪条目的日期和时间(由审计会话创建的条目的用户登录日期和时间)。 owner character varying(128) 受操作影响的对象的创建者。 obj_name character varying(128) 受操作影响的对象的名称。 action numeric 暂不支持,值为NULL。 action_name character varying(28) action列中的数字代码对应的action类型名称。 说明: GaussDB的action_name字段与ORA数据库审计动作不一致。 new_owner character varying(128) 暂不支持,值为NULL。 new_name character varying(128) 暂不支持,值为NULL。 obj_privilege character varying(32) 暂不支持,值为NULL。 sys_privilege character varying(40) 暂不支持,值为NULL。 admin_option character varying(1) 暂不支持,值为NULL。 grantee character varying(128) 暂不支持,值为NULL。 audit_option character varying(40) 暂不支持,值为NULL。 ses_actions character varying(19) 暂不支持,值为NULL。 logoff_time date 暂不支持,值为NULL。 logoff_lread numeric 暂不支持,值为NULL。 logoff_pread numeric 暂不支持,值为NULL。 logoff_lwrite numeric 暂不支持,值为NULL。 logoff_dlock character varying(40) 暂不支持,值为NULL。 comment_text character varying(4000) 暂不支持,值为NULL。 sessionid numeric 暂不支持,值为NULL。 entryid numeric 暂不支持,值为NULL。 statementid numeric 暂不支持,值为NULL。 returncode numeric 暂不支持,值为NULL。 priv_used character varying(40) 暂不支持,值为NULL。 client_id character varying(128) 暂不支持,值为NULL。 econtext_id character varying(64) 暂不支持,值为NULL。 session_cpu numeric 暂不支持,值为NULL extended_timestamp timestamp(6) with time zone 创建审计跟踪条目的时间戳(创建条目的用户登录时间戳UTC(协调通用)中的审计会话时间)时区。 proxy_sessionid numeric 暂不支持,值为NULL。 global_uid character varying(32) 暂不支持,值为NULL。 instance_number numeric 暂不支持,值为NULL。 os_process character varying(16) 暂不支持,值为NULL。 transactionid text 访问或修改对象事务的事务标识符。 说明: GaussDB的transactionid字段与ORA数据库中transactionid数据的类型保持一致。 scn numeric 暂不支持,值为NULL。 sql_bind nvarchar2(2000) 暂不支持,值为NULL。 sql_text nvarchar2 查询的SQL文本。 说明: GaussDB的sql_text字段为解析后sql描述语句,不完全与执行的sql语句相同。 obj_edition_name character varying(128) 暂不支持,值为NULL。 dbid numeric 暂不支持,值为NULL。 rls_info clob 暂不支持,值为NULL。 current_user character varying(128) 暂不支持,值为NULL。 父主题: 审计
  • STAT_BAD_BLOCK 获得当前节点表、索引等文件的读取失败信息,如表1所示。 表1 STAT_BAD_BLOCK字段 名称 类型 描述 nodename text 节点名称。 databaseid integer database的oid。 tablespaceid integer tablespace的oid。 relfilenode integer relation的file node。 bucketid smallint 一致性hash bucket ID。 forknum integer fork编号。 error_count integer error的数量。 first_time timestamp with time zone 页面损坏第一次出现的时间。 last_time timestamp with time zone 页面损坏最后出现的时间。 父主题: Object
  • 参数说明 参数 参数说明 ctx 表示给定的上下文。 query 被执行的SQL语句。 args 被执行SQL语句需要绑定的参数。支持按位置绑定和按名称绑定,详情见DB类型中的示例。 stmt 已有的预处理语句,一般指prepare语句返回的预处理语句。 Query类接口Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句,如SELECT语句。操作语句使用Exec()接口执行,若非查询语句通过Query类接口执行,则执行结果可能与预期不符,因此不建议使用Query类接口执行非查询语句,例如UPDATE/INSERT等。 使用Query类接口执行查询语句的结果需要通过type Rows中Next()接口获取,若不通过Next()接口获取,可能会产生不可预期的错误。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 gaussdb=# BEGIN FOR ROW_TRANS IN SELECT first_name FROM hr.staffs LOOP DBE_OUTPUT.PRINT_LINE (ROW_TRANS.first_name ); END LOOP; END; / --执行结果 gaussdb=# Tom ANONYMOUS BLOCK EXECUTE --创建表 gaussdb=# CREATE TABLE integerTable1( A INTEGER) DISTRIBUTE BY hash(A); gaussdb=# CREATE TABLE integerTable2( B INTEGER) DISTRIBUTE BY hash(B); gaussdb=# INSERT INTO integerTable2 VALUES(2); --多游标共享游标属性的标量 gaussdb=# DECLARE CURSOR C1 IS SELECT A FROM integerTable1;--声明游标 CURSOR C2 IS SELECT B FROM integerTable2; PI_A INTEGER; PI_B INTEGER; BEGIN OPEN C1;--打开游标 OPEN C2; FETCH C1 INTO PI_A; ---- C1%FOUND 和 C2%FOUND 值为 FALSE FETCH C2 INTO PI_B; ---- C1%FOUND 和 C2%FOUND 的值都为 TRUE --判断游标状态 IF C1%FOUND THEN IF C2%FOUND THEN DBE_OUTPUT.PRINT_LINE('Dual cursor share parameter.'); END IF; END IF; CLOSE C1;--关闭游标 CLOSE C2; END; / ANONYMOUS BLOCK EXECUTE --删除临时表 gaussdb=# DROP TABLE integerTable1; gaussdb=# DROP TABLE integerTable2;
  • GS_DATABASE_LINK GS_DATABASE_LINK系统表是用于存储DATABASE LINK信息的系统表,主要记录的是DATABASE LINK对象的详细信息。只有具备sysadmin权限的用户才可以对该系统表进行读操作。 表1 GS_DATABASE_LINK字段 名称 类型 描述 oid oid 当前DATABASE LINK对象的唯一id(隐含属性,必须明确选择)。 dlname name 当前DATABASE LINK的名称。 dlowner oid 当前DATABASE LINK的拥有者id,显示public则为0。 dlfdw oid 当前DATABASE LINK的外部数据封装器的OID。 dlcreater oid 当前DATABASE LINK创建者的id。 options text[] 当前DATABASE LINK连接信息,使用"keyword=value"。 useroptions text[] 当前DATABASE LINK连接远端所使用的用户信息,使用"keyword=value"。 dlacl aclitem[] 当前DATABASE LINK访问权限。 父主题: DATABASE LINK
  • PG_FOREIGN_SERVER PG_FOREIGN_SERVER系统表存储外部服务器定义。一个外部服务器描述了一个外部数据源,例如一个远程服务器。外部服务器通过外部数据封装器访问。 表1 PG_FOREIGN_SERVER字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 srvname name - 外部服务器名。 srvowner oid PG_AUTHID.oid 外部服务器的所有者。 srvfdw oid PG_FOREIGN_DATA_WRAPPER.oid 这个外部服务器的外部数据封装器的OID。 srvtype text - 服务器的类型(可选)。 srvversion text - 服务器的版本(可选)。 srvacl aclitem[] - 访问权限。 srvoptions text[] - 外部服务器指定选项,使用“keyword=value”格式的字符串。 父主题: 其他系统表
  • GLOBAL_FILE_IOSTAT 显示集群上所有节点的数据文件I/O统计信息,如表1所示。 表1 GLOBAL_FILE_IOSTAT字段 名称 类型 描述 node_name name 节点名称 filenum oid 文件标识。 dbid oid 数据库标识。 spcid oid 表空间标识。 phyrds bigint 读物理文件的数目。 phywrts bigint 写物理文件的数目。 phyblkrd bigint 读物理文件块的数目。 phyblkwrt bigint 写物理文件块的数目。 readtim bigint 读文件的总时长(单位:微秒)。 writetim bigint 写文件的总时长(单位:微秒)。 avgiotim bigint 读写文件的平均时长(单位:微秒)。 lstiotim bigint 最后一次读文件时长(单位:微秒)。 miniotim bigint 读写文件的最小时长(单位:微秒)。 maxiowtm bigint 读写文件的最大时长(单位:微秒)。 父主题: File
  • Wait Classes by Total Wait Time Wait Classes by Total Wait Time列名称及描述如表1 Wait Classes by Total Wait Time报表主要内容所示。 表1 Wait Classes by Total Wait Time报表主要内容 列名称 描述 Type Wait Event类别名称: STATUS。 LWLOCK_EVENT。 LOCK_EVENT。 IO_EVENT。 Waits Wait次数。 Total Wait Time(us) 总Wait时间(微秒)。 Avg Wait Time(us) 平均Wait时间(微秒)。 父主题: WDR报告信息介绍
  • 永久用户 GaussDB提供永久用户方案:创建具有PERSISTENCE属性的永久用户,具有PERSISTENCE属性的用户能够使用service_reserved_connections通道连接数据库。 1 gaussdb=# CREATE USER user_persistence WITH PERSISTENCE IDENTIFIED BY "********"; 只允许初始用户创建、修改和删除具有PERSISTENCE属性的永久用户。
  • 创建、修改和删除用户 创建用户,请使用SQL语句CREATE USER。 例如:创建用户joe,并设置用户拥有CREATEDB属性。 1 2 gaussdb=# CREATE USER joe WITH CREATEDB PASSWORD "********"; CREATE ROLE 创建系统管理员,请使用带有SYSADMIN选项的CREATE USER语句。 删除现有用户,请参见DROP USER。 更改用户账户(例如,重命名用户或更改密码),请参见ALTER USER。 查看用户列表,请查询视图GS_USER。 1 gaussdb=# SELECT * FROM gs_user; 查看用户属性,请查询系统表PG_AUTHID。 1 gaussdb=# SELECT * FROM pg_authid;
  • 示例 byteawithoutorderwithequalcolin、byteawithoutorderwithequalcolout等密态等值函数为数据库内核中数据类型byteawithoutorderwithequalcol指定的in、out、send、recv等读写格式转换函数,具体可参考bytea类型的byteain、byteaout等函数,但会对本地的cek进行验证,需要密文字段中有本地存在的cekoid才能执行成功。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -- 例如存在加密表int_type,int_col2为其加密列。 -- 使用非密态客户端连接数据库,查询加密列密文。 gaussdb=# SELECT int_col2 FROM int_type; int_col2 ------------------------------------------------------------------------------------------------------------------------------------------------------ \x01c35301bf421c8edf38c34704bcc82838742917778ccb402a1b7452ad4a6ac7371acc0ac33100000035fe3424919854c86194f1aa5bb4e1ca656e8fc6d05324a1419b69f488bdc3c6 (1 row) -- 将加密列密文当做byteawithoutorderwithequalcolin入参,格式从cstring输入转码转化成内部byteawithoutorderwithequalcol形式。 gaussdb=# SELECT byteawithoutorderwithequalcolin('\x01c35301bf421c8edf38c34704bcc82838742917778ccb402a1b7452ad4a6ac7371acc0ac33100000035fe3424919854c86194f1aa5bb4e1ca656e8fc6d05324a1419b69f488bdc3c6'); byteawithoutorderwithequalcolin ------------------------------------------------------------------------------------------------------------------------------------------------------ \x01c35301bf421c8edf38c34704bcc82838742917778ccb402a1b7452ad4a6ac7371acc0ac33100000035fe3424919854c86194f1aa5bb4e1ca656e8fc6d05324a1419b69f488bdc3c6 (1 row) 由于byteawithoutorderwithequalcolin等的实现会对cek进行查找,并且判断是否为正常加密后的数据类型。 因此如果用户输入数据的格式不是加密后的数据格式,并且在本地不存在对应cek的情况下,会返回错误。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 gaussdb=# SELECT * FROM byteawithoutorderwithequalcolsend('\x907219912381298461289346129'::byteawithoutorderwithequalcol); ERROR: cek with OID 596711794 not found LINE 1: SELECT * FROM byteawithoutorderwithequalcolsend('\x907219912... ^ gaussdb=# SELECT * FROM byteawithoutordercolout('\x90721901999999999999912381298461289346129'); ERROR: cek with OID 2566986098 not found LINE 1: SELECT * FROM byteawithoutordercolout('\x9072190199999999999... gaussdb=# SELECT * FROM byteawithoutorderwithequalcolrecv('\x90721901999999999999912381298461289346129'::byteawithoutorderwithequalcol); ERROR: cek with OID 2566986098 not found ^ gaussdb=# SELECT * FROM byteawithoutorderwithequalcolsend('\x90721901999999999999912381298461289346129'::byteawithoutorderwithequalcol); ERROR: cek with OID 2566986098 not found LINE 1: SELECT * FROM byteawithoutorderwithequalcolsend('\x907219019... ^
  • PG_STAT_SYS_TABLES PG_STAT_SYS_TABLES视图显示pg_catalog、information_schema模式的所有命名空间中系统表的统计信息。 表1 PG_STAT_SYS_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 该表的模式名。 relname name 表名。 seq_scan bigint 该表发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 该表发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint HOT更新行数(比如没有更新所需的单独索引)。 n_live_tup bigint 估计活跃行数。 n_dead_tup bigint 估计不活跃行数。在Ustore表中仅代表不活跃行指针数量。 last_vacuum timestamp with time zone 上次手动清理该表的时间(不计算VACUUM FULL)。 last_autovacuum timestamp with time zone 上次被autovacuum守护线程清理的时间。 last_analyze timestamp with time zone 上次手动分析这个表的时间。 last_autoanalyze timestamp with time zone 上次被autovacuum守护线程分析的时间。 vacuum_count bigint 这个表被手动清理的次数(不计算VACUUM FULL)。 autovacuum_count bigint 这个表被autovacuum守护线程清理的次数。 analyze_count bigint 这个表被手动分析的次数。 autoanalyze_count bigint 这个表被autovacuum守护线程分析的次数。 last_data_changed timestamp with time zone 这个表数据最近修改时间。 父主题: 其他系统视图
  • 功能描述 SET CONSTRAINTS设置当前事务检查行为的约束条件。 IMMEDIATE约束是在每条语句后面进行检查。DEFERRED约束一直到事务提交时才检查。每个约束都有自己的模式。 从创建约束条件开始,一个约束总是设定为DEFERRABLE INITIALLY DEFERRED、DEFERRABLE INITIALLY IMMEDIATE和NOT DEFERRABLE三个特性之一。第三种总是IMMEDIATE,并且不会受SET CONSTRAINTS影响。前两种以指定的方式启动每个事务,但是其行为可以在事务里用SET CONSTRAINTS改变。 带着一个约束名列表的SET CONSTRAINTS改变这些约束的模式(都必须是可推迟的)。如果有多个约束匹配某个名称,则所有都会被影响。SET CONSTRAINTS ALL改变所有可推迟约束的模式。 当SET CONSTRAINTS把一个约束从DEFERRED改成IMMEDIATE的时候,任何将在事务结束准备进行的数据修改都将在SET CONSTRAINTS的时候执行检查。如果违反了任何约束,SET CONSTRAINTS都会失败(并且不会修改约束模式)。因此,SET CONSTRAINTS可以用于强制在事务中某一点进行约束检查。检查和唯一约束总是不可推迟的。
  • java.sql.DatabaseMetaData java.sql.DatabaseMetaData是数据库对象定义接口。 表1 对java.sql.DatabaseMetaData的支持情况 方法名 返回值类型 支持JDBC4 支持计划外ALT allProceduresAreCallable() boolean Yes Yes allTablesAreSelectable() boolean Yes Yes autoCommitFailureClosesAllResultSets() boolean Yes Yes dataDefinitionCausesTransactionCommit() boolean Yes Yes dataDefinitionIgnoredInTransactions() boolean Yes Yes deletesAreDetected(int type) boolean Yes Yes doesMaxRowSizeIncludeBlobs() boolean Yes Yes generatedKeyAlwaysReturned() boolean Yes Yes getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) ResultSet Yes Yes getCatalogs() ResultSet Yes Yes getCatalogSeparator() String Yes Yes getCatalogTerm() String Yes Yes getClientInfoProperties() ResultSet Yes Yes getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) ResultSet Yes Yes getConnection() Connection Yes Yes getCrossReference(String parentCatalog, String parentSchema, String parentTable, String foreignCatalog, String foreignSchema, String foreignTable) ResultSet Yes Yes getDefaultTransactionIsolation() int Yes Yes getExportedKeys(String catalog, String schema, String table) ResultSet Yes Yes getExtraNameCharacters() String Yes Yes getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern) ResultSet Yes Yes getFunctions(String catalog, String schemaPattern, String functionNamePattern) ResultSet Yes Yes getIdentifierQuoteString() String Yes Yes getImportedKeys(String catalog, String schema, String table) ResultSet Yes Yes getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) ResultSet Yes Yes getMaxBinaryLiteralLength() int Yes Yes getMaxCatalogNameLength() int Yes Yes getMaxCharLiteralLength() int Yes Yes getMaxColumnNameLength() int Yes Yes getMaxColumnsInGroupBy() int Yes Yes getMaxColumnsInIndex() int Yes Yes getMaxColumnsInOrderBy() int Yes Yes getMaxColumnsInSelect() int Yes Yes getMaxColumnsInTable() int Yes Yes getMaxConnections() int Yes Yes getMaxCursorNameLength() int Yes Yes getMaxIndexLength() int Yes Yes getMaxLogicalLobSize() default long Yes Yes getMaxProcedureNameLength() int Yes Yes getMaxRowSize() int Yes Yes getMaxSchemaNameLength() int Yes Yes getMaxStatementLength() int Yes Yes getMaxStatements() int Yes Yes getMaxTableNameLength() int Yes Yes getMaxTablesInSelect() int Yes Yes getMaxUserNameLength() int Yes Yes getNumericFunctions() String Yes Yes getPrimaryKeys(String catalog, String schema, String table) ResultSet Yes Yes getPartitionTablePrimaryKeys(String catalog, String schema, String table) ResultSet Yes Yes getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) ResultSet Yes Yes getProcedures(String catalog, String schemaPattern, String procedureNamePattern) ResultSet Yes Yes getProcedureTerm() String Yes Yes getSchemas() ResultSet Yes Yes getSchemas(String catalog, String schemaPattern) ResultSet Yes Yes getSchemaTerm() String Yes Yes getSearchStringEscape() String Yes Yes getSQLKeywords() String Yes Yes getSQLStateType() int Yes Yes getStringFunctions() String Yes Yes getSystemFunctions() String Yes Yes getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) ResultSet Yes Yes getTimeDateFunctions() String Yes Yes getTypeInfo() ResultSet Yes Yes getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) ResultSet Yes Yes getURL() String Yes Yes getVersionColumns(String catalog, String schema, String table) ResultSet Yes Yes insertsAreDetected(int type) boolean Yes Yes locatorsUpdateCopy() boolean Yes Yes othersDeletesAreVisible(int type) boolean Yes Yes othersInsertsAreVisible(int type) boolean Yes Yes othersUpdatesAreVisible(int type) boolean Yes Yes ownDeletesAreVisible(int type) boolean Yes Yes ownInsertsAreVisible(int type) boolean Yes Yes ownUpdatesAreVisible(int type) boolean Yes Yes storesLowerCaseIdentifiers() boolean Yes Yes storesMixedCaseIdentifiers() boolean Yes Yes storesUpperCaseIdentifiers() boolean Yes Yes supportsBatchUpdates() boolean Yes Yes supportsCatalogsInDataManipulation() boolean Yes Yes supportsCatalogsInIndexDefinitions() boolean Yes Yes supportsCatalogsInPrivilegeDefinitions() boolean Yes Yes supportsCatalogsInProcedureCalls() boolean Yes Yes supportsCatalogsInTableDefinitions() boolean Yes Yes supportsCorrelatedSubqueries() boolean Yes Yes supportsDataDefinitionAndDataManipulationTransactions() boolean Yes Yes supportsDataManipulationTransactionsOnly() boolean Yes Yes supportsGetGeneratedKeys() boolean Yes Yes supportsMixedCaseIdentifiers() boolean Yes Yes supportsMultipleOpenResults() boolean Yes Yes supportsNamedParameters() boolean Yes Yes supportsOpenCursorsAcrossCommit() boolean Yes Yes supportsOpenCursorsAcrossRollback() boolean Yes Yes supportsOpenStatementsAcrossCommit() boolean Yes Yes supportsOpenStatementsAcrossRollback() boolean Yes Yes supportsPositionedDelete() boolean Yes Yes supportsPositionedUpdate() boolean Yes Yes supportsRefCursors() boolean Yes Yes supportsResultSetConcurrency(int type, int concurrency) boolean Yes Yes supportsResultSetType(int type) boolean Yes Yes supportsSchemasInIndexDefinitions() boolean Yes Yes supportsSchemasInPrivilegeDefinitions() boolean Yes Yes supportsSchemasInProcedureCalls() boolean Yes Yes supportsSchemasInTableDefinitions() boolean Yes Yes supportsSelectForUpdate() boolean Yes Yes supportsStatementPooling() boolean Yes Yes supportsStoredFunctionsUsingCallSyntax() boolean Yes Yes supportsStoredProcedures() boolean Yes Yes supportsSubqueriesInComparisons() boolean Yes Yes supportsSubqueriesInExists() boolean Yes Yes supportsSubqueriesInIns() boolean Yes Yes supportsSubqueriesInQuantifieds() boolean Yes Yes supportsTransactionIsolationLevel(int level) boolean Yes Yes supportsTransactions() boolean Yes Yes supportsUnion() boolean Yes Yes supportsUnionAll() boolean Yes Yes updatesAreDetected(int type) boolean Yes Yes getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) ResultSet Yes Yes getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) ResultSet Yes Yes getTableTypes() ResultSet Yes Yes getUserName() String Yes Yes isReadOnly() boolean Yes Yes nullsAreSortedHigh() boolean Yes Yes nullsAreSortedLow() boolean Yes Yes nullsAreSortedAtStart() boolean Yes Yes nullsAreSortedAtEnd() boolean Yes Yes getDatabaseProductName() String Yes Yes getDatabaseProductVersion() String Yes Yes getDriverName() String Yes Yes getDriverVersion() String Yes Yes getDriverMajorVersion() int Yes Yes getDriverMinorVersion() int Yes Yes usesLocalFiles() boolean Yes Yes usesLocalFilePerTable() boolean Yes Yes supportsMixedCaseIdentifiers() boolean Yes Yes storesUpperCaseIdentifiers() boolean Yes Yes storesLowerCaseIdentifiers() boolean Yes Yes supportsMixedCaseQuotedIdentifiers() boolean Yes Yes storesUpperCaseQuotedIdentifiers() boolean Yes Yes storesLowerCaseQuotedIdentifiers() boolean Yes Yes storesMixedCaseQuotedIdentifiers() boolean Yes Yes supportsAlterTableWithAddColumn() boolean Yes Yes supportsAlterTableWithDropColumn() boolean Yes Yes supportsColumnAliasing() boolean Yes Yes nullPlusNonNullIsNull() boolean Yes Yes supportsConvert() boolean Yes Yes supportsConvert(int fromType, int toType) boolean Yes Yes supportsTableCorrelationNames() boolean Yes Yes supportsDifferentTableCorrelationNames() boolean Yes Yes supportsExpressionsInOrderBy() boolean Yes Yes supportsOrderByUnrelated() boolean Yes Yes supportsGroupBy() boolean Yes Yes supportsGroupByUnrelated() boolean Yes Yes supportsGroupByBeyondSelect() boolean Yes Yes supportsLikeEscapeClause() boolean Yes Yes supportsMultipleResultSets() boolean Yes Yes supportsMultipleTransactions() boolean Yes Yes supportsNonNullableColumns() boolean Yes Yes supportsMinimumSQLGrammar() boolean Yes Yes supportsCoreSQLGrammar() boolean Yes Yes supportsExtendedSQLGrammar() boolean Yes Yes supportsANSI92EntryLevelSQL() boolean Yes Yes supportsANSI92IntermediateSQL() boolean Yes Yes supportsANSI92FullSQL() boolean Yes Yes supportsIntegrityEnhancementFacility() boolean Yes Yes supportsOuterJoins() boolean Yes Yes supportsFullOuterJoins() boolean Yes Yes supportsLimitedOuterJoins() boolean Yes Yes isCatalogAtStart() boolean Yes Yes supportsSchemasInDataManipulation() boolean Yes Yes supportsSavepoints() boolean Yes Yes supportsResultSetHoldability(int holdability) boolean Yes Yes getResultSetHoldability() int Yes Yes getDatabaseMajorVersion() int Yes Yes getDatabaseMinorVersion() int Yes Yes getJDBCMajorVersion() int Yes Yes getJDBCMinorVersion() int Yes Yes uppercaseAttributeName为true时,以下方法会将查询结果转为大写,可转换范围与java中的toUpperCase方法一致。 public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) public ResultSet getSchemas(String catalog, String schemaPattern) public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) public ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) public ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) public ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) public ResultSet getPrimaryKeys(String catalog, String schema, String table) protected ResultSet getImportedExportedKeys(String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable) public ResultSet getIndexInfo(String catalog, String schema, String tableName, boolean unique, boolean approximate) public ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) public ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern) getPartitionTablePrimaryKeys(String catalog, String schema, String table)方法用于获取分区表含全局索引的主键列,使用示例如下: PgDatabaseMetaData dbmd = (PgDatabaseMetaData)conn.getMetaData(); dbmd.getPartitionTablePrimaryKeys("catalogName", "schemaName", "tableName"); 父主题: JDBC接口参考
  • ADM_USERS ADM_USERS视图显示所有数据库用户的信息。默认只有系统管理员权限可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_USERS字段 名称 类型 描述 username character varying(128) 用户名称。 user_id oid 用户ID。 account_status character varying(32) 账户状态。 NULL:该账户是拥有最高权限的初始系统管理员。 0:正常状态。 1:由于登录失败次数超过阈值被锁定了一定的时间。 2:被管理员锁定。 lock_date timestamp with time zone 默认显示账户的创建日期,如果账户被管理员锁定,或者登录失败次数超过阈值被锁定,则显示账户被锁定的日期。初始系统管理员该字段为NULL。 expiry_date timestamp with time zone 账户的到期日期。 default_tablespace character varying(4000) 数据的默认表空间。 temporary_tablespace character varying(4000) 临时表的默认表空间名称或表空间组的名称。 local_temp_tablespace character varying(30) 暂不支持,默认值为NULL。 created timestamp with time zone 用户创建日期。 profile character varying(128) 暂不支持,默认值为NULL。 initial_rsrc_consumer_group character varying(128) 暂不支持,默认值为NULL。 external_name character varying(4000) 暂不支持,默认值为NULL。 password_versions character varying(12) 显示账户密码的加密方式,取值为MD5、SHA256或SM3。 editions_enabled character varying(1) 暂不支持,默认值为NULL。 authentication_type text 指示用户的身份验证机制。 proxy_only_connect character varying(1) 暂不支持,默认值为NULL。 common character varying(3) 暂不支持,默认值为NULL。 last_login timestamp with time zone 用户最后一次登录的时间。 oracle_maintained character varying(1) 暂不支持,默认值为NULL。 inherited character varying(3) 暂不支持,默认值为NULL。 default_collation character varying(100) 用户Schema的默认字符序。 implicit character varying(3) 暂不支持,默认值为NULL。 all_shard character varying(3) 暂不支持,默认值为NULL。 password_change_date timestamp with time zone 用户上次设置密码的日期。 父主题: 用户和权限管理
  • 数据库对象命名 数据库对象命名需要满足约束: 标识符表长度不超过63个字节。若需要对建有全局二级索引(GSI)的表执行COPY、GDS数据导入操作,则表名长度不超过38个字节。 标识符以字母或下划线开头,中间字符可以是字母、数字、下划线、$、#。 若标识符被双引号("")包含或者MYSQL模式下被反引号(``)包含,则可以使用合法字符的任意组合,如"123gs_column"。 标识符不区分大小写,只有被双引号包含或者MYSQL模式下被反引号(``)包含才区分大小写。 不支持gsql快捷命令(除\sf)查询反引号包含的对象名。 避免使用保留或者非保留关键字命名数据库对象。 可以使用select * from pg_get_keywords()查询GaussDB的关键字,或者在关键字章节中查看。 避免使用双引号括起来的字符串来定义数据库对象名称,除非需要限制数据库对象名称的大小写。数据库对象名称大小写敏感会使定位问题难度增加。 数据库对象命名风格务必保持统一。 增量开发的业务系统或进行业务迁移的系统,建议遵守历史的命名风格。 建议使用多个单词组成,以下划线分割。 数据库对象名称建议能够望文知意,尽量避免使用自定义缩写(可以使用通用的术语缩写进行命名)。例如,在命名中可以使用具有实际业务含义的英文词汇或汉语拼音,但规则应该在集群范围内保持一致。 变量名的关键是要具有描述性,即变量名要有一定的意义,变量名要有前缀标明该变量的类型。 表对象的命名应该可以表征该表的重要特征。例如,在表对象命名时区分该表是普通表、临时表还是非日志表: 普通表名按照数据集的业务含义命名。 临时表以“tmp_+后缀”命名。 非日志表以“ul_+后缀”命名。 外表以“f_+后缀”命名。 不创建以redis_为前缀的数据库对象。 不创建以pgxc_redistb为命名的数据库对象。 不创建以mlog_和以matviewmap_为前缀的数据库对象。 不创建以gs_role_为前缀的数据库对象。 表对象命名建议不要超过63字节。如果超过该长度内核会对表名进行截断,从而造成实际名称和设置值不一致的现象,且在不同字符集下,可能造成字符被截断,出现预期外的字符。 若需要对建有全局二级索引(GSI)的表执行COPY、GDS数据导入操作,则表名长度不超过38个字节。如果超过该长度,COPY、GDS导入过程中创建的临时表,可能触发表名截断,进而引发数据导入流程中断,出现预期外的字符等问题。 父主题: 开发设计建议
  • 参数说明 @queryblock请参见指定Hint所处的查询块Queryblock章节,可省略,表示在当前查询块生效。 src,src1,src2表示predpush下推candidates一侧表集合。 dest表示predpush下推所指定的dest表也就是目标表。 predpush如果没有逗号表示所有表都是candidates表,如果有逗号就说明同时指定了candidates表和dest表。 使用predpush hint将过滤表达式尽可能移至靠近数据源的位置以达到查询优化的目的。 使用predpush hint需要确保rewrite_rule GUC参数包含PREDPUSH|REDPUSHFORCE|PREDPUSHNORMAL选项。 subquery_block可以是视图/物化视图。
  • SUMMARY_STAT_XACT_ALL_TABLES 显示数据库各节点所有Schema中所有普通表和toast表的事务状态信息的汇总求和结果,如表1所示。 表1 SUMMARY_STAT_XACT_ALL_TABLES字段 名称 类型 描述 schemaname name 此表所在的Schema名。 relname name 表名。 seq_scan numeric 此表发起的顺序扫描数。 seq_tup_read numeric 顺序扫描抓取的活跃行数。 idx_scan numeric 此表发起的索引扫描数。 idx_tup_fetch numeric 索引扫描抓取的活跃行数。 n_tup_ins numeric 插入行数。 n_tup_upd numeric 更新行数。 n_tup_del numeric 删除行数。 n_tup_hot_upd numeric HOT更新行数(即没有更新索引列的行数)。 父主题: Object
  • SUMMARY_STATEMENT 获得数据库主节点的执行语句(归一化SQL)的全量信息,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 当前版本暂不支持对FOR UPDATE关键字进行识别并归一化处理。例如:SELECT * FROM table; 与SELECT * FROM table FOR UPDATE WAIT N; 会被归一化处理为相同的归一化SQL,在query字段中体现。 表1 SUMMARY_STATEMENT字段 名称 类型 描述 node_name name 节点名称。 node_id integer 节点的id。 user_name name 用户名称。 user_id oid 用户OID。 unique_sql_id bigint 归一化的SQL id。 query text 归一化的SQL。 备注:长度受track_activity_query_size控制。 n_calls bigint 调用次数。 min_elapse_time bigint SQL在内核内的最小运行时间(单位:微秒)。 max_elapse_time bigint SQL在内核内的最大运行时间(单位:微秒)。 total_elapse_time bigint SQL在内核内的总运行时间(单位:微秒)。 n_returned_rows bigint SELECT返回的结果集行数。 n_tuples_fetched bigint 随机扫描行。 n_tuples_returned bigint 顺序扫描行。 n_tuples_inserted bigint 插入行。 n_tuples_updated bigint 更新行。 n_tuples_deleted bigint 删除行。 n_blocks_fetched bigint 逻辑读次数。 n_blocks_hit bigint 内存中命中次数。 n_soft_parse bigint 软解析次数。 n_hard_parse bigint 硬解析次数。 db_time bigint 有效的数据库内部时间花费,多线程将累加(单位:微秒)。 cpu_time bigint CPU时间(单位:微秒)。 execution_time bigint 执行器内执行时间(单位:微秒)。 parse_time bigint SQL解析时间(单位:微秒)。 plan_time bigint SQL生成计划时间(单位:微秒)。 rewrite_time bigint SQL重写时间(单位:微秒)。 pl_execution_time bigint plpgsql上的执行时间(单位:微秒)。 pl_compilation_time bigint plpgsql上的编译时间(单位:微秒)。 data_io_time bigint IO上的时间花费(单位:微秒)。 net_send_info text 通过物理连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。单机模式下不支持该字段。 net_recv_info text 通过物理连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。单机模式下不支持该字段。 net_stream_send_info text 通过逻辑连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。单机模式下不支持该字段。 net_stream_recv_info text 通过逻辑连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。单机模式下不支持该字段。 last_updated timestamp with time zone 最后一次更新该语句的时间。 sort_count bigint 排序执行的次数。 sort_time bigint 排序执行的时间(单位:微秒)。 sort_mem_used bigint 排序过程中使用的work memory大小(单位:KB)。 sort_spill_count bigint 排序过程中,若发生落盘,写文件的次数。 sort_spill_size bigint 排序过程中,若发生落盘,使用的文件大小(单位:KB)。 hash_count bigint hash执行的次数。 hash_time bigint hash执行的时间(单位:微秒)。 hash_mem_used bigint hash过程中使用的work memory大小(单位:KB)。 hash_spill_count bigint hash过程中,若发生落盘,写文件的次数。 hash_spill_size bigint hash过程中,若发生落盘,使用的文件大小(单位:KB)。 parent_unique_sql_id bigint 父语句的unique_sql_id,非存储过程子语句该值为0。 lock_wait_time bigint SQL的等锁时间(单位:微秒)。 total_used_memory bigint 归一化语句的内存使用总量(单位:MB)。 max_used_memory integer 单条语句的最大内存使用量(单位:MB)。 min_used_memory integer 单条语句的最小内存使用量(单位:MB)。 db_name name 连接后端的数据库名称。 db_id db_id 连接后端的数据库OID。 父主题: Query
  • WDR Snapshot数据表 WDR Snapshot数据表命名原则:snap_{源数据表}。 WDR Snapshot数据表来源为DBE_PERF Schema下的视图,WDR Snapshot在启动后(打开GUC参数enable_wdr_snapshot)会触发创建WDR Snapshot数据表。 初始用户或者监控管理员用户具有权限查看WDR Snapshot数据表。 父主题: WDR Snapshot Schema
  • 参数说明 config_parameter 可设置的运行时参数的名称。可用的运行时参数可以使用SHOW ALL命令查看。 value config_parameter的新值。可以声明为字符串常量、标识符、数字,或者逗号分隔的列表。DEFAULT用于把这些参数设置为它们的缺省值。 DEFAULT OFF RESET 用户指定的值:需要满足修改参数的取值限制 FROM CURRENT 取当前会话中的值设置为configuration_parameter的值。 TIME ZONE timezone 用于指定当前会话的本地时区。 取值范围:有效的本地时区。该选项对应的运行时参数名称为TimeZone,DEFAULT缺省值为PRC。 CURRENT_SCHEMA schema CURRENT_SCHEMA用于指定当前的模式。 取值范围:已存在模式名称。如果模式名不存在,会导致CURRENT_SCHEMA值为空。 SCHEMA schema 同CURRENT_SCHEMA。此处的schema是个字符串。 NAMES encoding_name 用于设置客户端的字符编码。等价于set client_encoding to encoding_name。 取值范围:有效的字符编码。该选项对应的运行时参数名称为client_encoding,默认编码为UTF8。 role_name 取值范围:字符串。要符合标识符命名规范。 password 角色的密码。要求符合密码的命名规则。 SESSION AUTHORIZATION 当前会话的用户表示符。 XML OPTION { DOCUMENT | CONTENT } 用于设置XML的解析方式。 取值范围:CONTENT(缺省)、DOCUMENT ISOLATION LEVEL 指定事务隔离级别,它决定当一个事务中存在其他并发运行事务时它能够看到什么数据。 取值范围: READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 READ UNCOMMITTED:读未提交隔离级别,指定后的行为和READ COMMITTED行为一致。
  • 语法格式 设置会话的事务参数。 ALTER SESSION SET [ SESSION CHARACTERIS TICS AS ] TRANSACTION { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED } } | { READ ONLY | READ WRITE } } [, ...] ; 设置会话的其他运行时参数。 ALTER SESSION SET {{config_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }} | CURRENT_SCHEMA { TO | = } { schema | DEFAULT } | TIME ZONE time_zone | SCHEMA 'schema' | NAMES encoding_name | ROLE role_name PASSWORD 'password' | SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT } | XML OPTION { DOCUMENT | CONTENT } } ;
  • 场景二:常规数据倾斜巡检 在库中表个数少于1W的场景,直接使用倾斜视图查询当前库内所有表的数据倾斜情况。 1 SELECT * FROM pgxc_get_table_skewness ORDER BY totalsize DESC; 在库中表个数非常多(至少大于1W)的场景,因PGXC_GET_TABLE_SKEWNESS涉及全库查并计算非常全面的倾斜字段,所以可能会花费比较长的时间(小时级),请根据PGXC_GET_TABLE_SKEWNESS视图定义,直接使用table_distribution()函数自定义输出,减少输出列进行计算优化,例如: 1 2 3 4 5 6 SELECT schemaname,tablename,max(dnsize) AS maxsize, min(dnsize) AS minsize FROM pg_catalog.pg_class c INNER JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace INNER JOIN pg_catalog.table_distribution() s ON s.schemaname = n.nspname AND s.tablename = c.relname INNER JOIN pg_catalog.pgxc_class x ON c.oid = x.pcrelid AND x.pclocatortype = 'H' GROUP BY schemaname,tablename;
共100000条