华为云用户手册

  • 接口介绍 高级功能包DBE_SESSION支持的所有接口请参见表1。DBE_SESSION作用范围是会话级别。 表1 DBE_SESSION 接口名称 描述 DBE_SESSION.SET_CONTEXT 设置指定context下,某一属性(attribute)的值(value)。 DBE_SESSION.CLEAR_CONTEXT 清除指定context下,某一属性(attribute)的值(value)。 DBE_SESSION.SEARCH_CONTEXT 查找指定context下,某一属性(attribute)的值(value)。 DBE_SESSION.MODIFY_PACKAGE_STATE 用于修改当前会话的PL/SQL的状态。 DBE_SESSION.SET_CONTEXT 向指定namespace(context)下,设置某一属性(attribute)的值(value)。DBE_SESSION.SET_CONTEXT函数原型为: 1 2 3 4 5 DBE_SESSION.SET_CONTEXT( namespace text, attribute text, value text )returns void; 表2 DBE_SESSION.SET_CONTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 namespace TEXT IN 否 需要设置的context名称,当context不存在时,新建context,最长支持128个字节,超长时将会截断。 attribute TEXT IN 否 属性名称,最长支持1024个字节,超长时将会截断。 value TEXT IN 否 要设置的值的名称,最长支持1024个字节,超长时将会截断。
  • 二进制类型 GaussDB 支持的二进制类型如表1所示。 表1 二进制类型 名称 描述 存储空间 BLOB 二进制大对象。 目前BLOB支持的外部存取接口仅为: DBE_LOB.GET_LENGTH DBE_LOB.READ DBE_LOB.WRITE DBE_LOB.WRITE_APPEND DBE_LOB.COPY DBE_LOB.ERASE 这些接口详细说明请参见DBE_LOB。 在ustore下,最大为1GB-1,但还需要考虑到列描述头信息的大小,以及列所在元组的大小限制(也小于1GB-1),因此BLOB类型最大值可能小于1GB-1。 在astore下,最大为32TB-1,但还需要考虑到列描述头信息的大小,以及列所在元组的大小限制(也小于32TB-1),因此BLOB类型最大值可能小于32TB-1。 当sql_compatibility = 'B'时,设置参数b_format_version = '5.7'和参数b_format_dev_version = 's1'时,BLOB类型映射为BYTEA类型,别名为BYTEA。 具体存储规格参考BYTEA类型。 TINYBLOB MEDIUMBLOB LONGBLOB 二进制大对象。 具体存储规格参考BYTEA类型。 只有当sql_compatibility = 'B'时,设置参数b_format_version = '5.7'和参数b_format_dev_version = 's1'时,可以使用此类型,类型映射为BYTEA类型,别名为BYTEA。 RAW 变长的十六进制类型。 4字节加上实际的二进制字符串。最大为1GB-1,但还需要考虑到列描述头信息的大小,以及列所在元组的大小限制(也小于1GB-1),因此类型最大值可能小于1GB-1。 BYTEA 变长的二进制字符串。 4字节加上实际的二进制字符串。最大为1GB-1,但还需要考虑到列描述头信息的大小,以及列所在元组的大小限制(也小于1GB-1),因此类型最大值可能小于1GB-1。 BYTEAWITHOUTORDERWITHEQUALCOL 变长的二进制字符串(密态特性新增的类型,如果加密列的加密类型指定为确定性加密,则该列的实际类型为BYTEAWITHOUTORDERWITHEQUALCOL),元命令打印加密表将显示原始数据类型。 4字节加上实际的二进制字符串。最大为1GB减去53字节(即1073741771字节)。 BYTEAWITHOUTORDERCOL 变长的二进制字符串(密态特性新增的类型,如果加密列的加密类型指定为随机加密,则该列的实际类型为BYTEAWITHOUTORDERCOL),元命令打印加密表将显示原始数据类型。 4字节加上实际的二进制字符串。最大为1GB减去53字节(即1073741771字节)。 _BYTEAWITHOUTORDERWITHEQUALCOL 变长的二进制字符串,密态特性新增的类型。 4字节加上实际的二进制字符串。最大为1GB减去53字节(即1073741771字节)。 _BYTEAWITHOUTORDERCOL 变长的二进制字符串,密态特性新增的类型。 4字节加上实际的二进制字符串。最大为1GB减去53字节(即1073741771字节)。 除了每列的大小限制以外,每个元组的总大小也不可超过1GB-1字节。 不支持直接使用BYTEAWITHOUTORDERWITHEQUALCOL、BYTEAWITHOUTORDERCOL、_BYTEAWITHOUTORDERWITHEQUALCOL和_BYTEAWITHOUTORDERCOL类型创建表。 RAW(n),n是指字节长度建议值,不会用于校验输入RAW类型的字节长度。 当sql_compatibility = 'B'时,设置参数b_format_version = '5.7'和参数b_format_dev_version = 's1'后,TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB类型的表现规格为BYTEA类型,如查询表结构显示为BYTEA类型。 超过1GB的BLOB只有dbe_lob相关高级包支持,系统函数不支持大于1GB BLOB。 示例: 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 --创建表。 gaussdb=# CREATE TABLE blob_type_t1 ( BT_COL1 INTEGER, BT_COL2 BLOB, BT_COL3 RAW, BT_COL4 BYTEA ) ; --插入数据。 gaussdb=# INSERT INTO blob_type_t1 VALUES(10,empty_blob(), HEXTORAW('DEADBEEF'),E'\\xDEADBEEF'); --查询表中的数据。 gaussdb=# SELECT * FROM blob_type_t1; bt_col1 | bt_col2 | bt_col3 | bt_col4 ---------+---------+----------+------------ 10 | | DEADBEEF | \xdeadbeef (1 row) --删除表。 gaussdb=# DROP TABLE blob_type_t1; --示例:TINYBLOB MEDIUMBLOB LONGBLOB二进制大对象类型。 gaussdb=# CREATE DATABASE gaussdb_m WITH dbcompatibility 'B'; gaussdb=# \c gaussdb_m --设置兼容版本控制参数。 gaussdb_m=# SET b_format_version='5.7'; gaussdb_m=# SET b_format_dev_version='s1'; --创建表。 gaussdb_m=# CREATE TABLE t1(a tinyblob, b blob, m mediumblob, l longblob); --插入数据。 gaussdb_m=# INSERT INTO t1 VALUES ('tinyblobtest', 'blobtest', 'mediumblobtest', 'longblobtest'); --查询表中数据。 gaussdb_m=# SELECT * FROM t1; a | b | m | l --------------+----------+----------------+-------------- tinyblobtest | blobtest | mediumblobtest | longblobtest (1 row) --删除表和数据库。 gaussdb_m=# DROP TABLE t1; gaussdb_m=# \c postgres; gaussdb=# DROP DATABASE gaussdb_m; --重置参数。 gaussdb=# \c RESET ALL; 父主题: 数据类型
  • 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 HOT更新行数(比如没有更新所需的单独索引)。 父主题: 其他系统视图
  • max_cbm_retention_time 参数说明:用于控制何时触发备份CBM文件的强制回收,以避免由于备份操作过程中CBM文件无法回收导致磁盘满、实例只读等影响。 参数类型:整型 参数单位:s(秒) 取值范围:86400 ~ 2147483647 默认值:1209600(即14d) 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。例如,设置为86400,不带单位,表示86400s;设置为1d,带单位,表示1d。取值如果要带单位,必须为s、min、h、d。 设置建议:建议按照全备的时间间隔设置。 设置不当的风险与影响:设置过小可能会导致备份频繁失败。
  • enable_cbm_tracking 参数说明:cbm追踪功能的控制开关。 参数类型:布尔型 参数单位:无 取值范围: on:表示追踪功能开启。 off:表示追踪功能关闭。 默认值:off 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:当使用roach执行数据库实例的全量和增量备份时需要开启此参数,如果关闭会导致备份失败。 设置不当的风险与影响:关闭会导致增量备份失败。
  • max_size_for_xlog_retention 参数说明:用于控制何时触发备份复制槽或逻辑复制槽的强制推进,以避免由于备份操作或逻辑解码过程中日志无法回收导致磁盘满、实例只读等影响。 参数类型:整型 参数单位:无 取值范围:-100 ~ 2147483647 0表示关闭该功能。 负值表示按磁盘阈值触发,如-80,表示当磁盘阈值超过80%,且日志回收是由于备份操作或逻辑解码被阻塞,那么会触发备份复制槽或逻辑复制槽的强制推进。 正值表示按日志积压大小触发,如32,表示距离当前检查点redo位置,当备份复制槽落后了大于32段日志(每段日志大小为16MB)时,且日志回收是由于备份操作或逻辑解码被阻塞,那么会触发备份复制槽或逻辑复制槽的强制推进。 默认值:-80 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:建议比cm_server组件的datastorage_threshold_value_check略小一点,以避免实例进入只读状态。 设置不当的风险与影响:设置过小可能会导致备份频繁失败。
  • GS_AUDITING_AC CES S GS_AUDITING_ACCESS视图显示对数据库DML相关操作的所有审计信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 表1 GS_AUDITING_ACCESS字段 名称 类型 描述 polname name 策略名称,需要唯一,不可重复。 pol_type text 审计策略类型,值为‘access’,表示审计DML操作。 polenabled boolean 策略是否启动。 t(true):启动。 f(false):不启动。 access_type name DML数据库操作相关类型。例如SELECT、INSERT、DELETE等。 label_name name 资源标签名称。对应系统表gs_auditing_policy中的polname字段。 access_object text 数据库资产的路径。 filter_name text 过滤条件的逻辑字符串。 父主题: 审计
  • ai_watchdog_parameters 表1 ai_watchdog_parameters参数 参数 类型 描述 name text 参数名称,包括如下常用参数: enable_ai_watchdog:是否开启本功能。 ai_watchdog_max_consuming_time_ms:最大耗时。 ai_watchdog_used_memory_kb:本功能当前内存使用。 ai_watchdog_detection_times:已检测次数。 enable_self_healing:发现问题后是否可以自愈。 oom_detected_times:已检测到的OOM次数。 hang_detected_times:已检测到的hang次数。 enable_oom_detection:是否自动启动了OOM探测功能。 in_wait_time:是否处于等待时间。 other_used_memory_has_risk:其他内存使用部分是否存在风险。 shared_used_mem_has_risk:共享内存上下文使用是否存在风险。 dynamic_used_shrctx_has_risk:动态内存使用是存在风险。 value text 参数值 父主题: AI Watchdog
  • ADM_INDEXES ADM_INDEXES视图显示数据库中所有索引的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 ADM_INDEXES字段 名称 类型 描述 owner character varying(64) 索引的所有者。 index_name character varying(64) 索引名称。 table_name character varying(64) 索引对应的表名。 uniqueness text 该索引是否为唯一索引。 UNIQUE:唯一索引。 NONUNIQUE:非唯一索引。 partitioned character(3) 该索引是否具有分区表的性质。 Yes:索引具有分区表的性质。 No:索引不具有分区表的性质。 generated character varying(1) 该索引的名称是否为系统生成。 y:索引名称为系统生成。 n:索引名称非系统生成。 index_type character varying(27) 索引类型。 NORMAL:索引属性都是简单引用,表达式树为空。 FUNCTION-BASED NORMAL:存在表达式树用于非简单字段引用的索引属性。 table_owner character varying(128) 索引对象的所有者。 table_type character(11) 索引对象的类型。 TABLE:索引对象为表类型。 tablespace_name character varying(30) 包含索引的表空间名称。 status character varying(8) 非分区索引状态。 VALID:非分区索引可以用于查询。 UNUSABLE:非分区索引不可用。 N/A:索引具有分区表性质。 compression character varying(13) 暂不支持,值为NULL。 prefix_length numeric 暂不支持,值为NULL。 ini_trans numeric 暂不支持,值为NULL。 max_trans numeric 暂不支持,值为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extents numeric 暂不支持,值为NULL。 max_extents numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 pct_threshold numeric 暂不支持,值为NULL。 include_column numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 pct_free numeric 暂不支持,值为NULL。 logging character varying(3) 暂不支持,值为NULL。 blevel numeric 暂不支持,值为NULL。 leaf_blocks numeric 暂不支持,值为NULL。 distinct_keys numeric 暂不支持,值为NULL。 avg_leaf_blocks_per_key numeric 暂不支持,值为NULL。 avg_data_blocks_per_key numeric 暂不支持,值为NULL。 clustering_factor numeric 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp(0) without time zone 暂不支持,值为NULL。 degree character varying(40) 暂不支持,值为NULL。 instances character varying(40) 暂不支持,值为NULL。 temporary character varying(1) 暂不支持,值为NULL。 secondary character varying(1) 暂不支持,值为NULL。 buffer_pool character varying(7) 暂不支持,值为NULL。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 duration character varying(15) 暂不支持,值为NULL。 pct_direct_access numeric 暂不支持,值为NULL。 ityp_owner character varying(128) 暂不支持,值为NULL。 ityp_name character varying(128) 暂不支持,值为NULL。 parameters character varying(1000) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 domidx_status character varying(12) 暂不支持,值为NULL。 domidx_opstatus character varying(6) 暂不支持,值为NULL。 funcidx_status character varying(8) 暂不支持,值为NULL。 join_index character varying(3) 暂不支持,值为NULL。 iot_redundant_pkey_elim character varying(3) 暂不支持,值为NULL。 dropped character varying(3) 暂不支持,值为NULL。 visibility character varying(9) 该索引对优化器是否可见。 VISIBLE:索引对优化器可见。 INVISIBLE:索引对优化器不可见。 domidx_management character varying(14) 暂不支持,值为NULL。 segment_created character varying(3) 暂不支持,值为NULL。 orphaned_entries character varying(3) 暂不支持,值为NULL。 indexing character varying(7) 暂不支持,值为NULL。 auto character varying(3) 暂不支持,值为NULL。 父主题: 其他系统视图
  • 接口介绍 服务于ILM策略实施,实现ILM策略的评估以及压缩Job的停用接口。 表1 DBE_ILM 接口名称 描述 EXECUTE_ILM 根据参数执行对指定的数据和ILM策略进行评估,评估通过则会生成对应的压缩Job。 STOP_ILM 根据参数停止正在执行的压缩Job。 DBE_ILM.EXECUTE_ILM 根据参数执行对于的ILM策略,原型为: 1 2 3 4 5 6 7 DBE_ILM.EXECUTE_ILM( OWNER IN VARCHAR2, OBJECT_NAME IN VARCHAR2, TASK_ID OUT NUMBER, SUBOBJECT_NAME IN VARCHAR2 DEFAULT NULL, POLICY_NAME IN VARCHAR2 DEFAULT 'ALL POLICIES', EXECUTION_MODE IN NUMBER DEFAULT 2); 表2 DBE_ILM.EXECUTE_ILM接口参数说明 参数 描述 OWNER 对象所属Schema。 OBJECT_NAME 对象名称。 TASK_ID 输出生成ADO task的描述符ID。 SUBOBJECT_NAME 数据子对象名称。 POLICY_NAME 策略名称,通过查询GS_ADM_ILMOBJE CTS 视图可知,默认DBE_ILM.ILM_ALL_POLICIES代表该对象上所有策略。DBE_ILM.ILM_ALL_POLICIES默认值为'ALL POLICIES',不支持小写。 EXECUTION_MODE 执行模式,本期不涉及在线模式(ILM_EXECUTION_ONLINE)或离线模式(ILM_EXECUTION_OFFLINE)。 DBE_ILM.STOP_ILM 根据参数停止正在执行的ILM策略,原型为: 1 2 3 4 DBE_ILM.STOP_ILM( TASK_ID IN NUMBER DEFAULT -1, P_DROP_RUNNING_JOBS IN BOOLEAN DEFAULT FALSE, P_JOBNAME IN VARCHAR2 DEFAULT NULL) 表3 DBE_ILM.STOP_ILM接口参数说明 参数 描述 TASK_ID 指定待停止ADO task的描述符ID。 P_DROP_RUNNING_JOBS 是否停止正在执行中的任务,true为强制停止,false为不停止正在执行的任务。 P_JOBNAME 标识待停止的特定JobName,通过GS_MY_ILMEVALUATIONDETAILS视图可以查询。 当并发量较大时,执行DBE_ILM.STOP_ILM可能会提示资源繁忙,稍后重试即可。提示内容为“Resources are busy, please try again later”。
  • SUMMARY_STATIO_SYS_SEQUENCES SUMMARY_STATIO_SYS_SEQUENCES视图显示数据库内汇聚的命名空间中所有系统序列的I/O状态信息,如表1所示。 表1 SUMMARY_STATIO_SYS_SEQUENCES字段 名称 类型 描述 schemaname name 序列中模式名。 relname name 序列名。 blks_read numeric 从序列中读取的磁盘块数。 blks_hit numeric 序列中缓存命中数。 父主题: Cache/IO
  • WORKLOAD_SQL_COUNT 显示当前节点workload上的SQL数量分布,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 WORKLOAD_SQL_COUNT字段 名称 类型 描述 workload name 负载名称。 select_count bigint select数量。 update_count bigint update数量。 insert_count bigint insert数量。 delete_count bigint delete数量。 ddl_count bigint ddl数量。该统计结果包含用户执行的SQL语句和数据库后台线程执行的SQL语句。 dml_count bigint dml数量。该统计结果包含用户执行的SQL语句和数据库后台线程执行的SQL语句。 dcl_count bigint dcl数量。该统计结果包含用户执行的SQL语句和数据库后台线程执行的SQL语句。 dbid oid 数据库标识。 user_dml_count bigint 用户执行的DML语句的数量。 bg_dml_count bigint 数据库后台线程执行的DML语句的数量。 父主题: Workload
  • GLOBAL_TRANSACTIONS_PREPARED_XACTS 显示数据库主节点当前准备好进行两阶段提交的事务的信息汇总,如表1所示。多租场景下,non-PDB访问该视图时返回全局统计信息,PDB访问该视图时仅返回该PDB的统计信息。 表1 GLOBAL_TRANSACTIONS_PREPARED_XACTS字段 名称 类型 描述 transaction xid 预备事务的数字事务标识。 gid text 赋予该事务的全局事务标识。 prepared timestamp with time zone 事务准备好提交的时间。 owner name 执行该事务的用户的名称。 database name 执行该事务所在的数据库名。 父主题: Transaction
  • 失效重编译特性函数 gs_set_object_invalid()/gs_set_object_invalid(schema, objname, objtype) 描述:将PACKAGE和FUNCTION在pg_object中的状态置为false,同时级联将依赖PACKAGE和FUNCTION的对象状态置为false。调用该函数的用户需要具有SYSADMIN权限。 参数:该函数为重载函数。当无入参时,将当前DATABASE内的PACKAGE和FUNCTION对象置为失效。当指定schema、objname、objtype三个参数时可将当前DATABASE内的PACKAGE和FUNCTION对象在pg_object中的状态置为false。其中:schema为对象所属的schema名称;objname为对象名称;objtype为对象类型,对象为package类型时值为“package”,对象为函数或存储过程时值为“function”。 需要将PACKAGE和FUNCTION和依赖PACKAGE和FUNCTION的对象状态置为失效时可以使用该函数。 仅系统管理员可以调用函数。 示例: 该函数不返回失效结果,可通过pg_object系统表查询失效结果,对象有效时查找到对应的valid状态为true,对象失效后对应的valid状态为false。 gs_set_plsql_invalid所属的Schema为pg_catalog,但不指定Schema也可调用该函数。 -- 创建一个包pkg1,pkg2和函数f3,查询pg_object信息,状态为valid。 SET enable_force_create_obj=on; SET SET ddl_invalid_mode=invalid; SET CREATE SCHEMA testInvalidate; CREATE SCHEMA SET CURRENT_SCHEMA TO testInvalidate; SET CREATE OR REPLACE PACKAGE pkg1 AS var1 VARCHAR; FUNCTION f1() RETURN VARCHAR; END pkg1; / CREATE PACKAGE CREATE OR REPLACE PACKAGE BODY pkg1 AS FUNCTION f1() RETURN VARCHAR IS BEGIN var1 := '2'; RETURN var1; END; END pkg1; / CREATE PACKAGE BODY CREATE OR REPLACE PACKAGE pkg2 AS var1 pkg1.var1%TYPE; FUNCTION f2() RETURN VARCHAR; END pkg2; / CREATE PACKAGE CREATE OR REPLACE PACKAGE BODY pkg2 AS FUNCTION f2() RETURN VARCHAR IS BEGIN var1 := '2'; RETURN var1; END; END pkg2; / CREATE PACKAGE BODY CREATE OR REPLACE FUNCTION f3() RETURN VARCHAR IS DECLARE var2 VARCHAR := 'li2'; BEGIN var2='22'; RETURN var2; END / CREATE FUNCTION SELECT pkg1.f1(); f1 ---- 2 (1 row) SELECT pkg2.f2(); f2 ---- 2 (1 row) SELECT f3(); f3 ---- 22 (1 row) -- 调用函数,指定schema、函数名、类型即可将pkg1和pkg2失效,再次查询pg_object,pkg1和pkg2对应的valid为false。 SELECT gs_set_object_invalid('testinvalidate','pkg1','package'); set_object_invalid ------------------------- (1 row) -- 如果要失效function,参数如下所示,查询pg_object,f3对应的valid为false。 SELECT gs_set_object_invalid('testinvalidate','f3','function'); set_object_invalid ------------------------- (1 row) -- 调用时没有入参,则将失效所有缓存对象。 SELECT gs_set_object_invalid(); set_object_invalid ------------------------- (1 row) 父主题: 失效重编译
  • 语法格式 格式一:START TRANSACTION格式 START TRANSACTION [ { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ]; 格式二:BEGIN格式 BEGIN [ WORK | TRANSACTION ] [ { ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ | READ UNCOMMITTED } | { READ WRITE | READ ONLY } } [, ...] ];
  • 参数说明 WORK | TRANSACTION BEGIN格式中的可选关键字,没有实际作用。 ISOLATION LEVEL 指定事务隔离级别,它决定当一个事务中存在其他并发运行事务时它能够看到什么数据。 在事务中第一个数据修改语句(SELECT、INSERT、DELETE、UPDATE、FETCH、COPY)执行之后,事务隔离级别就不能再次设置。 取值范围: READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 READ UNCOMMITTED:读未提交隔离级别,指定后的行为和READ COMMITTED行为一致。 REPEATABLE READ:可重复读隔离级别,仅仅看到事务开始之前提交的数据,它不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 SERIALIZABLE:GaussDB目前功能上不支持此隔离级别,设置该隔离级别时,等价于REPEATABLE READ。 READ WRITE | READ ONLY 指定事务访问模式(读/写或者只读)。
  • 示例 --创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --创建表tpcds.reason。 gaussdb=# CREATE TABLE tpcds.reason (c1 int, c2 int); --以默认方式启动事务。 gaussdb=# START TRANSACTION; gaussdb=# SELECT * FROM tpcds.reason; gaussdb=# END; --以默认方式启动事务。 gaussdb=# BEGIN; gaussdb=# SELECT * FROM tpcds.reason; gaussdb=# END; --以隔离级别为READ COMMITTED,读/写方式启动事务。 gaussdb=# START TRANSACTION ISOLATION LEVEL READ COMMITTED READ WRITE; gaussdb=# SELECT * FROM tpcds.reason; gaussdb=# COMMIT; --删除表tpcds.reason。 gaussdb=# DROP TABLE tpcds.reason; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds;
  • 设置回调 设置回调操作,当告警或者错误发生时,直接执行具体操作进行处理,设置回调命令如下: EXEC SQL WHENEVER condition action; condition取值范围: SQLERROR:当在SQL语句执行期间发生错误时,调用指定操作。 SQLWARNING:当在SQL语句执行期间发生告警时,调用指定操作。 NOT FOUND:当SQL语句检索或者影响为零行时,调用指定操作。 action取值范围: CONTINUE:忽略回调错误条件,继续执行,通常可以用来停止break包含条件,为缺省值。 GOTO label/GO TO label:跳转到指定标签(使用C语言goto语句)。 SQLPRINT:输出消息到标准错误。 STOP:调用exit(1),终止程序。 DO BREAK:执行C语句break,只能在循环中或者switch语句中使用。 示例如下: /* 当出现一个告警时它打印一个消息,发生一个错误时中止程序。 */ EXEC SQL WHENEVER SQLWARNING SQLPRINT; EXEC SQL WHENEVER SQLERROR STOP; 语句EXEC SQL WHENEVER是SQL预处理器的一个指令,而非一个C语言语句。不管C语言程序的流程如何,该语句设置的错误或告警动作都适用于位于处理程序设置点之后的嵌入式SQL语句,除非第一个EXEC SQL WHENEVER语句和导致错误或告警情况发生的SQL语句之间为同一个情况设置了不同的动作。因此下面的两个C语言程序都不会得到预期的效果: /* * 错误 */ void func() { ... if (verbose) { EXEC SQL WHENEVER SQLWARNING SQLPRINT; } ... EXEC SQL SELECT ...; ... } /* * 错误 */ void func() { ... set_error_handler(); ... EXEC SQL SELECT ...; ... } static void set_error_handler(void) { EXEC SQL WHENEVER SQLERROR STOP; } 当使用DO BREAK时只能用于while/for/switch场景,且用完需要使用CONTINUE语句忽略。 父主题: 错误处理
  • 示例 gaussdb=# DECLARE v_num integer default NULL; BEGIN IF v_num IS NOT NULL THEN raise info 'v_num is NULL'; ELSE NULL; -- 不需要处理任何数据。 END IF; END; / ANONYMOUS BLOCK EXECUTE
  • STATIO_USER_TABLES STATIO_USER_TABLES视图显示命名空间中所有用户关系表的I/O状态信息,如表1所示。 表1 STATIO_USER_TABLES字段 名称 类型 描述 relid oid 表OID。 schemaname name 该表模式名。 relname name 表名。 heap_blks_read bigint 从该表中读取的磁盘块数。 heap_blks_hit bigint 该表缓存命中数。 idx_blks_read bigint 从表中所有索引读取的磁盘块数。 idx_blks_hit bigint 表中所有索引命中缓存数。 toast_blks_read bigint 该表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit bigint 该表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read bigint 该表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 该表的TOAST表索引命中缓冲区数(如果存在)。 last_updated timestamp with time zone 视图中该对象监控数据最后一次更新的时间。 父主题: Cache/IO
  • GS_DEPENDENCIES_OBJ GS_DEPENDENCIES_OBJ系统表记录对象的被依赖项详细信息。 表1 GS_DEPENDENCIES_OBJ字段 名称 类型 描述 schemaname name 名称空间的名称。 packagename name package的名称。 type integer 被依赖体的类型。 1:未知类型。 2:变量。 3:类型。 4:函数。 5:视图。 6:函数头。 name text 被依赖体名称。 objnode pg_node_tree 被依赖体的详细信息。 父主题: 其他系统表
  • 命名SQL描述符区域 一个命名SQL描述符区域由一个头部以及一个或多个条目描述符区域构成。头部包含与整个描述区域相关的信息,而条目描述符区域则描述结果行中的某一列。 在使用SQL描述符区域之前,需要分配一个SQL描述符区域: EXEC SQL ALLOCATE DESCRIPTOR identifier; 当不再需要这个描述符区域时,应及时释放: EXEC SQL DEALLOCATE DESCRIPTOR identifier; 要使用一个描述符区域,需要使用INTO子句声明: EXEC SQL FETCH NEXT FROM mycursor INTO SQL DESCRIPTOR mydesc; 如果结果集为空,该描述符区域仍会包含查询的元数据。 对于还没有执行的预备查询,可以使用DESCRIBE得到其结果集的元数据: EXEC SQL BEGIN DECLARE SECTION; char *sql_stmt = "SELECT * FROM table1"; EXEC SQL END DECLARE SECTION; EXEC SQL PREPARE stmt1 FROM :sql_stmt; EXEC SQL DESCRIBE stmt1 INTO SQL DESCRIPTOR mydesc; 在DESCRIBE和FETCH语句中,INTO和USING关键词的使用相似:它们产生结果集以及一个描述符区域的元数据。 从头部检索一个描述符区域的值并且将其存储到一个宿主变量中: EXEC SQL GET DESCRIPTOR name :hostvar = field; 当前只定义了一个头部描述符区域COUNT,它存放描述符区域的条目(即结果集中包含多少列),宿主变量为一个整数类型,需从条目描述符区域中得到一个具体值: EXEC SQL GET DESCRIPTOR name VALUE num :hostvar = field; num可以是一个字符整数或者一个包含整数的宿主变量。可能的类型如下: CARDINALITY(整数):结果集中的行数 DATA:实际的数据项(这个范围的实际数据类型取决于查询) DATETIME_INTERVAL_CODE(整数):当TYPE是9时,DATETIME_INTERVAL_CODE将具有以下值之一:1表示DATE,2表示TIME,3表示TIMESTAMP,4表示TIME WITH TIME ZONE,5表示TIMESTAMP WITH TIME ZONE。 INDICATOR(整数):指示符(表示一个空值或者一个值截断) LENGTH(整数):以字符计的数据长度 NAME(string):列名 OCTET_LENGTH(整数):以字节计的数据字符表达的长度 PRECISION(整数):精度(用于类型numeric) RETURNED_LENGTH(整数):以字符计的数据长度 RETURNED_OCTET_LENGTH(整数):以字节计的数据字符表达的长度 SCALE(整数):比例(用于类型numeric) TYPE(整数):列的数据类型的数字编码 要检索字段数值并且把它存储到一个宿主变量里,使用如下命令: EXEC SQL GET DESCRIPTOR mydesc VALUE num :hostvar = field num可以是一个字符整数或者一个包含整数的宿主变量。可能的字段有: DATA 实际数据项(这个字段的数据类型依赖于这个查询) NAME(string) 字段名称 手动建立一个描述符区域为一个查询或游标提供输入参数,使用如下命令: EXEC SQL SET DESCRIPTOR name VALUE numfield = :hostvar; 在一个FETCH语句中检索多行记录且用数组类型的宿主变量来存储数据,示例如下: EXEC SQL BEGIN DECLARE SECTION; int id[5]; EXEC SQL END DECLARE SECTION; EXEC SQL FETCH 5 FROM mycursor INTO SQL DESCRIPTOR mydesc; EXEC SQL GET DESCRIPTOR mydesc VALUE 1 :id = DATA; 父主题: SQL描述符区域
  • 存储过程 商业规则和业务逻辑可以通过程序存储在GaussDB中,这个程序就是存储过程。 存储过程是SQL和PL/SQL的组合。存储过程使执行商业规则的代码可以从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。 存储过程的创建及调用办法请参考CREATE PROCEDURE。 PL/SQL语言函数节所提到的PL/SQL语言创建的函数与存储过程的应用方法相同。下面各节中,除非特别声明,否则内容通用于存储过程和PL/SQL语言函数。 父主题: 存储过程
  • 背景信息 GaussDB提供了多种修改GUC参数的方法,用户可以方便地针对数据库、用户、会话进行设置。 参数名称不区分大小写。 参数取值有整型、浮点型、字符串、布尔型和枚举类型五类。 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。 枚举类型的取值是在系统表pg_settings的enumvals字段取值定义的。 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。 参数的默认单位是在系统表pg_settings的unit字段定义的。 内存单位有:KB/kB(千字节)、MB/mB(兆字节)和GB/gB(吉字节)。 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。 具体参数说明请参见GUC参数说明。
  • GUC参数设置 GaussDB提供了七类GUC参数,具体分类和设置方式请参考表1: 表1 GUC参数分类 参数类型 说明 设置方式 INTERNAL 固定参数,在创建数据库的时候确定,用户无法修改,只能通过show语法或者pg_settings视图进行查看。 无 POSTMASTER 数据库服务端参数,在数据库启动时确定,可以通过配置文件指定。 支持表2中的方式一。 SIGHUP 数据库全局参数,可在数据库启动时设置或者在数据库启动后,发送指令重新加载。 支持表2中的方式一、方式二。 BACKEND 会话连接参数。在创建会话连接时指定,连接建立后无法修改。连接断掉后参数失效。内部使用参数,不推荐用户设置。 支持表2中的方式一、方式二。 说明: 设置该参数后,下一次建立会话连接时生效。 SUSET 数据库管理员参数。可在数据库启动时、数据库启动后或者数据库管理员通过SQL进行设置。 支持表2中的方式一、方式二或由数据库管理员通过方式三设置。 USERSET 普通用户参数。可被任何用户在任何时刻设置。 支持表2中的方式一、方式二或方式三设置。 GaussDB提供了四种方式来修改GUC参数,具体操作请参考表2: 表2 GUC参数设置方式 序号 设置方法 方式一 登录管理控制台。 在“实例管理”页面,选择指定的实例,单击实例名称,进入实例基本信息页面。 在左侧导航栏单击“参数管理”,进入参数修改页面,在该页面修改参数。 如果需要修改的参数在管理该控制台无法修改,请提前评估风险后再联系客服进行修改。 重启数据库使参数生效。 说明: 重启数据库集群操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。 方式二 登录管理控制台。 在“实例管理”页面,选择指定的实例,单击实例名称,进入实例基本信息页面。 在左侧导航栏单击“参数管理”,进入参数修改页面,在该页面修改参数。 如果需要修改的参数在管理该控制台无法修改,请提前评估风险后再联系客服进行修改。 方式三 修改指定数据库、用户、会话级别的参数。 设置数据库级别的参数 1 gaussdb=# ALTER DATABASE dbname SET paraname TO value; 在下次会话中生效。 设置用户级别的参数 1 gaussdb=# ALTER USER username SET paraname TO value; 在下次会话中生效。 设置会话级别的参数 1 gaussdb=# SET paraname TO value; 修改本次会话中的取值。退出会话后,设置将失效。 说明: SET设置的会话级参数优先级最高,其次是ALTER设置的,其中ALTER DATABASE设置的参数值优先级高于ALTER USER设置,这三种设置方式设置的优先级都高于gs_guc设置方式。 ALTER DATABASE和ALTER USER设置的参数在当前会话都不会生效,需要重启会话才能生效。 使用方式一、方式二设置参数时,若所设参数不属于当前节点,数据库会提示参数不在支持范围内的相关信息。 使用方式一、方式二设置参数时,不支持以页面数量为参数单位进行设置。 使用方式三设置参数时,若参数值为int整型,则会将整数前导零过滤掉,例如SET paraname TO 008192与SET paraname TO 8192效果相同。
  • GS_MATVIEW_DEPENDENCY GS_MATVIEW_DEPENDENCY系统表提供了关于数据库中每一个增量物化视图、基表和mlog表的关联信息。全量物化视图不存在与基表对应的mlog表,不会写入记录。 表1 GS_MATVIEW_DEPENDENCY字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 matviewid oid 物化视图的oid。 relid oid 物化视图基表的oid。 mlogid oid 物化视图mlog表的oid,mlog表为物化视图日志表,与基表一一对应。 mxmin integer 保留字段。 父主题: 物化视图
  • PG_INHERITS PG_INHERITS系统表记录关于表继承层次的信息。数据库里每个直接的子系表都有一条记录。间接的继承可以通过追溯记录链来判断。 表1 PG_INHERITS字段 名称 类型 引用 描述 inhrelid oid PG_CLASS.oid 子表的OID。 inhparent oid PG_CLASS.oid 父表的OID。 inhseqno integer - 如果一个子表存在多个直系父表(多重继承),这个数字表明此继承字段的排列顺序。计数从1开始。 父主题: 其他系统表
  • PG_SESSION_IOSTAT PG_SESSION_IOSTAT视图显示当前用户执行作业正在运行时的I/O负载管理相关信息。查询该视图需要sysadmin权限或者monitor admin权限。 以下涉及到iops,均以万次/s为单位。 表1 PG_SESSION_IOSTAT字段 名称 类型 描述 query_id bigint 作业id。 mincurriops integer 该作业当前I/O在数据库实例中的最小值。 maxcurriops integer 该作业当前I/O在数据库实例中的最大值。 minpeakiops integer 作业运行时,在数据库实例的最小作业I/O峰值。 maxpeakiops integer 作业运行时,在数据库实例的最大作业I/O峰值。 io_limits integer 该作业所设GUC参数io_limits的取值。 io_priority text 该作业所设GUC参数io_priority的取值。 query text 作业。 node_group text 该字段不支持。 curr_io_limits integer 使用io_priority管控I/O时的实时io_limits值。 父主题: 其他系统视图
  • GS_MY_ILMRESULTS GS_MY_ILMRESULTS视图反映ADO JOB的执行详情信息,包含Task ID,JOB名称、JOB状态、JOB时间信息等。 表1 GS_MY_ILMRESULTS字段 名称 类型 描述 task_id bigint ADO Task的ID。 job_name character varying(128) ADO Job的任务名称。 job_state character varying(35) ADO Job的状态。 start_time timestamp with time zone JOB开始被调度的时间。 completion_time timestamp with time zone 完成时间。 comments character varying(4000) JOB失败后此处记录失败原因。 statistics clob 统计信息。 父主题: OLTP表压缩
  • STATIO_SYS_TABLES STATIO_SYS_TABLES视图显示当前节点的命名空间中所有系统表的I/O状态信息,如表1所示。 表1 STATIO_SYS_TABLES字段 名称 类型 描述 relid oid 表OID。 schemaname name 该表模式名。 relname name 表名。 heap_blks_read bigint 从该表中读取的磁盘块数。 heap_blks_hit bigint 该表缓存命中数。 idx_blks_read bigint 从表中所有索引读取的磁盘块数。 idx_blks_hit bigint 表中所有索引命中缓存数。 toast_blks_read bigint 该表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit bigint 该表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read bigint 该表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 该表的TOAST表索引命中缓冲区数(如果存在)。 last_updated timestamp with time zone 视图中该对象监控数据最后一次更新的时间。 父主题: Cache/IO
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全