华为云用户手册

  • 示例 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 //以下用例以gsjdbc4.jar为例,如果要使用gsjdbc200.jar,请替换驱动类名(将代码中的“org.postgresql”替换成“com.huawei.gauss200.jdbc”)与连接URL串前缀(将“jdbc:postgresql”替换为“jdbc:gaussdb”)。 //以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。 public static Connection GetConnection(String username, String passwd) { //驱动类。 String driver = "org.postgresql.Driver"; //数据库连接描述符。 String sourceURL = "jdbc:postgresql://10.10.0.13:8000/postgres?currentSchema=test"; Connection conn = null; try { //加载驱动。 Class.forName(driver); } catch (ClassNotFoundException e ){ e.printStackTrace(); return null; } try { //创建连接。 conn = DriverManager.getConnection(sourceURL, username, passwd); System.out.println("Connection succeed!"); } catch (SQLException e) { e.printStackTrace(); return null; } return conn; }
  • GS_ROW_TABLE_IO_STAT GS_ROW_TABLE_IO_STAT视图显示当前数据库中所有行存表在当前节点上的IO情况。各统计字段为实例启动以来的累计值。 表1 GS_ROW_TABLE_IO_STAT字段 名称 类型 描述 schemaname name 表的命名空间。 relname name 表的名称。 heap_read bigint 堆逻辑读块数。 heap_hit bigint 堆命中块数。 idx_read bigint 索引逻辑读块数。 idx_hit bigint 索引命中块数。 toast_read bigint TOAST表逻辑读块数。 toast_hit bigint TOAST表命中块数。 tidx_read bigint TOAST表Index逻辑读个数。 tidx_hit bigint TOAST表Index命中个数。 父主题: 系统视图
  • PG_THREAD_WAIT_STATUS 通过PG_THREAD_WAIT_STATUS视图可以检测当前实例中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。 表1 PG_THREAD_WAIT_STATUS字段 名称 类型 描述 node_name text 当前节点的名称。 db_name text 数据库名称。 thread_name text 线程名称。 query_id bigint 查询ID,对应debug_query_id。 tid bigint 当前线程的线程号。 lwtid integer 当前线程的轻量级线程号。 ptid integer streaming线程的父线程。 tlevel integer streaming线程的层级。 smpid integer 并行线程的ID。 wait_status text 当前线程的等待状态。等待状态的详细信息请参见表2。 wait_event text 如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、IO的信息。否则为空。 wait_status列的等待状态有以下状态。 表2 等待状态列表 wait_status值 含义 none 未等任意事件。 acquire lock 等待加锁,要么加锁成功,要么加锁等待超时。 acquire lwlock 等待获取轻量级锁。 wait io 等待IO完成。 wait cmd 等待完成读取网络通信包。 wait pooler get conn 等待pooler完成获取连接。 wait pooler abort conn 等待pooler完成终止连接。 wait pooler clean conn 等待pooler完成清理连接。 pooler create conn: [nodename], total N 等待pooler建立连接,当前正在与nodename指定节点建立连接,且仍有N个连接等待建立。 get conn 获取到其他节点的连接。 set cmd: [nodename] 在连接上执行SET/RESET/TRANSACTION BLOCK LEVEL PARA SET/SESSION LEVEL PARA SET,当前正在nodename指定节点上执行。 cancel query 取消某连接上正在执行的SQL语句。 stop query 停止某连接上正在执行的查询。 wait node: [nodename](plevel), total N, [phase] 等待接收与某节点的连接上的数据,当前正在等待nodename节点plevel线程的数据,且仍有N个连接的数据待返回。如果状态包含phase信息,则可能的阶段状态有: begin:表示处于事务开始阶段。 commit:表示处于事务提交阶段。 rollback:表示处于事务回滚阶段。 wait transaction sync: xid 等待xid指定事务同步。 wait wal sync 等待特定LSN的wal log完成到备机的同步。 wait data sync 等待完成数据页到备机的同步。 wait data sync queue 等待把行存的数据页或列存的CU放入同步队列。 flush data: [nodename](plevel), [phase] 等待向网络中nodename指定节点的plevel对应线程发送数据。如果状态包含phase信息,则可能的阶段状态为wait quota,即当前通信流正在等待quota值。 stream get conn: [nodename], total N 初始化stream flow时,等待与nodename节点的consumer对象建立连接,且当前有N个待建连对象。 wait producer ready: [nodename](plevel), total N 初始化stream flow时,等待每个producer都准备好,当前正在等待nodename节点plevel对应线程的producer对象准备好,且仍有N个producer对象处于等待状态。 synchronize quit steam plan结束时,等待stream线程组内的线程统一退出。 nodegroup destroy steam plan结束时,等待销毁stream node group。 wait active statement 等待作业执行,正在资源负载管控中。 wait global queue 等待作业执行,正在全局队列排队。 wait respool queue 等待作业执行,正在资源池上排队。 wait ccn queue 等待作业执行,正在中心协调节点(CCN)中排队。 gtm connect 等待与GTM建连。 gtm get gxid 等待从GTM获取事务xid。 gtm get snapshot 等待从GTM获取事务快照snapshot。 gtm begin trans 等待GTM开始事务。 gtm commit trans 等待GTM提交事务。 gtm rollback trans 等待GTM执行事务回滚。 gtm create sequence 等待GTM创建sequence。 gtm alter sequence 等待GTM修改sequence。 gtm get sequence val 等待从GTM获取sequence的下一个值。 gtm set sequence val 等待GTM设置sequence的值。 gtm drop sequence 等待GTM删除sequence。 gtm rename sequece 等待GTM重命名sequence。 analyze: [relname], [phase] 当前正在对表relname执行analyze。如果状态包含phase信息,则为autovacuum,表示是数据库自动开启AutoVacuum线程执行的analyze分析操作。 vacuum: [relname], [phase] 当前正在对表relname执行vacuum。如果状态包含phase信息,则为autovacuum,表示是数据库自动开启AutoVacuum线程执行的vacuum清理操作。 vacuum full: [relname] 当前正在对表relname执行vacuum full清理。 create index 当前正在创建索引。 HashJoin - [ build hash | write file ] 当前是HashJoin算子,主要关注耗时的执行阶段。 build hash:表示当前HashJoin算子正在建立哈希表。 write file:表示当前HashJoin算子正在将数据写入磁盘。 HashAgg - [ build hash | write file ] 当前是HashAgg算子,主要关注耗时的执行阶段。 build hash:表示当前HashAgg算子正在建立哈希表。 write file:表示当前HashAgg算子正在将数据写入磁盘。 HashSetop - [build hash | write file ] 当前是HashSetop算子,主要关注耗时的执行阶段。 build hash:表示当前HashSetop算子正在建立哈希表。 write file:表示当前HashSetop算子正在将数据写入磁盘。 Sort | Sort - write file 当前是Sort算子做排序,write file表示Sort算子正在将数据写入磁盘。 Material | Material - write file 当前是Material算子,write file表示Material算子正在将数据写入磁盘。 wait sync consumer next step Consumer接收端同步等待下一轮迭代。 wait sync producer next step Producer发送端同步等待下一轮迭代。 wait agent release 正在释放当前agent(8.1.2及以上版本支持)。 wait stream task stream线程等待被复用(8.1.2及以上版本支持)。 当wait_status为acquire lwlock、acquire lock或者wait io时,表示有等待事件。正在等待获取wait_event列对应类型的轻量级锁、事务锁,或者正在进行IO。 其中,wait_status值为acquire lwlock(轻量级锁)时对应的wait_event等待事件类型与描述信息如下。(wait_event为extension时,表示此时的轻量级锁是动态分配的锁,未被监控。) 表3 轻量级锁等待事件列表 wait_event类型 类型描述 ShmemIndexLock 用于保护共享内存中的主索引哈希表。 OidGenLock 用于避免不同线程产生相同的OID。 XidGenLock 用于避免两个事务获得相同的xid。 ProcArrayLock 用于避免并发访问或修改ProcArray共享数组。 SInvalReadLock 用于避免与清理失效消息并发执行。 SInvalWriteLock 用于避免与其它写失效消息、清理失效消息并发执行。 WALInsertLock 用于避免与其它WAL插入操作并发执行。 WALWriteLock 用于避免并发WAL写盘。 ControlFileLock 用于避免pg_control文件的读写并发、写写并发。 CheckpointLock 用于避免多个checkpoint并发执行。 CLogControlLock 用于避免并发访问或者修改Clog控制数据结构。 MultiXactGenLock 用于串行分配唯一MultiXact id。 MultiXactOffsetControlLock 用于避免对pg_multixact/offset的写写并发和读写并发。 MultiXactMemberControlLock 用于避免对pg_multixact/members的写写并发和读写并发。 RelCacheInitLock 用于失效消息场景对init文件进行操作时加锁。 CheckpointerCommLock 用于向checkpointer发起文件刷盘请求场景,需要串行的向请求队列插入请求结构。 TwoPhaseStateLock 用于避免并发访问或者修改两阶段信息共享数组。 TablespaceCreateLock 用于确定tablespace是否已经存在。 BtreeVacuumLock 用于防止vacuum清理B-tree中还在使用的页面。 AutovacuumLock 用于串行化访问autovacuum worker数组。 AutovacuumScheduleLock 用于串行化分配需要vacuum的table。 SyncScanLock 用于确定heap扫描时某个relfilenode的起始位置。 NodeTableLock 用于保护存放CN和DN节点信息的共享结构。 PoolerLock 用于保证两个线程不会同时从连接池里取到相同的连接。 RelationMappingLock 用于等待更新系统表到存储位置之间映射的文件。 AsyncCtlLock 用于避免并发访问或者修改共享通知状态。 AsyncQueueLock 用于避免并发访问或者修改共享通知信息队列。 SerializableXactHashLock 用于避免对于可串行事务共享结构的写写并发和读写并发。 SerializableFinishedListLock 用于避免对于已完成可串行事务共享链表的写写并发和读写并发。 SerializablePredicateLockListLock 用于保护对于可串行事务持有的锁链表。 OldSerXidLock 用于保护记录冲突可串行事务的结构。 FileStatLock 用于保护存储统计文件信息的数据结构。 SyncRepLock 用于在主备复制时保护xlog同步信息。 DataSyncRepLock 用于在主备复制时保护数据页同步信息。 CS toreColspaceCacheLock 用于保护列存表的CU空间分配。 CStoreCUCacheSweepLock 用于列存CU Cache循环淘汰。 MetaCacheSweepLock 用于元数据循环淘汰。 DfsConnectorCacheLock 用于保护缓存HDFS连接的句柄的全局哈希表。 dummyServerInfoCacheLock 用于保护缓存加速集群连接信息的全局哈希表。 ExtensionConnectorLibLock 用于初始化ODBC连接场景,在加载与卸载特定动态库时进行加锁。 SearchServerLibLock 用于GPU加速场景初始化加载特定动态库时,对读文件操作进行加锁。 DfsUserLoginLock 用于保护HDFS用户信息的全局链表。 DfsSpaceCacheLock 用于控制HDFS表导入时文件ID单调递增。 LsnXlogChkFileLock 用于串行更新特定结构中记录的主备机的xlog flush位置点。 GTMHostInfoLock 用于避免并发访问或者修改GTM主机信息。 ReplicationSlotAllocationLock 用于主备复制时保护主机端的流复制槽的分配。 ReplicationSlotControlLock 用于主备复制时避免并发更新流复制槽状态。 ResourcePoolHashLock 用于避免并发访问或者修改资源池哈希表。 WorkloadStatHashLock 用于避免并发访问或者修改包含CN侧的SQL请求构成的哈希表。 WorkloadIoStatHashLock 用于避免并发访问或者修改用于统计当前DN的IO信息的哈希表。 WorkloadCGroupHashLock 用于避免并发访问或者修改Cgroup信息构成的哈希表。 OBSGetPathLock 用于避免对obs路径的写写并发和读写并发。 WorkloadUserInfoLock 用于避免并发访问或修改负载管理的用户信息哈希表。 WorkloadRecordLock 用于避免并发访问或修改在内存自适应管理时对CN收到请求构成的哈希表。 WorkloadIOUtilLock 用于保护记录iostat,CPU等负载信息的结构。 WorkloadNodeGroupLock 用于避免并发访问或者修改内存中的nodegroup信息构成的哈希表。 JobShmemLock 用于MPP兼容ORACLE定时任务功能中保护定时读取的全局变量。 OBSRuntimeLock 用于获取环境变量,如GAUSSHOME。 LLVMDumpIRLock 用于导出动态生成函数所对应的汇编语言。 LLVMParseIRLock 用于在查询开始处从IR文件中编译并解析已写好的IR函数。 RPNumberLock 用于加速集群的DN对正在执行计划的任务线程的计数。 ClusterRPLock 用于加速集群的CCN中维护的集群负载数据的并发存取控制。 CriticalCacheBuildLock 用于从共享或者本地缓存初始化文件中加载cache的场景。 WaitCountHashLock 用于保护用户语句计数功能场景中的共享结构。 BufMappingLock 用于保护对共享缓冲映射表的操作。 LockMgrLock 用于保护常规锁结构信息。 PredicateLockMgrLock 用于保护可串行事务锁结构信息。 OperatorRealTLock 用于避免并发访问或者修改记录算子级实时数据的全局结构。 OperatorHistLock 用于避免并发访问或者修改记录算子级历史数据的全局结构。 SessionRealTLock 用于避免并发访问或者修改记录query级实时数据的全局结构。 SessionHistLock 用于避免并发访问或者修改记录query级历史数据的全局结构。 CacheSlotMappingLock 用于保护CU Cache全局信息。 BarrierLock 用于保证当前只有一个线程在创建Barrier。 当wait_status值为wait io时对应的wait_event等待事件类型与描述信息如下。 表4 IO等待事件列表 wait_event类型 类型描述 BufFileRead 从临时文件中读取数据到指定buffer。 BufFileWrite 向临时文件中写入指定buffer中的内容。 ControlFileRead 读取pg_control文件。主要在数据库启动、执行checkpoint和主备校验过程中发生。 ControlFileSync 将pg_control文件持久化到磁盘。数据库初始化时发生。 ControlFileSyncUpdate 将pg_control文件持久化到磁盘。主要在数据库启动、执行checkpoint和主备校验过程中发生。 ControlFileWrite 写入pg_control文件。数据库初始化时发生。 ControlFileWriteUpdate 更新pg_control文件。主要在数据库启动、执行checkpoint和主备校验过程中发生。 CopyFileRead copy文件时读取文件内容。 CopyFileWrite copy文件时写入文件内容。 DataFileExtend 扩展文件时向文件写入内容。 DataFileFlush 将表数据文件持久化到磁盘 DataFileImmediateSync 将表数据文件立即持久化到磁盘。 DataFilePrefetch 异步读取表数据文件。 DataFileRead 同步读取表数据文件。 DataFileSync 将表数据文件的修改持久化到磁盘。 DataFileTruncate 表数据文件truncate。 DataFileWrite 向表数据文件写入内容。 LockFileAddToDataDirRead 读取"postmaster.pid"文件。 LockFileAddToDataDirSync 将"postmaster.pid"内容持久化到磁盘。 LockFileAddToDataDirWrite 将pid信息写到"postmaster.pid"文件。 LockFileCreateRead 读取LockFile文件"%s.lock"。 LockFileCreateSync 将LockFile文件"%s.lock"内容持久化到磁盘。 LockFileCreateWRITE 将pid信息写到LockFile文件"%s.lock"。 RelationMapRead 读取系统表到存储位置之间的映射文件 RelationMapSync 将系统表到存储位置之间的映射文件持久化到磁盘。 RelationMapWrite 写入系统表到存储位置之间的映射文件。 ReplicationSlotRead 读取流复制槽文件。重新启动时发生。 ReplicationSlotRestoreSync 将流复制槽文件持久化到磁盘。重新启动时发生。 ReplicationSlotSync checkpoint时将流复制槽临时文件持久化到磁盘。 ReplicationSlotWrite checkpoint时写流复制槽临时文件。 SLRUFlushSync 将pg_clog、pg_subtrans和pg_multixact文件持久化到磁盘。主要在执行checkpoint和数据库停机时发生。 SLRURead 读取pg_clog、pg_subtrans和pg_multixact文件。 SLRUSync 将脏页写入文件pg_clog、pg_subtrans和pg_multixact并持久化到磁盘。主要在执行checkpoint和数据库停机时发生。 SLRUWrite 写入pg_clog、pg_subtrans和pg_multixact文件。 TimelineHistoryRead 读取timeline history文件。在数据库启动时发生。 TimelineHistorySync 将timeline history文件持久化到磁盘。在数据库启动时发生。 TimelineHistoryWrite 写入timeline history文件。在数据库启动时发生。 TwophaseFileRead 读取pg_twophase文件。在两阶段事务提交、两阶段事务恢复时发生。 TwophaseFileSync 将pg_twophase文件持久化到磁盘。在两阶段事务提交、两阶段事务恢复时发生。 TwophaseFileWrite 写入pg_twophase文件。在两阶段事务提交、两阶段事务恢复时发生。 WALBootstrapSync 将初始化的WAL文件持久化到磁盘。在数据库初始化发生。 WALBootstrapWrite 写入初始化的WAL文件。在数据库初始化发生。 WALCopyRead 读取已存在的WAL文件并进行复制时产生的读操作。在执行归档恢复完后发生。 WALCopySync 将复制的WAL文件持久化到磁盘。在执行归档恢复完后发生。 WALCopyWrite 读取已存在WAL文件并进行复制时产生的写操作。在执行归档恢复完后发生。 WALInitSync 将新初始化的WAL文件持久化磁盘。在日志回收或写日志时发生。 WALInitWrite 将新创建的WAL文件初始化为0。在日志回收或写日志时发生。 WALRead 从xlog日志读取数据。两阶段文件redo相关的操作产生。 WALSyncMethodAssign 将当前打开的所有WAL文件持久化到磁盘。 WALWrite 写入WAL文件。 当wait_status值为acquire lock(事务锁)时对应的wait_event等待事件类型与描述信息如下。 表5 事务锁等待事件列表 wait_event类型 类型描述 relation 对表加锁。 extend 对表扩展空间时加锁。 partition 对分区表加锁。 partition_seq 对分区表的分区加锁。 page 对表页面加锁。 tuple 对页面上的tuple加锁。 transactionid 对事务ID加锁。 virtualxid 对虚拟事务ID加锁。 object 加对象锁。 cstore_freespace 对列存空闲空间加锁。 userlock 加用户锁。 advisory 加advisory锁。 父主题: 系统视图
  • PG_AUTH_HISTORY PG_AUTH_HISTORY系统表记录了角色的认证历史。需要有系统管理员权限才可以访问此系统表。 表1 PG_AUTH_HISTORY字段 名称 类型 描述 roloid oid 角色标识。 passwordtime timestamp with time zone 创建和修改密码的时间。 rolpassword text 角色密码,使用MD5、SHA256加密或者不加密。 父主题: 系统表
  • PG_NAMESPACE PG_NAMESPACE系统表存储命名空间,即存储schema相关的信息。 表1 PG_NAMESPACE字段 名称 类型 描述 nspname name 命名空间的名称。 nspowner oid 命名空间的所有者。 nsptimeline bigint 在DN上创建此命名空间时的时间线。此字段为内部使用,仅在DN上有效。 nspacl aclitem[] 访问权限。具体请参见GRANT和REVOKE。 permspace bigint schema永久表空间限额。 usedspace bigint schema已用永久表空间大小。 父主题: 系统表
  • GS_SQL_COUNT GS_SQL_COUNT视图显示数据库当前节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)统计信息,包括执行次数和响应时间(除MERGE INTO语句外,统计其他四类语句的最大、最小、平均和总响应时间,单位为微秒),以及DDL、DML、DCL类型语句的执行次数。 GS_SQL_COUNT视图中对DDL、DML、DCL类型语句分类与SQL语法中略有不同,具体如下: CREATE/ALTER/DROP USER,CREATE/ALTER/DROP ROLE等用户相关语句属于DCL类型。 BEGIN/COMMIT/SET CONSTRAINTS/ROLLBACK/SAVEPOINT/START等事务相关语句属于DCL类型。 ALTER SYSTEM KILL SESSION等价于SELECT pg_terminate_backend()语句,属于DML类型。 其余语句的分类与SQL语法中定义类似。 普通用户查询GS_SQL_COUNT视图仅能看到该用户当前节点的统计信息。管理员权限用户查询GS_SQL_COUNT视图则能看到所有用户当前节点的统计信息;当集群或该节点重启时,计数会清零,并重新开始计数 。计数以节点收到的查询数为准,包括集群内部进行的查询;GS_SQL_COUNT视图涉及的统计信息只在CN上统计,且不统计从其他CN发送过来的SQL。在DN上查询该视图返回结果为空。 表1 GS_SQL_COUNT字段 名称 类型 描述 node_name name 节点名称。 user_name name 用户名。 select_count bigint SELECT数量。 update_count bigint UPDATE数量。 insert_count bigint INSERT数量。 delete_count bigint DELETE数量。 mergeinto_count bigint MERGE INTO数量。 ddl_count bigint DDL数量。 dml_count bigint DML数量。 dcl_count bigint DCL数量。 total_select_elapse bigint SELECT总响应时间。 avg_select_elapse bigint SELECT平均响应时间。 max_select_elapse bigint SELECT最大响应时间。 min_select_elapse bigint SELECT最小响应时间。 total_update_elapse bigint UPDATE总响应时间。 avg_update_elapse bigint UPDATE平均响应时间。 max_update_elapse bigint UPDATE最大响应时间。 min_update_elapse bigint UPDATE最小响应时间。 total_delete_elapse bigint DELETE总响应时间。 avg_delete_elapse bigint DELETE平均响应时间。 max_delete_elapse bigint DELETE最大响应时间。 min_delete_elapse bigint DELETE最小响应时间。 total_insert_elapse bigint INSERT总响应时间。 avg_insert_elapse bigint INSERT平均响应时间。 max_insert_elapse bigint INSERT最大响应时间。 min_insert_elapse bigint INSERT最小响应时间。 父主题: 系统视图
  • PG_TABLESPACE PG_TABLESPACE系统表存储表空间信息。 表1 PG_TABLESPACE字段 名称 类型 描述 spcname name 表空间名。 spcowner oid 表空间的所有者,通常是其创建者。 spcacl aclitem[] 访问权限。具体请参见GRANT和REVOKE。 spcoptions text[] 表空间的选项。 spcmaxsize text 可使用的最大磁盘空间大小,单位Byte。 父主题: 系统表
  • PG_STAT_DATABASE PG_STAT_DATABASE视图显示当前节点上每个数据库的状态和统计信息。 表1 PG_STAT_DATABASE字段 名称 类型 描述 datid oid 数据库OID。 datname name 数据库名。 numbackends integer 当前节点上连接到该数据库的后端数。 这是该视图中唯一一个反映目前状态值的列;所有列均返回自上次重置以来的累积值。 xact_commit bigint 当前节点上该数据库中已经提交的事务数。 xact_rollback bigint 当前节点上该数据库中已经回滚的事务数。 blks_read bigint 当前节点上该数据库中读取的磁盘块的数量。 blks_hit bigint 当前节点上高速缓存中发现的磁盘块的个数,即缓存中命中的块数(只包括 GaussDB (DWS)缓冲区高速缓存,不包括文件系统的缓存)。 tup_returned bigint 当前节点上该数据库查询返回的行数。 tup_fetched bigint 当前节点上该数据库查询抓取的行数。 tup_inserted bigint 当前节点上该数据库插入的行数。 tup_updated bigint 当前节点上该数据库更新的行数。 tup_deleted bigint 当前节点上该数据库删除的行数。 conflicts bigint 当前节点上由于数据库恢复冲突取消的查询数量(只在备用服务器上发生)。可参见PG_STAT_DATABASE_CONFLI CTS 。 temp_files bigint 当前节点上该数据库创建的临时文件个数。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不考虑log_temp_files设置。 temp_bytes bigint 当前节点上该数据库写入临时文件的大小。计算所有临时文件,不论为什么创建临时文件,而且不考虑log_temp_files设置。 deadlocks bigint 当前节点上该数据库中发生的死锁数量。 blk_read_time double precision 当前节点上该数据库后端读取数据文件块花费的时间,以毫秒计算。 blk_write_time double precision 当前节点上该数据库后端写入数据文件块花费的时间,以毫秒计算。 stats_reset timestamp with time zone 当前节点上该数据库统计重置的时间。 父主题: 系统视图
  • PG_COMM_STATUS PG_COMM_STATUS视图展示单个DN的通信库状态。 表1 PG_COMM_STATUS字段 名称 类型 描述 node_name text 节点名称。 rxpck/s integer 节点通信库接收速率,单位Byte/s。 txpck/s integer 节点通信库发送速率,单位Byte/s。 rxkB/s bigint 节点通信库接收速率,单位KByte/s。 txkB/s bigint 节点通信库发送速率,单位KByte/s。 buffer bigint cmailbox的buffer大小。 memKB(libcomm) bigint libcomm进程通信内存大小,单位KByte。 memKB(libpq) bigint libpq进程通信内存大小,单位KByte。 %USED(PM) integer postmaster线程实时使用率。 %USED (sflow) integer gs_sender_flow_controller线程实时使用率。 %USED (rflow) integer gs_receiver_flow_controller线程实时使用率。 %USED (rloop) integer 多个gs_receivers_loop线程中最高的实时使用率。 stream integer 当前使用的逻辑连接总数。 父主题: 系统视图
  • 查看GUC参数 GaussDB(DWS)的GUC参数影响数据库的系统行为,用户可根据业务场景和数据量查看并调整GUC参数取值。 查看GUC参数方式一:集群创建成功后,用户可在GaussDB(DWS) 管理控制台上查看常用的数据库参数。 查看GUC参数方式二:成功连接集群后,通过SQL命令的方式查看数据库GUC参数。 使用SHOW命令。 方式二只能查CN的GUC参数值,DN的GUC参数值可通过方式一:通过管理控制台查看。 使用如下命令查看单个参数: 1 SHOW server_version; server_version显示数据库版本信息的参数。 使用如下命令查看所有参数: 1 SHOW ALL; 使用pg_settings视图。 使用如下命令查看单个参数: 1 SELECT * FROM pg_settings WHERE NAME='server_version'; 使用如下命令查看所有参数: 1 SELECT * FROM pg_settings; 父主题: GUC参数
  • FORALL批量查询语句 语法图 图5 forall::= 变量index会自动定义为integer类型并且只在此循环里存在。index的取值介于low_bound和upper_bound之间。 示例 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 CREATE TABLE hdfs_t1 ( title NUMBER(6), did VARCHAR2(20), data_peroid VARCHAR2(25), kind VARCHAR2(25), interval VARCHAR2(20), time DATE, isModified VARCHAR2(10) ) DISTRIBUTE BY hash(did); INSERT INTO hdfs_t1 VALUES( 8, 'Donald', 'OConnell', 'DOCONNEL', '650.507.9833', to_date('21-06-1999', 'dd-mm-yyyy'), 'SH_CLERK' ); CREATE OR REPLACE PROCEDURE proc_forall() AS BEGIN FORALL i IN 100..120 insert into hdfs_t1(title) values(i); END; / --调用函数 CALL proc_forall(); --查询存储过程调用结果 SELECT * FROM hdfs_t1 WHERE title BETWEEN 100 AND 120; --删除存储过程和表 DROP PROCEDURE proc_forall; DROP TABLE hdfs_t1;
  • FOR_LOOP(integer变量)语句 语法图 图3 for_loop::= 变量name会自动定义为integer类型并且只在此循环里存在。变量name介于lower_bound和upper_bound之间。 当使用REVERSE关键字时,lower_bound必须大于等于upper_bound,否则循环体不会被执行。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 --从0到5进行循环 CREATE OR REPLACE PROCEDURE proc_for_loop() AS BEGIN FOR I IN 0..5 LOOP DBMS_OUTPUT.PUT_LINE('It is '||to_char(I) || ' time;') ; END LOOP; END; / --调用函数 CALL proc_for_loop(); --删除存储过程 DROP PROCEDURE proc_for_loop;
  • FOR_LOOP查询语句 语法图 图4 for_loop_query::= 变量target会自动定义,类型和query的查询结果的类型一致,并且只在此循环中有效。target的取值就是query的查询结果。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 --循环输出查询结果。 CREATE OR REPLACE PROCEDURE proc_for_loop_query() AS record VARCHAR2(50); BEGIN FOR record IN SELECT spcname FROM pg_tablespace LOOP dbms_output.put_line(record); END LOOP; END; / --调用函数 CALL proc_for_loop_query(); --删除存储过程 DROP PROCEDURE proc_for_loop_query;
  • 配置集群参数 查询TopSQL资源监控信息之前,需要先配置相关的GUC参数,以便能查询到作业的资源监控历史信息或归档信息。步骤如下: 登录GaussDB(DWS)管理控制台。 在“集群管理”页面,找到所需要的集群,单击集群名称,进入集群详情页面。 单击“参数修改”标签页,可以看到当前集群的参数值。 修改参数resource_track_duration值为合适的值,单击“保存”按钮进行保存。 enable_resource_record开关打开后,会引起存储空间膨胀及轻微性能影响,不用时请关闭。 返回集群管理页面,单击右上角的刷新按钮,等待集群参数配置完成。
  • DBA_PROCEDURES DBA_PROCEDURES视图存储关于数据库下的所有存储过程或函数信息。需要有系统管理员权限才可以访问。 名称 类型 描述 owner character varying(64) 存储过程或函数的所有者。 object_name character varying(64) 存储过程或函数名称。 argument_number smallint 存储过程入参个数。 父主题: 系统视图
  • PLAN_TABLE_DATA PLAN_TABLE_DATA系统表存储了用户通过执行EXPLAIN PLAN收集到的计划信息。与PLAN_TABLE视图不同的是PLAN_TABLE_DATA表存储了所有session和user执行EXPLAIN PLAN收集的计划信息。 表1 PLAN_TABLE字段 名称 类型 描述 session_id text 表示插入该条数据的会话,由服务线程启动时间戳和服务线程ID组成。受非空约束限制。 user_id oid 用户ID,用于标识触发插入该条数据的用户。受非空约束限制。 statement_id varchar2(30) 用户输入的查询标签。 plan_id bigint 查询标识。 id int 计划中的节点编号。 operation varchar2(30) 操作描述。 options varchar2(255) 操作选项。 object_name name 操作对应的对象名,来自于用户定义。 object_type varchar2(30) 对象类型。 object_owner name 对象所属schema,来自于用户定义。 projection varchar2(4000) 操作输出的列信息。 PLAN_TABLE_DATA中包含了当前节点所有用户、所有会话的数据,仅管理员有访问权限。普通用户可以通过PLAN_TABLE视图查看属于自己的数据。 对于不活跃(已退出)的会话,其在PLAN_TABLE_DATA中的数据会在一定时间(默认5min)后被gs_clean清理。用户也可以手动执行gs_clean -C选项对表中不活跃的会话数据进行清理。 PLAN_TABLE_DATA中的数据是用户通过执行EXPLAIN PLAN命令后由系统自动插入表中,因此禁止用户手动对数据进行插入或更新,否则会引起表中的数据混乱。需要对表中数据删除时,建议通过PLAN_TABLE视图。 statement_id、object_name、object_owner和projection字段内容遵循用户定义的大小写存储,其它字段内容采用大写存储。 父主题: 系统表
  • PostGIS概述 PostGIS Extension依赖的第三方软件需要用户进行单独安装,用户如需使用PostGIS功能,请提交工单或联系技术支持人员提交申请。 如果用户在使用中出现“ERROR:EXTENSION is not yet supported.”这种报错,则表示没有安装PostGIS软件包,请联系技术支持进行获取。 GaussDB(DWS)提供PostGIS Extension(版本为PostGIS-2.4.2和PostGIS-3.2.2)。PostGIS Extension是PostgreSQL的空间数据库扩展,提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。PostGIS Extension完全遵循OpenGIS规范。 GaussDB(DWS)中PostGIS Extension依赖第三方开源软件如下。 PostGIS 2.4.2依赖第三方开源软件: Geos 3.6.2 Proj 4.9.2 Json 0.12.1 Libxml2 2.7.1 Gdal 1.11.0 PostGIS 3.2.2依赖第三方开源软件: Geos-3.11.0 Proj-6.0.0 Json 0.12.1 Libxml2 2.7.1 Sqlite3 protobuf-c 1.4.1 protobuf 3.6.1 父主题: PostGIS Extension
  • 删除表数据 在使用表的过程中,可能需要删除已过期的数据,删除数据必须从表中整行的删除。 SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件进行。如果表中有一个主键,用户可以指定准确的行。用户可以删除匹配条件的一组行或者一次删除表中的所有行。 使用DELETE命令删除行,如果删除表customer_t1中所有c_customer_sk为3869的记录: 1 DELETE FROM customer_t1 WHERE c_customer_sk = 3869; 如果执行如下命令,会删除表中所有的行。 1 DELETE FROM customer_t1; 1 TRUNCATE TABLE customer_t1; 全表删除的场景下,建议使用truncate,不建议使用delete。进行大批量删除操作,truncate的删除速度比delete快得多。 删除创建的表。 1 DROP TABLE customer_t1;
  • 表分布的定义 GaussDB(DWS)支持的分布方式:复制表(Replication)、哈希表(Hash)和轮询表(Roundrobin)。 轮询表(Roundrobin)分布方式仅8.1.2及以上集群版支持。 策略 描述 适用场景 优势与劣势 复制表(Replication) 集群中每一个DN实例上都有一份全量表数据。 小表、维度表。 Replication优点是每个DN上都有此表的全量数据,在join操作中可以避免数据重分布操作,从而减小网络开销,同时减少了plan segment(每个plan segment都会起对应的线程) Replication缺点是每个DN都保留了表的完整数据,造成数据的冗余。一般情况下只有较小的维度表才会定义为Replication表。 哈希表(Hash) 表数据通过hash方式散列到集群中的所有DN实例上。 数据量较大的事实表。 在读/写数据时可以利用各个节点的IO资源,大幅度提升表的读/写速度。 一般情况下大表(1000000条记录以上)定义为Hash表。 轮询表(Roundrobin) 表的每一行被轮番地发送给各个DN,数据会被均匀地分布在各个DN中。 数据量较大的事实表,且使用Hash分布时找不到合适的分布列。 Roundrobin优点是保证了数据不会发生倾斜,从而提高了集群的空间利用率。 Roundrobin缺点是无法像Hash表一样进行DN本地化优化,查询性能通常不如Hash表。 一般在大表无法找到合适的分布列时,定义为Roundrobin表,若大表能够找到合适的分布列,优先选择性能更好的Hash分布。
  • 查看表数据 使用系统表pg_tables查询数据库所有表的信息。 1 SELECT * FROM pg_tables; 使用gsql的\d+命令查询表的属性。 1 \d+ customer_t1; 执行如下命令查询表customer_t1的数据量。 1 SELECT count(*) FROM customer_t1; 执行如下命令查询表customer_t1的所有数据。 1 SELECT * FROM customer_t1; 执行如下命令只查询字段c_customer_sk的数据。 1 SELECT c_customer_sk FROM customer_t1; 执行如下命令过滤字段c_customer_sk的重复数据。 1 SELECT DISTINCT( c_customer_sk ) FROM customer_t1; 执行如下命令查询字段c_customer_sk为3869的所有数据。 1 SELECT * FROM customer_t1 WHERE c_customer_sk = 3869; 执行如下命令按照字段c_customer_sk进行排序。 1 SELECT * FROM customer_t1 ORDER BY c_customer_sk;
  • 管理UN LOG GED表 UNLOGGED表即非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是非日志表在冲突、执行操作系统重启、强制重启、切断电源操作或异常关机后会被自动清理,会造成数据丢失的风险。非日志表中的内容也不会被复制到备服务器中。在非日志表中创建的索引也不会被自动记录。 使用场景:非日志表不能保证数据的安全性,需要在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。在创建非日志表时应将cnretry关闭(即设置GUC参数max_query_retry_times=0)。 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 9.1.0版本后,UNLOGGED表默认存储在pg_unlogged表空间下,且不可迁移或指定到其他表空间。 从低版本升级到9.1.0版本后,旧版本创建的UNLOGGED表还存储在原表空间下。 9.1.0版本提供UNLOGGED表迁移脚本switch_unlogged_tablepace.py,配合GUC参数enable_unlogged_tablespace_compat,可以优化RTO。 脚本位于/opt/huawei/wisequery/script目录,可以通过-?获取帮助信息。 迁移所有UNLOGGED表(建议) 1 python3 switch_unlogged_tablepace.py -t switch 3. 迁移成功后,GUC参数enable_unlogged_tablespace_compat会自动设置为off。 建议在升级到9.1.0版本后通过以下两步操作提升实例重启RTO: 使用switch_unlogged_tablespace.py脚本将UNLOGGED表全部迁移到pg_unlogged表空间。 如果旧版本没有使用UNLOGGED表,建议将GUC参数enable_unlogged_tablespace_compat设置为OFF。
  • 应用示例 查询当前用户下指定表的约束信息。t1替换为实际的表名。 1 2 3 4 5 SELECT * FROM USER_CONSTRAINTS WHERE table_name='t1'; constraint_name | constraint_type | table_name | index_owner | index_name -----------------+-----------------+------------+-------------+--------------- c_custkey_key | p | t1 | u1 | c_custkey_key (1 row)
  • effective_cache_size 参数说明:设置优化器在一次单一的查询中可用的磁盘缓冲区的有效大小。 设置这个参数,还要考虑GaussDB(DWS)的共享缓冲区以及内核的磁盘缓冲区。另外,还要考虑预计的在不同表之间的并发查询数目,因为它们将共享可用的空间。 这个参数对GaussDB(DWS)分配的共享内存大小没有影响,它也不会使用内核磁盘缓冲,它只用于估算。数值是用磁盘页来计算的,通常每个页面是8192字节。 参数类型:USERSET 取值范围:整型,1~INT_MAX,单位为8KB。 比默认值高的数值可能会导致使用索引扫描,更低的数值可能会导致选择顺序扫描。 默认值:128MB
  • random_page_cost 参数说明:设置优化器计算一次非顺序抓取磁盘页面的开销。 参数类型:USERSET 取值范围:浮点型,0~10000。 默认值:4 虽然服务器允许将random_page_cost设置的比seq_page_cost小,但是物理上实际不受影响。如果所有数据库都位于随机访问内存中时,两者设置为相等很合理。因为在此种情况下,非顺序抓取页并没有副作用。同样,在缓冲率很高的数据库上,应该相对于CPU参数同时降低这两个值,因为获取内存中的页要比通常情况下开销小很多。 对于特别表空间中的表和索引,可以通过设置同名的表空间的参数来覆盖这个值。 相对于seq_page_cost,减少这个值将导致系统更倾向于使用索引扫描,而增加这个值使得索引扫描开销比较高。可以通过同时增加或减少这两个值来调整磁盘I/O相对于CPU的开销。
  • SNAPSHOT SNAPSHOT系统表记录每次创建性能视图快照的起止时间,设置enable_wdr_snapshot为on后,该表由后台快照线程创建并维护。需要有系统管理员权限才可以访问此系统表。 表1 dbms_om.snapshot字段 名称 类型 描述 snapshot_id name 快照ID(此字段为主键和分布键)。 start_ts timestamp with time zone 快照开始时间。 end_ts timestamp with time zone 快照结束时间。 此系统表的schema是dbms_om。 禁止从外部修改或删除此表,否则可能引起视图快照相关功能异常。 父主题: 系统表
  • PG_DESCRIPTION PG_DESCRIPTION系统表可以给每个数据库对象存储一个可选的描述(注释)。许多内置的系统对象的描述提供了PG_DESCRIPTION的初始内容。 这个表的功能类似PG_SHDESCRIPTION,用于记录整个集群范围内共享对象的注释。 表1 PG_DESCRIPTION字段 名称 类型 引用 描述 objoid oid 任意OID属性 描述所属对象的OID。 classoid oid PG_CLASS.oid 对象显示的系统表的OID。 objsubid integer - 对于一个表字段的注释,为字段号(objoid和classoid指向表自身)。对于其它对象类型,为0。 description text - 对该对象描述的任意文本。 父主题: 系统表
  • 存储过程 商业规则和业务逻辑可以通过程序存储在GaussDB(DWS)中,这个程序就是存储过程。 存储过程是SQL,PL/SQL,Java语句的组合。存储过程使执行商业规则的代码可以从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。 存储过程的创建及调用办法请参考CREATE PROCEDURE。 PL/pgSQL语言函数节所提到的PL/pgSQL语言创建的函数与存储过程的应用方法相通。下面各节中,除非特别声明,否则内容通用于存储过程和PL/pgSQL语言函数。 父主题: 存储过程
  • PG_COMM_RECV_STREAM PG_COMM_RECV_STREAM视图展示单个DN上所有的通信库接收流状态。 表1 PG_COMM_RECV_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编号。 recv_bytes bigint 通信流接收的数据总量,单位Byte。 time bigint 通信流当前生命周期使用时长,单位ms。 speed bigint 通信流的平均接收速率,单位Byte/s。 quota bigint 通信流当前的通信配额值,单位Byte。 buff_usize bigint 通信流当前缓存的数据大小,单位Byte。 父主题: 系统视图
  • PGXC_COMM_CLIENT_INFO PGXC_COMM_CLIENT_INFO视图存储所有节点客户端连接信息(DN上查询该视图显示CN连接DN的信息)。 表1 PGXC_COMM_CLIENT_INFO字段 名称 类型 描述 node_name text 当前节点的名称。 app text 客户端应用名。 tid bigint 当前线程的线程号。 lwtid integer 当前线程的轻量级线程号。 query_id bigint 查询ID,对应debug_query_id。 socket integer 如果是物理连接,展示socket。 remote_ip text 对端节点IP。 remote_port text 对端节点port。 logic_id integer 如果是逻辑连接,展示sid,显示-1时表示当前连接是物理连接。 父主题: 系统视图
  • PGXC_LOCK_CONFLICTS PGXC_LOCK_CONFLICTS视图提供集群中有冲突的锁的信息。 当某一个锁正在等待另一个锁,或正在被另一个锁等待,即该锁是有冲突的。 目前,PGXC_LOCK_CONFLICTS视图只收集locktype为relation、partition、page、tuple和transactionid的锁的信息。 表1 PGXC_LOCK_CONFLICTS字段 名称 类型 描述 locktype text 被锁定对象的类型。 nodename name 被锁定对象的节点的名称。 dbname name 被锁定对象的数据库的名称。如果被锁定对象是事务,则为NULL。 nspname name 被锁定对象的命名空间的名称。 relname name 被锁定对象对应的关系的名称。如果被锁定对象既不是关系,也不是关系的一部分,则为NULL。 partname name 被锁定对象对应的分区的名称。如果被锁定对象不是分区,则为NULL。 page integer 被锁定对象对应的页面的编号。如果被锁定对象既不是页面,也不是元组,则为NULL。 tuple smallint 被锁定对象对应的元组的编号。如果被锁定对象不是元组,则为NULL。 transactionid xid 被锁定对象对应的事务的ID。如果被锁定对象不是事务,则为NULL。 username name 申请锁的用户的名称。 gxid xid 申请锁的事务的ID。 xactstart timestamp with time zone 申请锁的事务的开始时间。 queryid bigint 申请锁的线程的最新查询ID。 query text 申请锁的线程的最新查询语句。 pid bigint 申请锁的线程的ID。 mode text 锁的级别。 granted boolean 如果锁已被持有,则为TRUE。 如果锁还在等待其它锁,则为FALSE。 父主题: 系统视图
共100000条