华为云用户手册

  • 修改表示例 单表修改名称 gaussdb=# CREATE TABLE aa(c1 int, c2 int); gaussdb=# RENAME TABLE aa TO test_alt1; gaussdb=# DROP TABLE test_alt1; 多个表修改名称 gaussdb=# CREATE TABLE aa(c1 int, c2 int); gaussdb=# CREATE TABLE bb(c1 int, c2 int); gaussdb=# RENAME TABLE aa TO test_alt1, bb TO test_alt2; gaussdb=# DROP TABLE test_alt1,test_alt2;
  • 参数说明 TABLE | TABLES TABLE和TABLES可以互相替换使用,与语句中操作表的个数无关。 table_name TO new_table_name [, table_name2 TO new_table_name2, ...] table_name、table_name2等为需要修改的表名。 new_table_name、new_table_name2等为修改后的新表名。 TO为中间连接词。
  • MY_IND_PARTITIONS MY_IND_PARTITIONS视图显示当前用户下一级分区表Local索引的索引分区信息(不包含分区表全局索引)。所有用户都可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 MY_IND_PARTITIONS字段 名称 类型 描述 index_owner character varying(64) 索引分区所属分区表索引的所有者的名称。 index_name character varying(64) 索引分区所属分区表索引的名称。 partition_name character varying(64) 索引分区的名称。 def_tablespace_name name 索引分区的表空间名称。 high_value text 索引分区所对应分区的上边界。 index_partition_usable boolean 索引分区是否可用: t(true):表示可用。 f(false):表示不可用。 schema character varying(64) 索引分区所属分区表索引的模式。 high_value_length integer 索引分区所对应分区的边界的字符长度。 composite character varying(3) 索引是否属于二级分区表上的本地索引,该表不存储二级分区信息,所以该值为NO。 subpartition_count numeric 分区中的二级分区数,该表不存储二级分区信息,所以该值为0。 partition_position numeric 索引分区在索引中的位置。 status character varying(8) 索引分区是否可用。 tablespace_name name 分区所在表空间的名称。 pct_free numeric 块中最小可用空间百分比。 ini_trans numeric 初始事务数,默认值为4,非USTORE分区表时为NULL。 max_trans numeric 最大事务数,默认值为128,非USTORE分区表时为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extent numeric 暂不支持,值为NULL。 max_extent numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 logging character varying(7) 是否记录对索引的更改。 compression character varying(13) 分区索引是否启用索引压缩。 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 根据索引的值表示表中行的顺序。需要通过执行analyze进行统计。 num_rows numeric 分区中的行数。需要通过执行vacuum进行统计。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp with time zone 最近分析此分区的日期。数据库重启后,数据会丢失。 buffer_pool character varying(7) 分区的实际缓冲池。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 pct_direct_access numeric 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 domidx_opstatus character varying(6) 暂不支持,值为NULL。 parameters character varying(1000) 暂不支持,值为NULL。 interval character varying(3) 分区是否在间隔分区表的间隔节中。 segment_created character varying(3) 索引分区段是否已创建。 orphaned_entries character varying(3) 暂不支持,值为NULL。 父主题: 分区表
  • Wait Events Wait Events列名称及描述如表1所示。 表1 Wait Events报表主要内容 列名称 描述 Type Wait Event类别名称: STATUS。 LWLOCK_EVENT。 LOCK_EVENT。 IO_EVENT。 Event Wait Event名称。 Total Wait Time (us) 总Wait时间(us)。 Waits 总Wait次数。 Failed Waits Wait失败次数。 Avg Wait Time (us) 平均Wait时间(us)。 Max Wait Time (us) 最大Wait时间(us)。 父主题: WDR报告信息介绍
  • SNAPSHOT.TABLES_SNAP_TIMESTAMP TABLES_SNAP_TIMESTAMP表记录所有存储的WDR Snapshot中数据库、表对象以及WDR快照的开始和结束时间,WDR Snapshot在启动后(打开GUC参数enable_wdr_snapshot)会触发创建该表,如表1所示。 表1 TABLES_SNAP_TIMESTAMP表属性 名称 类型 描述 示例 snapshot_id bigint WDR快照序号。 1 node_name name WDR快照的表信息所属的节点名。 dn_6001 db_name text WDR Snapshot对应的database。 tpcc1000 tablename text WDR Snapshot对应的table。 snap_xc_statio_all_indexes start_ts timestamp WDR快照的开始时间。 2019-12-28 17:11:27.425849+08 end_ts timestamp WDR快照的结束时间。 2019-12-28 17:11:27.707398+08 父主题: WDR Snapshot原信息
  • SUMMARY_STATIO_SYS_INDEXES SUMMARY_STATIO_SYS_INDEXES视图显示数据库内命名空间中所有系统表上索引的I/O状态汇总信息,如表1所示。 表1 SUMMARY_STATIO_SYS_INDEXES字段 名称 类型 描述 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read numeric 从索引中读取的磁盘块数。 idx_blks_hit numeric 索引命中缓存数。 父主题: Cache/IO
  • 建议 推荐使用两个表*的hint。对于两个表采用*操作符的hint,只要两个表出现在join的两端,都会触发hint。例如:设置hint为rows(t1 t2 * 3),对于(t1 t3 t4)和(t2 t5 t6)join时,由于t1和t2出现在join的两端,所以其join的结果集也会应用该hint规则乘以3。 rows hint支持在单表、多表、function table及subquery scan table的结果集上指定hint。
  • 参数说明 @queryblock请参见指定Hint所处于的查询块Queryblock,可省略,表示在当前查询块生效。 “#”、“+”、“-”、“*”,进行行数估算hint的四种操作符号。#表示直接使用后面的行数进行hint。“+”、“-”、“*”表示对原来估算的行数进行加、减、乘操作,运算后的行数最小值为1行。table_list为hint对应的单表或多表join结果集,与Join方式的Hint中table_list相同。
  • 存储过程支持自治事务 自治事务可以在存储过程中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建存储过程语法相同,请参见CREATE PROCEDURE,示例如下。 --建表 gaussdb=# CREATE TABLE t2(a INT, b INT); CREATE TABLE gaussdb=# INSERT INTO t2 VALUES(1,2); INSERT 0 1 gaussdb=# SELECT * FROM t2; a | b ---+--- 1 | 2 (1 row) --创建包含自治事务的存储过程 gaussdb=# CREATE OR REPLACE PROCEDURE autonomous_4(a INT, b INT) AS DECLARE num3 INT := a; num4 INT := b; PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO t2 VALUES(num3, num4); DBE_OUTPUT.PRINT_LINE('JUST USE CALL.'); END; / CREATE PROCEDURE --创建调用自治事务存储过程的普通存储过程 gaussdb=# CREATE OR REPLACE PROCEDURE autonomous_5(a INT, b INT) AS DECLARE BEGIN DBE_OUTPUT.PRINT_LINE('JUST NO USE CALL.'); INSERT INTO t2 VALUES(666, 666); autonomous_4(a,b); ROLLBACK; END; / CREATE PROCEDURE --调用普通存储过程 gaussdb=# SELECT autonomous_5(11,22); JUST NO USE CALL. JUST USE CALL. autonomous_5 -------------- (1 row) --查看表结果 gaussdb=# SELECT * FROM t2 ORDER BY a; a | b ----+---- 1 | 2 11 | 22 (2 rows) gaussdb=# DROP TABLE t2; DROP TABLE gaussdb=# DROP PROCEDURE autonomous_4; DROP PROCEDURE gaussdb=# DROP PROCEDURE autonomous_5; DROP PROCEDURE 上述例子,最后在回滚的事务块中执行包含自治事务的存储过程,直接说明了自治事务的特性,即主事务的回滚不会影响自治事务已经提交的内容。 父主题: 自治事务
  • DV_SESSION_LONGOPS DV_SESSION_LONGOPS视图显示当前正在执行的操作的进度。该视图需要授权访问。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 DV_SESSION_LONGOPS字段 名称 类型 描述 sid bigint 当前正在执行的后台线程的OID。 serial# integer 当前正在执行的后台线程的序号,在 GaussDB 中为0。 sofar integer 目前完成的工作量,在GaussDB中为空。 totalwork integer 工作总量,在GaussDB中为空。 父主题: 其他系统视图
  • HTAP系统函数 gs_htap_tmu_data(rel_oid oid, rowgroup_id integer) 描述:查看实时事务单元TMU中的活跃事务数据。当rowgroup_id为0时,返回表中所有活跃事务数据;当rowgroup_id非0时,返回表中指定行组中的活跃事务数据。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 本函数对OLTP业务有一定影响,仅作为运维接口使用,且不建议频繁执行。 表1 gs_htap_tmu_data参数说明 参数类型 参数名 类型 描述 输入参数 rel_oid oid 行存表oid信息。 输入参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 rel_oid oid 行存表oid信息。 输出参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 xid xid 操作该数据的事务id。 输出参数 ctid cstring 该数据在页面上的位置。 输出参数 flag smallint unsigned 二进制标记位,每一数位表示TMU记录的不同操作属性。其中: 第4位为1时,表示该记录是一条更新操作。 第3位为1时,表示该记录是一条删除操作。 第2位为1时,表示该记录是一条插入操作。 示例: 当enable_htap=off时: gaussdb=# select * from gs_htap_tmu_data(16796,0); ERROR: Query failed due to ENABLE_HTAP is not enabled. 当enable_htap=on时: gaussdb=# select * from gs_htap_tmu_data(16796,0); rel_oid | rowgroup_id | xid | ctid | flag ---------+-------------+-------+-------+------- 16796 | 1 | 78437 | (0,1) | 16385 16796 | 1 | 78437 | (0,2) | 16385 16796 | 1 | 78439 | (0,1) | 4097 16796 | 1 | 78439 | (0,2) | 4097 (4 rows) gs_htap_tmu_chunk_meta(rel_oid oid, rowgroup_id integer) 描述:查看实时事务单元TMU元数据信息。当rowgroup_id为0时,返回所有行组中的实时事务单元TMU数据信息;当rowgroup_id非0时,返回表中指定行组中的实时事务单元TMU数据信息。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 表2 gs_htap_tmu_chunk_meta参数说明 参数类型 参数名 类型 描述 输入参数 rel_oid oid 行存表oid信息。 输入参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 rel_oid oid 行存表oid信息。 输出参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 status smallint unsigned 表示TMU的状态。 1表示TMU没有被清理过。 2表示TMU被清理过。 输出参数 row_count integer unsigned 数据行数。 输出参数 buffer_count integer unsigned 包含的buffer个数。 输出参数 mem_usage bigint 申请内存大小。 输出参数 inprogress cstring 表示插入TMU数据的事务处于活跃状态的占比。 输出参数 completed cstring 表示插入TMU数据的事务处于提交或回滚状态的占比。 示例: 当enable_htap=off时: gaussdb=# select * from gs_htap_tmu_chunk_meta(16796,0); ERROR: Query failed due to ENABLE_HTAP is not enabled. 当enable_htap=on时: gaussdb=# select * from gs_htap_tmu_chunk_meta(16796,0); rel_oid | rowgroup_id | status | row_count | buffer_count | mem_usage | inprogress | completed ---------+-------------+--------+-----------+--------------+-----------+------------+----------- 16796 | 1 | 1 | 4 | 1 | 65536 | 0.00% | 100.00% (1 row) gs_imcv_bgworker_status() 描述:显示执行IMCV表重建的bgworker的状态信息。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 表3 gs_imcv_bgworker_status参数说明 参数类型 参数名 类型 描述 输出参数 worker_pid bigint 线程号。 输出参数 relation_id oid 正在处理的IMCV表的oid。 输出参数 worker_status cstring 表示idle(准备)、running(进行中)、finished(完成)三种线程工作状态。 输出参数 start_time timestamp with time zone 重建开始的时间戳。 示例: 当enable_htap=off时: gaussdb=# select * from gs_imcv_bgworker_status(); ERROR: Query failed due to ENABLE_HTAP is not enabled. 当enable_htap=on时: gaussdb=# select * from gs_imcv_bgworker_status(); worker_pid | relation_id | worker_status | start_time ------------+-------------+---------------+------------ 0 | 0 | finished | 0 | 0 | idle | 0 | 0 | idle | (3 rows) gs_imcv_flush(reloid oid) 描述:对数据库中指定的IMCV表立即进行一次重建,并显示重建的结果。重建过程将刷新IMCV表,移除旧数据并同步当前表的非活跃数据。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 当IMCV表内的数据足够新鲜时,可能会跳过重建。本函数对OLTP业务有一定影响,仅作为运维接口使用,且不建议频繁执行。 表4 gs_imcv_flush参数说明 参数类型 参数名 类型 描述 输入参数 reloid oid 行存表oid。 输出参数 output text 返回本次重建的结果。显示行组重建成功的数量以及跳过重建的数量。 示例: 当enable_htap=off时: gaussdb=# select * from gs_imcv_flush(16796); ERROR: Manual row group rebuilding failed due to ENABLE_HTAP is not enabled. 当enable_htap=on时: gaussdb=# select * from gs_imcv_flush(16796); gs_imcv_flush ------------------------------------------------ 2 row groups rebuilt successfully, 1 skipped. (1 row) gs_imcv_taskbuffer_view() 描述:gs_imcv_taskbuffer_view显示HTAP业务中重建任务队列使用情况,入参为空。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 表5 gs_imcv_taskbuffer_view参数说明 参数类型 参数名 类型 描述 输出参数 buffer_is_empty boolean 任务队列是否为空。默认值为t。 输出参数 buffer_is_full boolean 任务队列是否存满。默认值为f。 输出参数 buffer_used_space integer 任务已使用空间。默认值为0。 输出参数 buffer_free_space integer 任务剩余空间。默认值为999。 示例: 当enable_htap=off时: gaussdb=# select * from gs_imcv_taskbuffer_view(); ERROR: Query failed due to ENABLE_HTAP is not enabled. 当enable_htap=on时: gaussdb=# select * from gs_imcv_taskbuffer_view(); buffer_is_empty | buffer_is_full | buffer_used_space | buffer_free_space -----------------+----------------+-------------------+------------------- t | f | 0 | 999 (1 row) gs_imcu_meta(rel_name) 描述:gs_imcu_meta用于显示指定rel_name的IMCV表下的IMCU元信息。 返回值类型:record 表6 gs_imcu_meta参数列表 参数类型 参数 类型 描述 输入参数 relname text IMCV表名。 输出参数 reloid oid 表id。 输出参数 relname text 表名。 输出参数 imcu_xmin xid 预留,暂不使用。 输出参数 imcu_id integer IMCU id。 输出参数 row_count integer IMCU行数。 输出参数 imcu_size integer IMCU大小,单位字节。 输出参数 imcu_mode integer IMCU加载列数据特征: 普通。 全部为空。 相同值。 无最大最小值。 有空行。 输出参数 imcu_pointer bigint 预留,暂不使用。 输出参数 magic integer IMCU校验magic。 输出参数 attnum smallint IMCU加载列对应的attnum。 示例: gaussdb=# SELECT * FROM gs_imcu_meta('test2'); I reloid | relname | imcu_xmin | imcu_id | row_count | imcu_size | imcu_mode | imcu_pointer | magic | attnum --------+---------+-----------+---------+-----------+-----------+-----------+--------------+-------+-------- 115114 | test2 | 0 | 1 | 9 | 8192 | 1 | 0 | 74802 | 0 115114 | test2 | 0 | 1 | 9 | 8192 | 1 | 0 | 74802 | 1 115114 | test2 | 0 | 1 | 9 | 8192 | 1 | 0 | 74802 | 2 115114 | test2 | 0 | 1 | 9 | 8192 | 1 | 0 | 74802 | 3 115114 | test2 | 0 | 1 | 9 | 8192 | 0 | 0 | 74802 | 4 115114 | test2 | 0 | 1 | 9 | 8192 | 0 | 0 | 74802 | 5 (6 rows) 备注:该示例表示共有1个行组(imcu_id为1),每一行代表一个cu(其中attnum为0的列为ctid列),每个cu行数为9行。 gs_imcv_status() 描述:gs_imcv_status函数用于显示当前所有IMCV表的状态信息。 返回值类型:record 表7 gs_imcv_status参数列表 参数 参数 类型 描述 输出参数 reloid oid 表id。 输出参数 relname name 表名。 输出参数 dbname name 数据库名。 输出参数 username name 用户名。 输出参数 parentoid oid 父表id。 输出参数 imcvstatus char IMCV表状态: 'I': POPULATE_STAT_INIT初始化。 'L': POPULATE_STAT_LOAD_START开始加载。 'M': POPULATE_STAT_LOAD_META_DONE加载元数据。 'F': POPULATE_STAT_LOAD_FINISH加载完成。 'D': POPULATE_STAT_DROP已删除。 'E': POPULATE_STAT_ERROR异常。 输出参数 imcvnattr smallint 加载列数量。 输出参数 imcvkey int2vector 加载的列数组。 输出参数 priority smallint 加载优先级。 输出参数 rowgroup_num integer 行组数。 输出参数 cu_num_in_mem integer 内存中的IMCU数量。 输出参数 cu_mem_size bigint IMCU占用的内存大小,单位字节。 输出参数 cu_num_in_disk integer 暂不支持,值为0。 输出参数 cu_disk_size bigint 暂不支持,值为0。 示例: gaussdb=# SELECT * FROM gs_imcv_status(); reloid | relname | dbname | username | parentoid | imcvstatus | imcvnattr | imcvkey | priority | rowgroup_num | cu_num_in_mem | cu_mem_size | cu_num_in_disk | cu_disk_size --------+---------+----------+----------+-----------+------------+-----------+-----------+----------+--------------+---------------+-------------+----------------+-------------- 115114 | test2 | postgres | lqy | 0 | F | 5 | 1 2 3 4 5 | 1 | 1 | 6 | 49152 | 0 | 0 (1 row) gs_imcu_slot_status() 描述:gs_imcu_slot_status记录了IMCV表下的IMCU对应的缓存slot信息。 返回值类型:record 表8 gs_imcu_slot_status参数列表 参数类型 参数 类型 描述 输出参数 reloid oid 表id。 输出参数 cu_id integer IMCU id。 输出参数 col_id integer IMCU 所属列id。 输出参数 slot_id integer 缓存区slot id。 输出参数 block_size integer IMCU内存大小,单位字节。 输出参数 flag char 缓存块标志位。 示例(flag为\x01表示缓存slot包含有效数据): gaussdb=# SELECT * FROM gs_imcu_slot_status(); reloid | cu_id | col_id | slot_id | block_size | flag --------+-------+--------+---------+------------+------ 115114 | 1 | 1 | 0 | 8192 | \x01 115114 | 1 | 2 | 1 | 8192 | \x01 115114 | 1 | 3 | 2 | 8192 | \x01 115114 | 1 | 4 | 3 | 8192 | \x01 115114 | 1 | 5 | 4 | 8192 | \x01 115114 | 1 | 0 | 5 | 8192 | \x01 (6 rows) 父主题: 系统管理函数
  • PG_STAT_BGWRITER PG_STAT_BGWRITER视图显示后端写进程活动的统计信息。 表1 PG_STAT_BGWRITER字段 名称 类型 描述 checkpoints_timed bigint 定期执行的检查点数。 checkpoints_req bigint 主动执行的检查点数。 checkpoint_write_time double precision 将文件写入到磁盘时,在检查点处理部分花费的时间总量,以毫秒为单位。 checkpoint_sync_time double precision 将文件同步到磁盘时,在检查点处理部分花费的时间总量,以毫秒为单位。 buffers_checkpoint bigint 检查点写入的缓冲区的数量。 buffers_clean bigint 后端写进程写入的缓冲区的数量。 maxwritten_clean bigint 后端写进程因写入的缓冲区过多导致的清理扫描停止的次数。 buffers_backend bigint 后端直接写入的缓冲区的数量。 buffers_backend_fsync bigint 后端自己执行fsync调用的次数 (通常情况下,即使后端自己执行了这些写入动作,后端写进程也会再处理一次)。 buffers_alloc bigint 分配的缓冲区数量。 stats_reset timestamp with time zone 这些统计被重置的时间。 父主题: 其他系统视图
  • SUMMARY_WORKLOAD_TRANSACTION 显示数据库内汇聚的负载事务信息,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 SUMMARY_WORKLOAD_TRANSACTION字段 名称 类型 描述 workload name 负载的名称。 commit_counter numeric 用户事务commit数量。 rollback_counter numeric 用户事务rollback数量。 resp_min bigint 用户事务最小响应时间(单位:微秒)。 resp_max bigint 用户事务最大响应时间(单位:微秒)。 resp_avg bigint 用户事务平均响应时间(单位:微秒)。 resp_total numeric 用户事务总响应时间(单位:微秒)。 bg_commit_counter numeric 后台事务commit数量。 bg_rollback_counter numeric 后台事务rollback数量。 bg_resp_min bigint 后台事务最小响应时间(单位:微秒)。 bg_resp_max bigint 后台事务最大响应时间(单位:微秒)。 bg_resp_avg bigint 后台事务平均响应时间(单位:微秒)。 bg_resp_total numeric 后台事务总响应时间(单位:微秒)。 dbid oid 统计信息所属的数据库id。 父主题: Workload
  • 注意事项 TRUNCATE TABLE在功能上与不带WHERE子句DELETE语句相同:二者均删除表中的全部行。 TRUNCATE TABLE比DELETE速度快且使用系统和事务日志资源少: DELETE语句每次删除一行,并在事务日志中为所删除每行记录一项。 TRUNCATE TABLE通过释放存储表数据所用数据页来删除数据,并且只在事务日志中记录页的释放。 TRUNCATE、DELETE和DROP三者的差异如下: TRUNCATE TABLE:删除内容,释放空间,但不删除定义。 DELETE TABLE:删除内容,不删除定义,不释放空间。 DROP TABLE:删除内容和定义,释放空间。
  • 语法格式 清理表数据。 TRUNCATE [ TABLE ] [ ONLY ] {table_name [ * ]} [, ... ] [ CONTINUE IDENTITY ] [ CASCADE | RESTRICT] [ PURGE ]; 清理表分区的数据。 ALTER TABLE [ IF EXISTS ] { [ ONLY ] table_name | table_name * | ONLY ( table_name ) } TRUNCATE PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ];
  • 示例 清理表数据 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 --创建表reason。 gaussdb=# CREATE TABLE reason (r_reason_sk int,r_reason_id varchar(16),r_reason_desc varchar(100)); --向表中插入多条记录。 gaussdb=# INSERT INTO reason values(1,'AAAAAAAABAAAAAAA','reason 1'), (5,'AAAAAAAABAAAAAAA','reason 2'), (15,'AAAAAAAABAAAAAAA','reason 3'), (25,'AAAAAAAABAAAAAAA','reason 4'), (35,'AAAAAAAABAAAAAAA','reason 5'), (45,'AAAAAAAACAAAAAAA','reason 6'); --查看表的信息,大小约为8kB gaussdb=# \d+ List of relations Schema | Name | Type | Owner | Size | Storage | Description --------+--------+-------+-------+------------+------------------------------------------------------------------+------------- public | reason | table | omm1 | 8192 bytes | {orientation=row,compression=no,storage_type=USTORE,segment=off} | (1 row) --使用DELETE语句不带WHERE条件,清空表的数据,并查看表的大小。 gaussdb=# DELETE FROM reason; gaussdb=# \d+ List of relations Schema | Name | Type | Owner | Size | Storage | Description --------+--------+-------+-------+------------+------------------------------------------------------------------+------------- public | reason | table | omm1 | 8192 bytes | {orientation=row,compression=no,storage_type=USTORE,segment=off} | (1 row) --使用TRUNCATE清空表reason,并查看表的大小 gaussdb=# TRUNCATE TABLE reason; gaussdb=# \d+ List of relations Schema | Name | Type | Owner | Size | Storage | Description --------+--------+-------+-------+---------+------------------------------------------------------------------+------------- public | reason | table | omm1 | 0 bytes | {orientation=row,compression=no,storage_type=USTORE,segment=off} | (1 row) --删除表。 gaussdb=# DROP TABLE reason; 清理分区表数据。 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 --创建分区表。 gaussdb=# CREATE TABLE reason_p( r_reason_sk integer, r_reason_id character(16), r_reason_desc character(100) )PARTITION BY RANGE (r_reason_sk)( partition p_05_before values less than (05), partition p_15 values less than (15), partition p_25 values less than (25), partition p_35 values less than (35), partition p_45_after values less than (MAXVALUE) ); --插入数据。 gaussdb=# INSERT INTO reason_p values(1,'AAAAAAAABAAAAAAA','reason 1'), (5,'AAAAAAAABAAAAAAA','reason 2'), (15,'AAAAAAAABAAAAAAA','reason 3'), (25,'AAAAAAAABAAAAAAA','reason 4'), (35,'AAAAAAAABAAAAAAA','reason 5'), (45,'AAAAAAAACAAAAAAA','reason 6'); --清空分区p_05_before。 gaussdb=# ALTER TABLE reason_p TRUNCATE PARTITION p_05_before UPDATE GLOBAL INDEX; --清空分区p_15。 gaussdb=# ALTER TABLE reason_p TRUNCATE PARTITION for (13) UPDATE GLOBAL INDEX; --清空分区表。 gaussdb=# TRUNCATE TABLE reason_p; --删除表reason_p。 gaussdb=# DROP TABLE reason_p;
  • 参数说明 ONLY 如果声明ONLY,只有指定的表会被清空。如果没有声明ONLY,这个表以及其所有子表(若有)会被清空。 table_name 目标表的名称(可以有模式修饰)。 取值范围:已存在的表名。 CONTINUE IDENTITY 不改变序列的值。这是缺省值。 CASCADE | RESTRICT CASCADE:级联清空所有由于CASCADE而被添加到组中的表。 RESTRICT(缺省值):如果其他表在该表上有外键引用则拒绝清空。 PURGE 默认将表数据放入回收站中,PURGE直接清理。 partition_name 目标分区表的分区名。 取值范围:已存在的分区名。 partition_value 指定的分区键值。 通过PARTITION FOR子句指定的这一组值,可以唯一确定一个分区。 取值范围:需要进行删除数据分区的分区键的取值范围。 使用PARTITION FOR子句时,partition_value所在的整个分区会被清空。
  • 注意事项 UPDATE 更新这个扩展到一个新的版本。这个扩展必须满足一个适用的更新脚本(或者一系列脚本), 才能修改当前安装版本到一个要求的版本。 SET SCHEMA 移动扩展对象到另一个模式。这个扩展必须relocatable才能使命令成功。 ADD member_object 添加一个已存在对象到扩展主要适用于扩展更新脚本上。这个对象接着会被视为扩展的成员, 该对象只能通过取消扩展来取消 。 DROP member_object 从扩展上移除一个成员对象。主要适用于扩展更新脚本上,这个对象没有被取消,只是从扩展里被移除。 您必须拥有扩展来使用 ALTER EXTENSION。这个 ADD/DROP 方式要求 添加/删除对象的所有权。 要使用该功能,需要设置support_extended_features为true。
  • 参数说明 name 已安装扩展的名称。 new_version 扩展的新版本。可以通过被标识符和字面字符重写。如果不指定的扩展的新版本,ALTER EXTENSION UPDATE会更新到扩展的控制文件中显示的默认版本。 new_schema 扩展的新模式。 object_name agg_name function_name operator_name 从扩展里被添加或移除的对象的名称。包含表、聚合 、域、外链表、函数、操作符、操作符类、操作符族、序列、文本搜索对象、类型和能被模式合格的视图的名称。 agg_type 在聚合函数操作上的一个输入数据类型,去引用一个零参数聚合函数,写 * 代替这些输入数据类型列表。 source_type 强制转换的源数据类型的名称。 target_type 强制转换的目标数据类型的名称。 argmode 这个函数参数的模型:IN、OUT、INOUT或者 VARIADIC。如果省略的话,默认值为IN。ALTER EXTENSION 不关心OUT参数,因为确认函数的一致性只需要输入参数,因此列出 IN、INOUT和 VARIADIC参数就足够了。 argname 函数参数的名称。ALTER EXTENSION不关心参数名称,确认函数的一致性只需要参数数据类型。 argtype 函数参数的数据类型(可以有模式修饰)。 left_type right_type 操作符参数的数据类型(可以有模式修饰),为前缀或后缀运算符的丢失参数写NONE。
  • 语法格式 修改扩展的版本。 ALTER EXTENSION name UPDATE [ TO new_version ]; 修改扩展的模式。 ALTER EXTENSION name SET SCHEMA new_schema; 添加或删除扩展的成员对象。 ALTER EXTENSION name { ADD | DROP } member_object; 其中成员对象member_object写法为: {AGGREGATE agg_name (agg_type [, ...] ) | CAST (source_type AS target_type) | COLLATION object_name | CONVERSION object_name | DOMAIN object_name | EVENT TRIGGER object_name | FOREIGN DATA WRAPPER object_name | FOREIGN TABLE object_name | FUNCTION function_name ( [ [ argname ] [ argmode ] argtype [, ...] ] ) | MATERIALIZED VIEW object_name | OPERATOR operator_name (left_type, right_type) | OPERATOR CLASS object_name USING index_method | OPERATOR FAMILY object_name USING index_method | [ PROCEDURAL ] LANGUAGE object_name | SCHEMA object_name | SEQUENCE object_name | SERVER object_name | TABLE object_name | TEXT SEARCH CONFIGURATION object_name | TEXT SEARCH DICTIONARY object_name | TEXT SEARCH PARSER object_name | TEXT SEARCH TEMPLATE object_name | TYPE object_name | VIEW object_name}
  • 示例 更新plpgsql扩展到版本 2.0: gaussdb=# ALTER EXTENSION plpgsql UPDATE TO '2.0'; 更新plpgsql扩展的模式为utils: --创建SCHEMA。 gaussdb=# CREATE SCHEMA utils; --更新 plpgsql 扩展的模式为utils。 gaussdb=# ALTER EXTENSION plpgsql SET SCHEMA utils; --删除SCHEMA。 gaussdb=# DROP SCHEMA utils; 添加一个已存在的函数给 plpgsql 扩展: gaussdb=# ALTER EXTENSION plpgsql ADD FUNCTION populate_record(anyelement, plpgsql);
  • GS_PLAN_TRACE GS_PLAN_TRACE系统表是用于存储plan trace的系统表,主要记录的是DML语句生成计划过程的详情,只有初始用户才具有对该系统表进行写的权限,只要用户具备sysadmin权限就可以对该系统表进行读操作。 表1 GS_PLAN_TRACE字段 名称 类型 描述 query_id text 当前请求的唯一id。 query text 当前请求的sql语句,该字段大小不会超过系统参数track_activity_query_size指定的大小。 unique_sql_id bigint 当前请求sql的唯一id。 plan text 当前请求sql对应的查询计划文本,该字段大小不会超过10K。 plan_trace text 当前请求sql对应的查询计划生成过程的明细,该字段大小不会超过300M。 owner oid 当前请求sql用户的oid。 modifydate timestamp with time zone 当前plan trace的更新时间(当前指的是 plan trace创建时间)。 父主题: 其他系统表
  • DBE_SQL_UTIL.create_hint_sql_patch create_hint_sql_patch是用于创建调优SQL PATCH的接口函数,返回执行是否成功,如表1所示。本函数是原函数的重载函数,支持通过parent_unique_sql_id值限制hint patch的生效范围。 限制:仅初始用户、sysadmin、opradmin和monadmin用户有权限调用。 表1 DBE_SQL_UTIL.create_hint_sql_patch重载函数入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 unique_sql_id IN bigint 查询全局唯一id。 parent_unique_sql_id IN bigint 标识外层SQL语句的全局唯一ID,值为0时表示限制存储过程外语句SQL PATCH生效;非0值表示限制特定存储过程生效。 hint_string IN text Hint文本。 description IN text PATCH的备注,默认值为NULL。 enabled IN bool PATCH是否生效,默认值为true。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • 功能描述 RELEASE SAVEPOINT语句用于删除一个当前事务先前定义的保存点。 把一个保存点删除就令其无法作为回滚点使用,除此之外它没有其它用户可见的行为。它并不能撤销在保存点建立起来之后执行的命令的影响,要撤销那些命令可以使用ROLLBACK TO SAVEPOINT 。当不再需要的时候,删除一个保存点可以令系统在事务结束之前提前回收一些资源。 RELEASE SAVEPOINT也删除所有在指定的保存点建立之后的所有保存点。
  • 示例 --创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --创建一个新表。 gaussdb=# CREATE TABLE tpcds.table1(a int); --开启事务。 gaussdb=# START TRANSACTION; --插入数据。 gaussdb=# INSERT INTO tpcds.table1 VALUES (3); --建立保存点。 gaussdb=# SAVEPOINT my_savepoint; --插入数据。 gaussdb=# INSERT INTO tpcds.table1 VALUES (4); --删除保存点。 gaussdb=# RELEASE SAVEPOINT my_savepoint; --查询表的内容,会同时看到3和4。 gaussdb=# SELECT * FROM tpcds.table1; a --- 3 4 (2 rows) --提交事务。 gaussdb=# COMMIT; --再次查询表的内容,会同时看到3和4。 gaussdb=# SELECT * FROM tpcds.table1; a --- 3 4 (2 rows) --删除表。 gaussdb=# DROP TABLE tpcds.table1; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds CASCADE;
  • 示例 --创建自定义函数。 gaussdb=# CREATE OR REPLACE FUNCTION int_add(int,int) returns int as $BODY$ declare begin return $1 + $2; end; $BODY$ language plpgsql; --创建聚集函数。 gaussdb=# CREATE AGGREGATE sum_add(int) ( sfunc = int_add, stype = int, initcond = '0' ); --创建测试表和添加数据。 gaussdb=# CREATE TABLE test_sum(a int,b int,c int); gaussdb=# INSERT INTO test_sum VALUES(1,2),(2,3),(3,4),(4,5); --执行聚集函数。 gaussdb=# SELECT sum_add(a) FROM test_sum; sum_add ----------- 10 --删除聚集函数。 gaussdb=# DROP AGGREGATE sum_add(int); --删除自定义函数。 gaussdb=# DROP FUNCTION int_add(int,int); --删除测试表。 gaussdb=# DROP TABLE test_sum;
  • 参数说明 name 要创建的聚合函数名(可以有模式修饰) 。 input_data_type 该聚合函数要处理的输入数据类型。要创建一个零参数聚合函数,可以使用*代替输入数据类型列表。(count(*)就是这种聚合函数的一个实例。) base_type 在CREATE AGGREGATE语法中,输入数据类型是通过basetype参数指定的,而不是写在聚合的名称之后。需要注意的是这种以前语法仅允许一个输入参数。要创建一个零参数聚合函数,可以将basetype指定为"ANY"(而不是*)。 sfunc 将在每一个输入行上调用的状态转换函数的名称。 对于有N个参数的聚合函数,sfunc必须有 +1 个参数,其中的第一个参数类型为state_data_type,其余的匹配已声明的输入数据类型。 函数必须返回一个state_data_type类型的值。 这个函数接受当前状态值和当前输入数据,并返回下个状态值。A数据库的转换函数默认行为为strict,即会跳过NULL输入值。GaussDB需要用户自行定义转换函数strict属性。 state_data_type 聚合的状态值的数据类型。 ffunc 在转换完所有输入行后调用的最终处理函数,它计算聚合的结果。 此函数必须接受一个类型为state_data_type的参数。 聚合的输出数据类型被定义为此函数的返回类型。 如果没有声明ffunc则使用聚合结果的状态值作为聚合的结果,且输出类型为state_data_type。 initial_condition 状态值的初始设置(值)。 它必须是一个state_data_type类型可以接受的文本常量值。 如果没有声明,状态值初始为null 。 sort_operator 用于MIN或MAX类型聚合的排序操作符。 这个只是一个操作符名 (可以有模式修饰)。这个操作符假设接受和聚合一样的输入数据类型。 collection_func 目前该参数在集中式下不生效。 initial_collection_condition 收集函数状态值的初始设置(值)。 它必须是一个state_data_type类型可以接受的文本常量值。 如果没有声明,状态值初始为null 。 init_func sfunc状态值的初始设置函数。 它不能返回null值,必须返回state_data_type类型并且没有入参。如果同时设置init_func和initial_condition,init_func的返回值将会优先作为初始状态值。 is_shippable 标记该聚集函数是否能够下推执行,仅可以取值true或者false。目前该参数不影响系统内置聚集函数的下推行为,仅影响用户自定义聚集函数的行为,默认值为false。目前该参数在集中式下不生效。
  • 语法格式 CREATE AGGREGATE name ( input_data_type [ , ... ] ) ( SFUNC = sfunc, -- SFUNC1 = sfunc, STYPE = state_data_type -- STYPE1 = state_data_type, [ , FINALFUNC = ffunc ] [ , INITCOND = initial_condition ] -- [ , INITCOND1 = initial_condition ] [ , SORTOP = sort_operator ] [ , CFUNC = collection_func ] [ , INITCOLLECT = initial_collection_condition ] [ , IFUNC = init_func ] [ , SHIPPABLE = is_shippable ] ); or the old syntax CREATE AGGREGATE name ( BASETYPE = base_type, SFUNC = sfunc, -- SFUNC1 = sfunc, STYPE = state_data_type -- STYPE1 = state_data_type, [ , FINALFUNC = ffunc ] [ , INITCOND = initial_condition ] -- [ , INITCOND1 = initial_condition ] [ , SORTOP = sort_operator ] [ , CFUNC = collection_func ] [ , INITCOLLECT = initial_collection_condition ] [ , IFUNC = init_func ] );
  • MY_COLL_TYPES MY_COLL_TYPES视图显示当前用户创建的集合类型信息。默认所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_COLL_TYPES字段 名称 类型 描述 owner character varying(128) 集合的所有者。 type_name character varying(128) 集合的名称。 coll_type character varying(128) 集合的描述。 upper_bound numeric 暂不支持,值为NULL。 elem_type_mod character varying(7) 暂不支持,值为NULL。 elem_type_owner character varying(128) 集合基于的元素类型的所有者。该值主要用于用户定义的类型。 elem_type_name character varying(128) 集合所依据的数据类型或用户定义类型的名称。 length numeric 暂不支持,值为NULL。 precision numeric 暂不支持,值为NULL。 scale numeric 暂不支持,值为NULL。 character_set_name character varying(44) 暂不支持,值为NULL。 elem_storage character varying(7) 暂不支持,值为NULL。 nulls_stored character varying(3) 暂不支持,值为NULL。 char_used character varying(1) 暂不支持,值为NULL。 父主题: 其他系统视图
  • 函数和操作符 操作符可以对一个或多个操作数进行处理,位置上可能处于操作数之前、之后,或两个操作数中间。完成处理之后,返回处理结果。 函数是对一些业务逻辑的封装,以完成特定的功能。函数可以有参数,也可以没有参数。函数是有返回类型的,执行完成后,会返回执行结果。 对于系统函数,用户可以进行修改,但是修改之后系统函数的语义可能会发生改变,从而导致系统控制紊乱。正常情况下不允许用户手工修改系统函数。 当GUC参数behavior_compat_options含有'enable_funcname_with_argsname'选项时,投影别名显示完整函数。 当GUC参数enable_volatile_match_index设置为ON,且DBCOMPATIBILITY设置为A时,volatile类型函数可以匹配索引。volatile函数在部分索引下,不确保可以命中索引;在函数执行过程中含有隐式转换时,不确保命中索引。在本就不可以命中索引的场景中,开启此选项,volatile函数依然不能够命中索引。 当GUC参数enable_immutable_optimization设置为ON且DBCOMPATIBILITY设置为A时,如果immutable存储过程参数为常量或者可以被转换为常量的表达式(例如immutable函数,但是stable、volatile函数不可以),该场景下immutable存储过程并非每行执行一次。immutable存储过程在入参为行表达式的场景下为每行执行一次。在部分场景下,immutable存储过程执行次数会减少但不会减少至只执行一次。 逻辑操作符 比较操作符 字符处理函数和操作符 二进制字符串函数和操作符 位串函数和操作符 模式匹配操作符 数字操作函数和操作符 时间和日期处理函数和操作符 类型转换函数 几何函数和操作符 网络地址函数和操作符 文本检索函数和操作符 JSON/JSONB函数和操作符 HLL函数和操作符 SEQUENCE函数 数组函数和操作符 范围函数和操作符 聚集函数 窗口函数 安全函数 账本数据库的函数 密态函数和操作符 返回集合的函数 条件表达式函数 系统信息函数 系统管理函数 SPM计划管理函数 统计信息函数 触发器函数 HashFunc函数 提示信息函数 全局临时表函数 故障注入系统函数 AI特性函数 敏感数据发现函数 动态数据脱敏函数 层次递归查询函数 其他系统函数 内部函数 Global SysCache特性函数 数据损坏检测修复函数 XML类型函数 XMLTYPE类型函数 Global Plsql Cache特性函数 数据透视函数 通用标识符函数 SQL限流函数 向量数据库函数与操作符 多租数据库函数 废弃函数 父主题: SQL参考
共100000条