华为云用户手册

  • PG_COMM_SEND_STREAM PG_COMM_SEND_STREAM视图展示单个DN上所有的通信库发送流状态。 表1 PG_COMM_SEND_STREAM字段 名称 类型 描述 node_name text 节点名称。 local_tid bigint 使用此通信流的线程ID。 remote_name text 连接对端节点名称。 remote_tid bigint 连接对端线程ID。 idx integer 通信对端DN在本DN内的标识编号。 sid integer 通信流在物理连接中的标识编号。 tcp_sock integer 通信流所使用的tcp通信socket。 state text 通信流当前的状态。 UNKNOWN:表示当前逻辑连接状态未知。 READY:表示逻辑连接已就绪。 RUN:表示逻辑连接发送报文正常。 HOLD:表示逻辑连接发送报文等待中。 CLOSED:表示关闭逻辑连接。 TO_CLOSED:表示将会关闭逻辑连接。 WRITING:表示正在写入数据。 query_id bigint 通信流对应的debug_query_id编号。 pn_id integer 通信流所执行查询的plan_node_id编号。 send_smp integer 通信流所执行查询send端的smpid编号。 recv_smp integer 通信流所执行查询recv端的smpid编号。 send_bytes bigint 通信流发送的数据总量,单位Byte。 time bigint 通信流当前生命周期使用时长,单位ms。 speed bigint 通信流的平均发送速率,单位Byte/s。 quota bigint 通信流当前的通信配额值,单位Byte。 wait_quota bigint 通信流等待quota值产生的额外时间开销,单位ms。 父主题: 系统视图
  • 应用示例 查询当前视图,统计OBS读流量和平均读带宽,统计结果按10分钟聚集。 1 2 3 4 5 select * from gs_obs_read_traffic; nodename | hostname | traffic_mb | bandwidth_mb_per_s | reqcount | logtime ----------+------------------+------------------+--------------------+----------+------------------------ dn_1 | rhel_10_90_45_56 | 101.959338188171 | 5.14830159670447 | 23 | 2022-11-26 09:50:00+08 (1 row)
  • GS_BLOCKLIST_QUERY GS_BLOCKLIST_QUERY系统表存储作业黑名单信息和异常信息,该表以unique_sql_id作为唯一索引,进行作业异常信息统计和黑名单记录,可通过与GS_WLM_SESSION_INFO进行关联获取作业的query字段和执行信息。 GaussDB (DWS)同时提供了GS_BLOCKLIST_QUERY视图用于查询作业黑名单和异常信息,该视图可直接显示query字段信息,不过因为该视图与GS_WLM_SESSION_INFO为依赖关系,因此在GS_WLM_SESSION_INFO表较大的情况下,查询可能需要消耗较长的时间。 表1 GS_BLOCKLIST_QUERY字段 名字 类型 引用 描述 unique_sql_id bigint - 基于查询解析树生成的查询唯一ID。 block_list boolean - 查询作业是否属于黑名单。 except_num integer - 查询作业异常次数。 except_time timestamp - 查询作业最近一次异常时间。 此系统表的schema为dbms_om。 此系统表包含唯一索引,使用哈希分布方式分布在DN上,分布列为unique_sql_id。 此系统表仅限在gaussdb数据库中查询,其它数据库中查询会直接报错。 GS_BLOCKLIST_QUERY视图存储在pg_catalog下。 通常对于DML语句,在计算Unique SQL ID的过程中会忽略常量值。但对于DDL、DCL以及设置参数等语句,常量值不可以忽略。因此一个unique_sql_id可能会对应一个或多个查询。 父主题: 系统表
  • 应用示例 在容灾集群上查看备表回放状态: 1 2 3 4 5 SELECT * FROM pg_fine_dr_info; relid | lastcsn | lastxmin | lastxmax | laststarttime | lastendtime -------+---------+----------+----------+-------------------------------+------------------------------- 21132 | 1251610 | 1251609 | 1251611 | 2023-01-04 20:51:58.375136+08 | 2023-01-04 20:51:58.393986+08 (1 row)
  • PG_RLSPOLICY PG_RLSPOLICY系统表存储行级访问控制策略的信息。 表1 PG_RLSPOLICY字段 名称 类型 描述 polname name 行访问控制策略名称。 polrelid oid 行访问控制策略的表OID。 polcmd char 行访问控制策略影响的SQL操作,包括:*(ALL)、r(SELECT)、w(UPDATE)、d(DELETE)。 polpermissive boolean 行访问控制策略的类型。 说明: polpermissive的取值: true表示PERMISSIVE,表示行访问控制策略是宽容性策略。 false表示RESTRICTIVE,表示行访问控制策略是限制性策略。 polroles oid[] 行访问控制策略影响的数据库用户OID。 polqual pg_node_tree 行访问控制策略的SQL条件表达式。 父主题: 系统表
  • 全并行的数据查询处理 GaussDB(DWS)是采用Shared-nothing架构的MPP系统,其由众多拥有独立且互不共享CPU、内存、存储等系统资源的逻辑节点组成。在这样的系统架构中,业务数据被分散存储在多个节点上,数据分析任务被推送到数据所在位置就近执行,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。 GaussDB(DWS)后台还通过算子并行执行、指令在寄存器并行执行、及LLVM动态编译剪枝冗余的条件逻辑判断,助力数据查询性能提升。
  • 删除用户 DROP USER语句用于删除一个或多个GaussDB(DWS)用户。当确认账户不再使用,管理员可以删除用户账户。用户删除后不可恢复。 同时删除多个用户时,用","隔开。 成功删除用户后,该用户的所有权限也会被一同删除。 当删除的用户正处于活动状态时,此会话状态不会立马断开,用户在会话状态断开后才会被完全删除。 DROP USER语句指定CASCADE时,可级联删除依赖用户的表等对象。即删除owner是该用户的对象,并清理掉其他对象对该用户的授权信息。 示例: 删除用户u1: 1 DROP USER u1; 级联删除账户u2: 1 DROP USER u2 CASCADE;
  • 锁定用户 ALTER USER语句中ACCOUNT LOCK | ACCOUNT UNLOCK参数用于锁定或者解锁用户,被锁定的用户不允许登录。若管理员发现某账户被盗、非法访问等异常情况,可手动锁定该账户;当管理员认为账户恢复正常后,可手动解锁该账户。 示例: 锁定用户u1: 1 ALTER USER u1 ACCOUNT LOCK; 解锁用户u1: 1 ALTER USER u1 ACCOUNT UNLOCK;
  • 创建用户 CREATE USER语句用于创建新的GaussDB(DWS)用户。创建新用户后,可以使用该用户连接数据库。 创建普通用户u1,并设置用户拥有CREATEDB属性。 1 CREATE USER u1 WITH CREATEDB PASSWORD '{Password}'; 创建系统管理员mydbadmin,需指定参数SYSADMIN 。 1 CREATE USER mydbadmin sysadmin PASSWORD '{Password}'; 通过视图PG_USER查看已创建的用户。 1 SELECT * FROM pg_user; 要查看用户属性,请查询系统表PG_AUTHID。 1 SELECT * FROM pg_authid;
  • PG_STAT_XACT_USER_TABLES PG_STAT_XACT_USER_TABLES视图显示命名空间中用户表的事务状态信息。 表1 PG_STAT_XACT_USER_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 热更新行数(即不需要单独的索引更新)。 父主题: 系统视图
  • 参数 表1 SQLAllocHandle参数 关键字 参数说明 HandleType 由SQLAllocHandle分配的句柄类型。必须为下列值之一: SQL_HANDLE_ENV(环境句柄) SQL_HANDLE_DBC(连接句柄) SQL_HANDLE_STMT(语句句柄) SQL_HANDLE_DESC(描述句柄) 申请句柄顺序为,先申请环境句柄,再申请连接句柄,最后申请语句句柄,后申请的句柄都要依赖它前面申请的句柄。 InputHandle 将要分配的新句柄的类型。 如果HandleType为SQL_HANDLE_ENV,则这个值为SQL_NULL_HANDLE。 如果HandleType为SQL_HANDLE_DBC,则这一定是一个环境句柄。 如果HandleType为SQL_HANDLE_STMT或SQL_HANDLE_DESC,则它一定是一个连接句柄。 OutputHandlePtr 输出参数:一个缓冲区的指针,此缓冲区以新分配的数据结构存放返回的句柄。
  • 注意事项 当分配的句柄并非环境句柄时,如果SQLAllocHandle返回的值为SQL_ERROR,则它会将OutputHandlePtr的值设置为SQL_NULL_HDBC、SQL_NULL_HSTMT或SQL_NULL_HDESC。之后,通过调用带有适当参数的SQLGetDiagRec,其中HandleType和Handle被设置为IntputHandle的值,可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
  • ALL_COL_COMMENTS ALL_COL_COMMENTS视图存储当前用户可访问的表或视图中字段的注释信息。 表1 ALL_COL_COMMENTS字段 名称 类型 描述 column_name character varying(64) 列名。 table_name character varying(64) 表名或视图名。 owner character varying(64) 表或视图的所有者。 comments text 注释。 父主题: 系统视图
  • GS_ALL_CONTROL_GROUP_INFO GS_ALL_CONTROL_GROUP_INFO视图显示数据库内所有的控制组信息。 表1 GS_ALL_CONTROL_GROUP_INFO字段 名称 类型 描述 name text 控制组的名称。 type text 控制组的类型。 gid bigint 控制组ID。 classgid bigint Workload所属Class的控制组ID。 class text Class控制组。 workload text Workload控制组。 shares bigint 控制组分配的CPU资源配额。 limits bigint 控制组分配的CPU资源限额。 wdlevel bigint Workload控制组层级。 cpucores text 控制组使用的CPU核的信息。 父主题: 系统视图
  • PGXC_WORKLOAD_SQL_COUNT PGXC_WORKLOAD_SQL_COUNT视图显示集群中所有CN节点上的Workload控制组内的SQL语句执行次数的统计信息,包括SELECT、UPDATE、INSERT、DELETE语句的执行次数统计,以及DDL、DML、DCL类型语句的执行次数统计。需要有系统管理员权限或预置角色gs_role_read_all_stats权限才可以访问此视图。 表1 PGXC_WORKLOAD_SQL_COUNT字段 名称 类型 描述 node_name name 节点名称。 workload name Workload控制组名称。 select_count bigint SELECT数量。 update_count bigint UPDATE数量。 insert_count bigint INSERT数量。 delete_count bigint DELETE数量。 ddl_count bigint DDL数量。 dml_count bigint DML数量。 dcl_count bigint DCL数量。 父主题: 系统视图
  • PG_CURSORS PG_CURSORS视图列出了当前可用的游标。 表1 PG_CURSORS字段 名称 类型 描述 name text 游标名。 statement text 声明改游标时的查询语句。 is_holdable boolean 如果该游标是持久的(就是在声明该游标的事务结束后仍然可以访问该游标)则为TRUE,否则为FALSE。 is_binary boolean 如果该游标被声明为BINARY则为TRUE,否则为FALSE。 is_scrollable boolean 如果该游标可以滚动(就是允许以不连续的方式检索)则为TRUE,否则为FALSE。 creation_time timestamp with time zone 声明该游标的时间戳。 父主题: 系统视图
  • GS_WLM_OPERATOR_HISTORY GS_WLM_OPERATOR_HISTORY视图显示的是当前用户在当前CN上执行作业结束后的算子的相关记录。 此视图用于从GaussDB(DWS)中查询数据,数据库中的数据会定时被清理。当GUC参数enable_resource_record为on时,视图中的记录每隔3分钟被转储到系统表GS_WLM_OPERATOR_INFO中一次,同时视图中的记录被删除;当GUC参数enable_resource_record为off时,记录在视图中的存留时间达到超期时间后会被删除。记录的数据同表1。 父主题: 系统视图
  • PG_EXTENSION PG_EXTENSION系统表存储关于所安装扩展的信息。GaussDB(DWS)默认有三十四个扩展,即aio_scheduler、btree_gin、cudesckv、dimsearch、dist_fdw、functional_clog、functional_extension、functional_file、functional_hudi、functional_job、functional_largeobject、functional_memory、functional_other、functional_signal、functional_vacuum、gc_fdw、hdfs_fdw、hstore、log_fdw、operational_backup、operational_cgroup、operational_cudesc、operational_other、operational_replication、operational_restoration、operational_stats、operational_xlog、packages、pgcrypto、pldbgapi、plpgsql、roach_api、tsdb和uuid-ossp。 表1 PG_EXTENSION 名称 类型 描述 extname name 扩展名。 extowner oid 扩展的所有者。 extnamespace oid 扩展导出对象的命名空间。 extrelocatable boolean 如果扩展能够重定位到其他schema,则为true。 extversion text 扩展的版本号。 extconfig oid[] 扩展的配置信息。 extcondition text[] 扩展配置信息的过滤条件。 父主题: 系统表
  • PGXC_WORKLOAD_SQL_ELAPSE_TIME PGXC_WORKLOAD_SQL_ELAPSE_TIME视图显示集群中所有CN节点上Workload控制组内SQL语句执行的响应时间的统计信息,包括SELECT、UPDATE、INSERT、DELETE语句的最大、最小、平均、以及总响应时间,单位为微秒。需要有系统管理员权限或预置角色gs_role_read_all_stats权限才可以访问此视图。 表1 PGXC_WORKLOAD_SQL_ELAPSE_TIME字段 名称 类型 描述 node_name name 节点名称。 workload name Workload控制组名称。 total_select_elapse bigint SELECT总响应时间。 max_select_elapse bigint SELECT最大响应时间。 min_select_elapse bigint SELECT最小响应时间。 avg_select_elapse bigint SELECT平均响应时间。 total_update_elapse bigint UPDATE总响应时间。 max_update_elapse bigint UPDATE最大响应时间。 min_update_elapse bigint UPDATE最小响应时间。 avg_update_elapse bigint UPDATE平均响应时间。 total_insert_elapse bigint INSERT总响应时间。 max_insert_elapse bigint INSERT最大响应时间。 min_insert_elapse bigint INSERT最小响应时间。 avg_insert_elapse bigint INSERT平均响应时间。 total_delete_elapse bigint DELETE总响应时间。 max_delete_elapse bigint DELETE最大响应时间。 min_delete_elapse bigint DELETE最小响应时间。 avg_delete_elapse bigint DELETE平均响应时间。 父主题: 系统视图
  • 前提条件 GUC参数enable_resource_track为on (默认为on)。 GUC参数resource_track_level为query、perf或operator(默认为query)。 监控作业的类型为: 优化器估算的执行代价大于或等于resource_track_cost取值的作业。 Cgroups功能正常加载,可通过gs_cgroup -P查看控制组信息。 GUC参数enable_track_record_subsql控制是否记录存储过程、匿名块内部语句。 在上述条件中,enable_resource_track为系统级参数,用于设置是否开启资源监控功能。resource_track_level为session级参数,可以对某个session的资源监控级别进行灵活设置。这两个参数的设置方法如下表: 表2 设置资源监控信息统计级别 enable_resource_track resource_track_level query级别信息 算子级别信息 on(default) none 不统计 不统计 query(default) 统计 不统计 perf 统计 不统计 operator 统计 统计 off none/query/operator 不统计 不统计
  • 操作步骤 通过视图gs_session_cpu_statistics查询实时CPU信息。 1 SELECT * FROM gs_session_cpu_statistics; 通过视图gs_session_memory_statistics查询实时memory信息。 1 SELECT * FROM gs_session_memory_statistics; 通过视图gs_wlm_session_statistics查询当前CN的实时资源。 1 SELECT * FROM gs_wlm_session_statistics; 通过视图pgxc_wlm_session_statistics查询所有CN的实时资源。 1 SELECT * FROM pgxc_wlm_session_statistics; 通过视图gs_wlm_operator_statistics查询当前CN作业算子执行实时资源信息。 1 SELECT * FROM gs_wlm_operator_statistics; 通过视图pgxc_wlm_operator_statistics查询所有CN作业算子执行实时资源信息。 1 SELECT * FROM pgxc_wlm_operator_statistics; 通过视图pg_session_wlmstat查询当前用户执行作业正在运行时的负载管理信息。 1 SELECT * FROM pg_session_wlmstat; 通过视图pgxc_wlm_workload_records(动态负载功能开启,即enable_dynamic_workload为on时该视图有效)查询当前用户在每个CN上作业执行时的状态信息。 1 SELECT * FROM pgxc_wlm_workload_records;
  • 应用示例 查看所有发布: 1 2 3 4 5 SELECT * FROM pg_publication; pubname | pubowner | puballtables | pubinsert | pubupdate | pubdelete | pubtruncate ---------+----------+--------------+-----------+-----------+-----------+------------- mypub | 10 | t | t | t | t | t (1 row)
  • 应用示例 使用PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS视图查询表的倾斜状况总览,再使用gs_table_distribution(schemaname text, tablename text)函数获取指定表在各个节点所占磁盘空间大小的分布情况。 使用PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS视图查询表的倾斜状况总览。 tpcds_col=# select * from pgxc_wlm_table_distribution_skewness; 查询结果如下: 显示表dbgen_version的数据倾斜程度较为严重。 使用gs_table_distribution(schemaname text, tablename text)函数查询表dbgen_version在各个节点所占磁盘空间大小的分布情况。 tpcds_col=# select * from gs_table_distribution('public','dbgen_version'); 查询结果如下: 显示该表在DN上所占磁盘空间确实存在数据倾斜现象,数据集中在dn_6005_6006上。
  • PG_DB_ROLE_SETTING PG_DB_ROLE_SETTING系统表存储数据库运行时每个角色与数据绑定的配置项的默认值 。 表1 PG_DB_ROLE_SETTING字段 名称 类型 描述 setdatabase oid 配置项所对应的数据库,如果未指定数据库,则为0。 setrole oid 配置项所对应的角色,如果未指定角色,则为0。 setconfig text[] 运行时配置项的默认值。 父主题: 系统表
  • 空间索引 GaussDB(DWS)数据库的PostGIS Extension支持GIST (Generalized Search Tree) 空间索引(分区表除外)。相比于B-tree索引,GIST索引适应于任意类型的非常规数据结构,可有效提高几何和地理数据信息的检索效率。 使用如下命令创建GIST索引: 1 CREATE INDEX indexname ON tablename USING GIST ( geometryfield );
  • PGXC_GTM_SNAPSHOT_STATUS PGXC_GTM_SNAPSHOT_STATUS视图用于查看当前GTM上事务信息。 表1 PGXC_GTM_SNAPSHOT_STATUS字段 名称 类型 描述 xmin xid 仍在运行的最小事务号。 xmax xid 已完成的事务号最大的事务的下一个事务号。 csn integer 待提交事务的序列号。 oldestxmin xid 当前最早的活跃事务在其取快照时,所有运行事务号最小的事务。 xcnt integer 当前活跃的事务个数。 running_xids text 当前活跃的事务号。 父主题: 系统视图
  • USER_PART_TABLES USER_PART_TABLES视图存储当前用户下分区表的信息。 名称 类型 描述 table_owner character varying(64) 分区表的所有者名称。 schema character varying(64) 分区表的模式。 table_name character varying(64) 分区表的名称。 partitioning_type text 分区表的分区策略。 说明: 当前分区表策略仅支持范围分区(Range Partitioning)和列表分区(List Partitioning)。 partition_count bigint 分区表的分区个数。 def_tablespace_name name 分区表的表空间名称。 partitioning_key_count integer 分区表的分区键个数。 父主题: 系统视图
  • PG_STATIO_ALL_SEQUEN CES PG_STATIO_ALL_SEQUENCES视图显示当前数据库中相关的序列信息以及指定序列的I/O的统计信息。 表1 PG_STATIO_ALL_SEQUENCES字段 名称 类型 描述 relid oid 序列OID。 schemaname name 序列中模式名。 relname name 序列名。 blks_read bigint 从序列中读取的磁盘块数。 blks_hit bigint 序列缓冲区命中数量。 父主题: 系统视图
  • PGXC_MEMORY_DEBUG_INFO PGXC_MEMORY_DEBUG_INFO视图显示当前集群每个节点在执行作业时的内存报错信息,便于定位内存报错问题,当执行语句报错提示“memory is temporarily unavailable”时,通过该视图可查询到所有节点的内存报错信息,该报错信息跟日志中显示的内存报错信息相同。该视图8.3.0及以上集群版本支持。 该视图仅显示最近一次报错的集群信息,重复报错信息会进行覆盖,同一个query多次申请内存报错,信息不会进行更新。 表1 PGXC_MEMORY_DEBUG_INFO字段 名称 类型 描述 node_name text 实例名称,包含CN和DN。 query_id bigint 正在申请内存的查询ID。 memory_info text 当前实例的内存使用情况,主要包含: process_used_memory:GaussDB(DWS)进程所使用的内存大小。 max_dynamic_memory:最大动态内存。 dynamic_used_memory:已使用的动态内存。 dynamic_peak_memory:内存的动态峰值。 dynamic_used_shrctx:最大动态共享内存上下文。 dynamic_peak_shrctx:共享内存上下文的动态峰值。 shared_used_memory:已使用的共享内存。 cstore_used_memory:列存已使用的内存大小。 comm_used_memory:通信库已使用的内存大小。 comm_peak_memory:通信库的内存峰值。 other_used_memory:其他已使用的内存大小。 topsql_used_memory:topsql已使用内存大小 large_storage_memory:列存压缩和解压缩使用的内存大小。 os_totalmem:操作系统总内存大小。 os_freeemem:操作系统剩余内存大小。 summary text 包含实例上作业消耗的总估算内存和消耗的总实际内存大小。 abnormal_query text 使用内存异常的线程ID和queryid,包含两种情况: 当前使用内存最大的会话。 估算内存和实际使用内存差别最大的会话。 abnormal_memory text 使用内存异常的内存块,包含共享内存ctx使用最大的和通用内存ctx使用最大的 top_thread text 使用内存最多的三个线程信息: context name:表示正在使用内存的内存块。 contextlevel:表示ctx的等级。 sessType:表示ctx顶层节点的类型。 totalsize[274,13,260]MB,表示当前内存ctx的总内存,已释放内存和使用内存大小,单位为MB。 create_time timestamp with time zone 出现内存不足报错的时间点。 父主题: 系统视图
  • 示例2 客户端内存占用过多解决 此示例主要使用setFetchSize来调整客户端内存使用,它的原理是通过数据库游标来分批获取服务器端数据,但它会加大网络交互,可能会损失部分性能。 由于游标事务内有效,故需要先关闭自动提交。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // 关闭掉自动提交 conn.setAutoCommit(false); Statement st = conn.createStatement(); // 打开游标,每次获取50行数据 st.setFetchSize(50); ResultSet rs = st.executeQuery("SELECT * FROM mytable"); while (rs.next()) { System.out.print("a row was returned."); } rs.close(); // 关闭服务器游标。 st.setFetchSize(0); rs = st.executeQuery("SELECT * FROM mytable"); while (rs.next()) { System.out.print("many rows were returned."); } rs.close(); // Close the statement. st.close();
共100000条