华为云用户手册

  • GLOBAL_STAT_DATABASE GLOBAL_STAT_DATABASE视图显示集群中所有节点上数据库的状态和统计信息之和。 CN上查询GLOBAL_STAT_DATABASE视图,返回的结果除stats_reset字段(当前CN上的状态重置时间)之外,其余字段表示在集群内相关节点上的数值之和。需注意,因GLOBAL_STAT_DATABASE视图中各字段的逻辑含义不同,求和的范围也有所不同。 在DN上查询视图GLOBAL_STAT_DATABASE,所得结果与表1相同。 表1 GLOBAL_STAT_DATABASE字段 名称 类型 描述 求和范围 datid oid 数据库OID。 - datname name 数据库名。 - numbackends integer 当前节点上连接到该数据库的后端数。 这是该视图中唯一一个反映目前状态值的列;所有列均返回自上次重置以来的累积值。 CN xact_commit bigint 当前节点上该数据库中已经提交的事务数。 CN xact_rollback bigint 当前节点上该数据库中已经回滚的事务数。 CN blks_read bigint 当前节点上该数据库中读取的磁盘块的数量。 DN blks_hit bigint 当前节点上高速缓存中发现的磁盘块的个数,即缓存中命中的块数(只包括 GaussDB (DWS)缓冲区高速缓存,不包括文件系统的缓存)。 DN tup_returned bigint 当前节点上该数据库查询返回的行数。 DN tup_fetched bigint 当前节点上该数据库查询抓取的行数。 DN tup_inserted bigint 当前节点上该数据库插入的行数。 DN tup_updated bigint 当前节点上该数据库更新的行数。 DN tup_deleted bigint 当前节点上该数据库删除的行数。 DN conflicts bigint 当前节点上由于数据库恢复冲突取消的查询数量(只在备用服务器上发生)。请参见PG_STAT_DATABASE_CONFLI CTS 获取更多信息。 CN和DN temp_files bigint 当前节点上该数据库创建的临时文件个数。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不考虑log_temp_files设置。 DN temp_bytes bigint 当前节点上该数据库写入临时文件的大小。计算所有临时文件,不论为什么创建临时文件,而且不考虑log_temp_files设置。 DN deadlocks bigint 当前节点上该数据库中发生的死锁数量。 CN和DN blk_read_time double precision 当前节点上该数据库后端读取数据文件块花费的时间,以毫秒计算。 DN blk_write_time double precision 当前节点上该数据库后端写入数据文件块花费的时间,以毫秒计算。 DN stats_reset timestamp with time zone 当前节点上该数据库统计重置的时间。 - 父主题: 系统视图
  • PG_AUTH_MEMBERS PG_AUTH_MEMBERS系统表存储显示角色之间的成员关系。 表1 PG_AUTH_MEMBERS字段 名称 类型 描述 roleid oid 拥有成员的角色ID member oid 属于ROLEID角色的成员角色ID grantor oid 赋予此成员关系的角色ID admin_option boolean 如果有权限可以把ROLEID角色的成员关系赋予其他角色,则为真 父主题: 系统表
  • build_backup_param 参数说明:控制增量build过程中用于磁盘备份的最小满足规格。 参数类型:SIGHUP 取值范围:字符串 默认值:(1%,1G,1G) 该参数只会影响增量build过程中是否生成pg_rewind_bak目录,字符串生效需要采用'x%,yG,zG'格式配置,gs_guc set设置有效值时该参数才有效,否则不生效。其中x代表最小剩余空间百分比,y代表最小剩余空间,z代表当前磁盘总容量。 当前build实例需同时满足以下两个条件才会进行build备份生产pg_rewind_bak,占用额外空间;不满足则不进行build备份,不占用额外空间。 条件一:当前磁盘总容量>= zG。如果不满足该条件则不进行备份;若满足该条件会继续对条件二进行判断。 条件二:磁盘剩余空间 >= yG且当前磁盘剩余空间百分比>= x%。
  • default_distribution_mode 参数说明:用于设置表的默认分布方式。该参数仅8.1.2及以上版本支持。 参数类型:USERSET 取值范围:枚举类型 roundrobin,创建表不指定分布方式时,按如下规则选取默认分布方式: 若建表时包含主键/唯一约束,则选取HASH分布,分布列为主键/唯一约束对应的列。 若建表时不包含主键/唯一约束,则选取ROUNDROBIN分布。 hash,创建表不指定分布方式时,按如下规则选取默认分布方式: 若建表时包含主键/唯一约束,则选取HASH分布,分布列为主键/唯一约束对应的列。 若建表时不包含主键/唯一约束,但存在数据类型支持作分布列的列,则选取HASH分布,分布列为第一个数据类型支持作分布列的列。 若建表时不包含主键/唯一约束,也不存在数据类型支持作分布列的列,选取ROUNDROBIN分布。 默认值:roundrobin 新建8.1.2集群版本默认值为roundrobin,升级到8.1.2集群版本场景该参数的默认值为hash。
  • enable_upgrade_merge_lock_mode 参数说明:当该参数设置为on时,通过提升deltamerge内部实现的锁级别,避免和update/delete并发操作时的报错。 参数类型:USERSET 取值范围: 布尔型 on,提升deltamerge内部实现的锁级别,并发执行deltamerge和update/delete操作时,一个操作先执行,另一个操作被阻塞,在前一个操作完成后,后一个操作再执行。 off,在对HDFS表的delta table的同一行并发执行deltamerge和update/delete操作时,后一个对同一行数据更新的操作会报错退出。 默认值:off
  • job_queue_processes 参数说明:表示系统可以并发执行的job数目。 参数类型:POSTMASTER 取值范围:0~1000 功能: 当job_queue_processes设置为0值,表示不启用定时任务功能,任何job都不会被执行(因为开启定时任务的功能会对系统的性能有影响,有些局点可能不需要定时任务的功能,可以通过设置为0不启用定时任务功能)。 当job_queue_processes为大于0时,表示启用定时任务功能且系统能够并发处理的最大任务数。 启用定时任务功能后,job_scheduler线程会在定时时间间隔轮询pg_jobs系统表,系统设置定时任务检查周期默认为1s。 由于并行运行的任务数太多会消耗更多的系统资源,因此需要设置系统并发处理的任务数,当前并发的任务数达到job_queue_processes时,且此时又有任务到期,那么这些任务本次得不到执行而延期到下一轮询周期。因此,建议用户需要根据每个任务的执行时长合理的设置任务的时间间隔(即submit接口中的interval参数),来避免由于任务执行时间太长而导致下个轮询周期无法正常执行。 注:如果同一时间内并行的job数很多,过小的参数值会导致job等待。而过大的参数值则消耗更多的系统资源,建议设置此参数为100,用户可以根据系统资源情况合理调整。 默认值:10
  • view_independent 参数说明:用于设置是否开启视图与表、函数、同义词的解耦功能。基表恢复后目前已支持自动关联重建。 参数类型:SIGHUP 取值范围:布尔型 on表示启用视图解耦功能,存在视图依赖的表、函数、同义词及其他视图可以单独删除(临时表及临时视图除外),关联视图保留但不可用。 off表示关闭视图解耦功能,存在视图依赖的表、函数、同义词及其他视图不可以单独删除,仅可使用cascade级联删除。 默认值: off
  • enable_hadoop_env 参数说明:设置使用Hadoop特性时,是否允许在数据库中创建本地行存表和列存表。GaussDB(DWS)集群中,集群安装好后,该参数默认设为off。以支持本地行列存储和跨集群访问Hadoop特性。不推荐用户调整enable_hadoop_env的值。 参数类型:USERSET 取值范围: 布尔型 on/true,表示使用Hadoop特性时,不允许在数据库中创建本地行存表和列存表。 off/false,表示使用Hadoop特性时,可以在数据库中创建本地行存表和列存表。 默认值:off
  • 示例:从MySQL向GaussDB(DWS)进行数据迁移 下面示例演示如何通过CopyManager从mysql向GaussDB(DWS)进行数据迁移的过程。 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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 //以下用例以gsjdbc4.jar为例,如果要使用gsjdbc200.jar,请替换驱动类名(将代码中的“org.postgresql”替换成“com.huawei.gauss200.jdbc”)与连接URL串前缀(将“jdbc:postgresql”替换为“jdbc:gaussdb”)。 import java.io.StringReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.postgresql.copy.CopyManager; import org.postgresql.core.BaseConnection; public class Migration{ public static void main(String[] args) { String url = new String("jdbc:postgresql://10.180.155.74:8000/gaussdb"); //数据库URL String user = new String("jack"); //DWS用户名 String pass = new String("********"); //DWS密码 String tablename = new String("migration_table"); //定义表信息 String delimiter = new String("|"); //定义分隔符 String encoding = new String("UTF8"); //定义字符集 String driver = "org.postgresql.Driver"; StringBuffer buffer = new StringBuffer(); //定义存放格式 化数据的缓存 try { //获取源数据库查询结果集 ResultSet rs = getDataSet(); //遍历结果集,逐行获取记录 //将每条记录中各字段值,按指定分隔符分割,由换行符结束,拼成一个字符串 //把拼成的字符串,添加到缓存buffer while (rs.next()) { buffer.append(rs.getString(1) + delimiter + rs.getString(2) + delimiter + rs.getString(3) + delimiter + rs.getString(4) + "\n"); } rs.close(); try { //建立目标数据库连接 Class.forName(driver); Connection conn = DriverManager.getConnection(url, user, pass); BaseConnection baseConn = (BaseConnection) conn; baseConn.setAutoCommit(false); //初始化表信息 String sql = "Copy " + tablename + " from STDIN DELIMITER " + "'" + delimiter + "'" + " ENCODING " + "'" + encoding + "'"; //提交缓存buffer中的数据 CopyManager cp = new CopyManager(baseConn); StringReader reader = new StringReader(buffer.toString()); cp.copyIn(sql, reader); baseConn.commit(); reader.close(); baseConn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(System.out); } catch (SQLException e) { e.printStackTrace(System.out); } } catch (Exception e) { e.printStackTrace(); } } //******************************** // 从源数据库返回查询结果集 //********************************* private static ResultSet getDataSet() { ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection conn = DriverManager.getConnection("jdbc:mysql://10.119.179.227:3306/jack?useSSL=false&allowPublicKeyRetrieval=true", "jack", "********"); Statement stmt = conn.createStatement(); rs = stmt.executeQuery("select * from migration_table"); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return rs; } } 父主题: 基于JDBC开发
  • PG_STAT_DATABASE_CONFLICTS PG_STAT_DATABASE_CONFLICTS视图显示数据库冲突状态的统计信息。 表1 PG_STAT_DATABASE_CONFLICTS字段 名称 类型 描述 datid oid 数据库OID datname name 数据库名 confl_tablespace bigint 冲突的表空间的数目 confl_lock bigint 冲突的锁数目 confl_snapshot bigint 冲突的快照数目 confl_bufferpin bigint 冲突的缓冲区数目 confl_deadlock bigint 冲突的死锁数目 父主题: 系统视图
  • MPP_TABLES MPP_TABLES视图显示PGXC_CLASS中的表信息。 表1 MPP_TABLES字段 名称 类型 描述 schemaname name 包含表的模式名。 tablename name 表名。 tableowner name 表的所有者。 tablespace name 表所在的表空间。 pgroup name 节点群的名称。 nodeoids oidvector_extend 表分布的节点OID列表。 父主题: 系统视图
  • 索引类型 btree:B-tree索引使用一种类似于B+树的结构来存储数据的键值,通过这种结构能够快速的查找索引。btree适合支持比较查询以及查询范围。 gin:GIN索引是倒排索引,可以处理包含多个键的值(比如数组)。 gist:Gist索引适用于几何和地理等多维数据类型和集合数据类型。 Psort:Psort索引。针对列存表进行局部排序索引。 行存表支持的索引类型:btree(行存表缺省值)、gin、gist。列存表支持的索引类型:Psort(列存表缺省值)、btree、gin。 对于点查询场景,推荐建立btree索引。
  • 索引的选择原则 索引建立在数据库表中的某些列上。因此,在创建索引时,应该仔细考虑在哪些列上创建索引。 在经常需要搜索查询的列上创建索引,可以加快搜索的速度。 在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构。 在经常使用连接的列上创建索引,这些列主要是一些外键,可以加快连接的速度。 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。 在经常使用WHERE子句的列上创建索引,加快条件的判断速度。 为经常出现在关键字ORDER BY、GROUP BY、DISTINCT后面的字段建立索引。 索引创建成功后,系统会自动判断何时引用索引。当系统认为使用索引比顺序扫描更快时,就会使用索引。 索引创建成功后,必须和表保持同步以保证能够准确地找到新数据,这样就增加了数据操作的负荷。因此请定期删除无用的索引
  • 常用方法 表1 CopyManager常用方法 返回值 方法 描述 throws CopyIn copyIn(String sql) - SQLException long copyIn(String sql, InputStream from) 使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。 SQLException,IOException long copyIn(String sql, InputStream from, int bufferSize) 使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。 SQLException,IOException long copyIn(String sql, Reader from) 使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。 SQLException,IOException long copyIn(String sql, Reader from, int bufferSize) 使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。 SQLException,IOException CopyOut copyOut(String sql) - SQLException long copyOut(String sql, OutputStream to) 将一个COPY TO STDOUT的结果集从数据库发送到OutputStream类中。 SQLException,IOException long copyOut(String sql, Writer to) 将一个COPY TO STDOUT的结果集从数据库发送到Writer类中。 SQLException,IOException
  • 定时任务管理 创建测试表: 1 CREATE TABLE test(id int, time date); 当结果显示为如下信息,则表示创建成功。 1 CREATE TABLE 创建自定义存储过程: 1 2 3 4 5 6 7 8 9 CREATE OR REPLACE PROCEDURE PRC_JOB_1() AS N_NUM integer :=1; BEGIN FOR I IN 1..1000 LOOP INSERT INTO test VALUES(I,SYSDATE); END LOOP; END; / 当结果显示为如下信息,则表示创建成功。 1 CREATE PROCEDURE 创建任务: 新创建的任务(未指定job_id)表示每隔1分钟执行一次存储过程PRC_JOB_1。 1 2 3 4 5 call dbms_job.submit('call public.prc_job_1(); ', sysdate, 'interval ''1 minute''', :a); job ----- 1 (1 row) 指定job_id创建任务。 1 2 3 4 5 call dbms_job.isubmit(2,'call public.prc_job_1(); ', sysdate, 'interval ''1 minute'''); isubmit --------- (1 row) 通过USER_JOBS视图查看当前用户已创建的任务信息。 需要有系统管理员权限才可以访问此系统视图,字段说明详见表1。 1 2 3 4 5 6 7 8 9 10 select job,dbname,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from user_jobs; job | dbname | start_date | last_date | this_date | next_date | broken | status | interval | failures | what -----+----------+----------------------------+----------------------------+----------------------------+---------------------+--------+--------+---------------------+----------+---------------- ----------- 1 | db_demo | 2022-03-25 07:58:01.829436 | 2022-03-25 07:58:03.174817 | 2022-03-25 07:58:01.829436 | 2022-03-25 07:59:01 | n | s | interval '1 minute' | 0 | call public.prc _job_1(); 2 | db_demo | 2022-03-25 07:58:15.893383 | 2022-03-25 07:58:16.608959 | 2022-03-25 07:58:15.893383 | 2022-03-25 07:59:15 | n | s | interval '1 minute' | 0 | call public.prc _job_1(); (2 rows) 停止任务。 1 2 3 4 5 call dbms_job.broken(1,true); broken -------- (1 row) 启动任务。 1 2 3 4 5 call dbms_job.broken(1,false); broken -------- (1 row) 修改任务属性。 修改JOB的Next_date参数信息。例如,修改Job1的Next_date为1小时以后开始执行。 1 2 3 4 5 call dbms_job.next_date(1, sysdate+1.0/24); next_date ----------- (1 row) 修改JOB的Interval参数信息。例如,修改Job1的Interval为每隔1小时执行一次。 1 2 3 4 5 call dbms_job.interval(1,'sysdate + 1.0/24'); interval ---------- (1 row) 修改JOB的What参数信息。例如,修改Job1的What为执行SQL语句“insert into public.test values(333, sysdate+5);”。 1 2 3 4 5 call dbms_job.what(1,'insert into public.test values(333, sysdate+5);'); what ------ (1 row) 同时修改JOB的Next_date、Interval、What等多个参数信息。 1 2 3 4 5 call dbms_job.change(1, 'call public.prc_job_1();', sysdate, 'interval ''1 minute'''); change -------- (1 row) 删除JOB。 1 2 3 4 5 call dbms_job.remove(1); remove -------- (1 row) JOB的权限控制。 当创建一个JOB时,该JOB会和创建该JOB的数据库和用户绑定(即:pg_job系统视图新增的JOB记录中的dbname和log_user)。 如果当前用户是DBA用户、系统管理员、该JOB的创建用户(即:pg_job中的log_user),那么该用户有权限通过高级包接口remove、change、next_data、what、interval删除或修改JOB的参数信息。否则,会提示当前用户没有权限操作该JOB。 如果当前数据库是该JOB创建所属的数据库(即:为pg_job系统视图中的dbname),那么连接到当前数据库上可以通过高级包接口remove、change、next_data、what、interval删除或修改JOB的参数信息。 当删除JOB所属的数据库(即:为pg_job系统视图中的dbname)时,系统会关联删除该数据库从属的JOB记录。 当删除JOB所属的用户(即:为pg_job系统视图中的log_user)时,系统会关联删除该用户从属的JOB记录。
  • 示例 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 CREATE OR REPLACE PROCEDURE proc_case_branch(pi_result in integer, pi_return out integer) AS BEGIN CASE pi_result WHEN 1 THEN pi_return := 111; WHEN 2 THEN pi_return := 222; WHEN 3 THEN pi_return := 333; WHEN 6 THEN pi_return := 444; WHEN 7 THEN pi_return := 555; WHEN 8 THEN pi_return := 666; WHEN 9 THEN pi_return := 777; WHEN 10 THEN pi_return := 888; ELSE pi_return := 999; END CASE; raise info 'pi_return : %',pi_return ; END; / CALL proc_case_branch(3,0); --删除存储过程 DROP PROCEDURE proc_case_branch;
  • 操作步骤 设置参数,以设置explain_perf_mode参数为例。 查看explain_perf_mode参数。 1 2 3 4 5 SHOW explain_perf_mode; explain_perf_mode ------------------- normal (1 row) 设置explain_perf_mode参数。 使用以下任意方式进行设置: 设置数据库级别的参数 1 ALTER DATABASE gaussdb SET explain_perf_mode TO pretty; 当结果显示为如下信息,则表示设置成功。 ALTER DATABASE 在下次会话中生效。 设置用户级别的参数 1 ALTER USER dbadmin SET explain_perf_mode TO pretty; 当结果显示为如下信息,则表示设置成功。 ALTER USER 在下次会话中生效。 设置会话级别的参数 1 SET explain_perf_mode TO pretty; 当结果显示为如下信息,则表示设置成功。 SET 检查参数设置的正确性。 1 2 3 4 5 SHOW explain_perf_mode; explain_perf_mode -------------- pretty (1 row)
  • 参数类型和值 GaussDB(DWS)的GUC参数类型分为以下五类: SUSET,数据库管理员参数。设置后立即生效,无需重启集群。若在当前会话中设置该类型参数仅当前会话生效。 USERSET,普通用户参数。设置后立即生效,无需重启集群。若在当前会话中设置该类型参数仅当前会话生效。 POSTMASTER,数据库服务端参数。设置后需要重启集群才能生效,确认修改后系统会提示集群状态为待重启,建议在非业务高峰期手动重启集群,使参数生效。 SIGHUP,数据库全局参数。设置后全局生效,无法会话级生效。 BACKEND,数据库全局参数。设置后全局生效,无法会话级生效。 所有的参数名称不区分大小写。 参数取值有整型、浮点型、字符串、布尔型和枚举型五类。 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。 枚举类型的取值由系统表pg_settings的enumvals字段取值所定义。 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。 参数的默认单位由系统表pg_settings的unit字段所定义。 内存单位有:KB(千字节)、MB(兆字节)和GB(吉字节)。 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。
  • GUC参数设置 GUC参数设置有两种方式: 方式一:集群创建成功后,用户可以登录GaussDB(DWS) 管理控制台,根据实际需要修改集群的数据库参数。 具体操作请参见《管理指南》中的“修改数据库参数”章节。 方式二:成功连接集群后,通过SQL命令的方式设置SUSET或USERSET类型的参数。 修改指定数据库,用户,会话级别的参数。 设置数据库级别的参数 1 ALTER DATABASE dbname SET paraname TO value; 在下次会话中生效。 设置用户级别的参数 1 ALTER USER username SET paraname TO value; 在下次会话中生效。 设置会话级别的参数 1 SET paraname TO value; 修改本次会话中的取值。退出会话后,设置将失效。
  • 随机数据函数 gen_random_bytes()函数用于生成具有强加密性的随机字节。 gen_random_bytes(count integer) returns bytea 其中,count表示返回的字节数,取值为1到1024。 示例: SELECT gen_random_bytes(16); gen_random_bytes ------------------------------------ \x1f1eddc11153afdde0f9e1229f8f4caf (1 row) gen_random_uuid()函数用于返回一个version 4的随机UUID。 SELECT gen_random_uuid(); gen_random_uuid -------------------------------------- 2bd664a2-b760-4859-8af6-8d09ccc5b830
  • 密码哈希函数 crypt()和gen_salt()函数专用于哈希密码。crypt()执行哈希用于加密数据,gen_salt()用于生成加盐哈希。 crypt()中的算法和普通的MD5或者SHA1哈希算法存在以下不同之处: crypt()中算法很慢。由于密码包含的数据量很小,这是增加暴力破解难度的唯一方法。 它们使用一个随机值(称为salt,即盐值),因此这样具有相同口令的用户将得到不同的密文口令。这也是针对破解算法提供一种额外的安全保护。 它们的结果中包括了算法类型,因此可以针对不同用户使用不同的算法对密码进行加密。 其中一些算法具有自适应性,意味着当计算机性能变得更快时,可以调整该算法使其变得更慢,而不会产生与已有密码的不兼容性。 crypt()函数所支持的算法如下表: 表1 crypt()支持的算法 算法 密码最大长度 自适应性 Salt位数 输出结果长度 描述 bf 72 √ 128 60 基于Blowfish的2a变种算法 md5 unlimited × 48 34 基于MD5的加密算法 xdes 8 √ 24 20 扩展DES des 8 × 12 13 原生UNIX加密算法
  • 原始加密函数 原始加密函数仅仅会对数据运行一次加密,不支持PGP加密的任何高级功能,因此存在以下问题: 直接将用户密钥作为加密密钥。 不提供任何完整性检查来校验加密后的数据是否被修改。 需要用户自己关联所有加密参数,包括初始值(IV)。 不支持处理文本数据。 因此,在引入了PGP加密后,不建议使用这些原始加密函数。 encrypt(data bytea, key bytea, type text) returns bytea decrypt(data bytea, key bytea, type text) returns bytea encrypt_iv(data bytea, key bytea, iv bytea, type text) returns bytea decrypt_iv(data bytea, key bytea, iv bytea, type text) returns bytea 其中,data是需要加密的数据;type用于指定加密/解密方法。type参数的语法如下: algorithm [ - mode ] [ /pad: padding ]
  • 通用哈希函数 digest() digest()函数可以根据不同的算法生成数据的二进制哈希值,语法如下: digest(data text, type text) returns bytea digest(data bytea, type text) returns bytea 其中,data是原始数据,type是加密算法包括md5、sha1、sha224、sha256、sha384、sha512和sm3;函数的返回结果为二进制字符串。 示例: 使用digest() 函数对字符串GaussDB(DWS)进行sha256加密存储: select digest('GaussDB(DWS)', 'sha256'); digest -------------------------------------------------------------------- \xcc2d1b97c6adfba44bbce7386516f63f16fc6e6a10bd938861d3aba501ac8aab (1 row)
  • PG_OBJECT PG_OBJECT系统表存储限定类型对象(object_type中存在的类型)的创建用户、创建时间、最后修改时间和最后analyze时间。 表1 PG_OBJECT字段 名称 类型 描述 object_oid oid 对象标识符。 object_type "char" 对象类型: r表示表,包括普通表和临时表 i表示索引 s表示序列 v表示视图 p表示存储过程和函数 f表示外表 creator oid 创建用户的标识符。 ctime timestamp with time zone 对象创建时间。 mtime timestamp with time zone 对象最后修改时间,默认记录修改行为包括ALTER操作、COMMENT、GRANT/REVOKE和TRUNCATE操作。 object_mtime_record_mode参数可以细粒度控制ALTER、COMMENT、GRANT/REVOKE和TRUNCATE操作是否被记录。 last_analyze_time timestamp with time zone 对象进行最后一次analyze的时间。 仅针对用户正常操作行为进行记录,无法记录对象升级以前和initdb过程中的行为。 ctime和mtime的时间记录为本次操作的事务起始时间。 由扩容引起的对象修改时间也会被记录。 父主题: 系统表
  • PG_AMPROC PG_AMPROC系统表存储与访问方法操作符族相关联的支持过程的信息。每个属于某个操作符族的支持过程都占有一行。 表1 PG_AMPROC字段 名字 类型 引用 描述 oid oid - 行标识符(隐藏属性,必须明确选择才会显示) amprocfamily oid PG_OPFAMILY.oid 该项的操作符族 amproclefttype oid PG_TYPE.oid 相关操作符的左输入数据类型 amprocrighttype oid PG_TYPE.oid 相关操作符的右输入数据类型 amprocnum smallint - 支持过程编号 amproc regproc PG_PROC.oid 过程的OID amproclefttype和amprocrighttype字段的习惯解释,标识一个特定支持过程所支持的操作符的左右输入类型。对于某些访问方式,匹配支持过程本身的输入数据类型,对其他的则不会匹配。有一个对索引的“缺省”支持过程的概念,amproclefttype和amprocrighttype都等于索引操作符类的opcintype。 父主题: 系统表
  • ALL_IND_EXPRESSIONS ALL_IND_EXPRESSIONS视图存储了当前用户可访问的表达式索引的信息。 表1 ALL_IND_EXPRESSIONS字段 名称 类型 描述 index_owner character varying(64) 索引的所有者 index_name character varying(64) 索引名 table_owner character varying(64) 表的所有者 table_name character varying(64) 表名 column_expression text 定义列的基于函数的索引表达式 column_position smallint 索引中列的位置 父主题: 系统视图
  • GET_TSC_INFO 重新获取当前节点TSC信息。该视图仅8.2.1及以上集群版本支持。 表1 返回值字段 名称 类型 描述 node_name text 节点名称。 tsc_mult bigint TSC换算乘数。 tsc_shift bigint TSC换算位移数。 tsc_frequency float8 TSC频率。 tsc_use_freqency boolean 是否使用TSC频率进行时间换算。 tsc_ready boolean 是否可以使用TSC频率进行时间换算。 tsc_scalar_error_info text 获取TSC换算信息的错误信息。 tsc_freq_error_info text 获取TSC频率的错误信息。 父主题: 系统视图
  • GS_WLM_SESSION_INFO GS_WLM_SESSION_INFO系统表显示所有CN执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。当设置GUC参数enable_resource_record为on时,系统会定时将GS_WLM_SESSION_HISTORY中的记录导入此系统表,开启此功能会占用系统存储空间并对性能有一定影响,不建议用户使用。具体的字段请参考表1。 此系统表的schema是dbms_om。 此系统表在gaussdb数据库中有分布列,分布列是queryid,其它数据库中无分布列。 pg_catalog下存在GS_WLM_SESSION_INFO视图。 父主题: 系统表
  • PG_SYNONYM PG_SYNONYM系统表存储同义词对象名与其他数据库对象名间的映射信息。 表1 PG_SYNONYM字段 名称 类型 描述 synname name 同义词名称。 synnamespace oid 该同义词所在的命名空间的OID。 synowner oid 同义词的所有者,通常是其创建者OID。 synobjschema name 关联对象指定的模式名。 synobjname name 关联对象名。 父主题: 系统表
  • PGXC_DEADLOCK PGXC_DEADLOCK视图获取导致分布式死锁产生的锁等待信息。 目前,PGXC_DEADLOCK视图只收集locktype为relation、partition、page、tuple和transactionid的锁等待信息。 表1 PGXC_DEADLOCK字段 名称 类型 描述 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。 waitusername name 等待锁的用户名称。 waitgxid xid 等待锁的事务ID。 waitxactstart timestamp with time zone 等待锁的事务的开始时间。 waitqueryid bigint 等待锁的线程的最新查询ID。 waitquery text 等待锁的线程的最新查询语句。 waitpid bigint 等待锁的线程ID。 waitmode text 等待的锁的级别。 holdusername name 持有锁的用户名称。 holdgxid xid 持有锁的事务ID。 holdxactstart timestamp with time zone 持有锁的事务的开始时间。 holdqueryid bigint 持有锁的线程的最新查询ID。 holdquery text 持有锁的线程的最新查询语句。 holdpid bigint 持有锁的线程ID。 holdmode text 持有锁的级别。 父主题: 系统视图
共100000条