华为云用户手册

  • 示例 --创建SCHEMA。gaussdb=# CREATE SCHEMA tpcds;--创建表。gaussdb=# CREATE TABLE tpcds.customer_demographics_t2( CD_DEMO_SK INTEGER NOT NULL, CD_GENDER CHAR(1) , CD_MARITAL_STATUS CHAR(1) , CD_EDUCATION_STATUS CHAR(20) , CD_PURCHASE_ESTIMATE INTEGER , CD_CREDIT_RATING CHAR(10) , CD_DEP_COUNT INTEGER , CD_DEP_EMPLOYED_COUNT INTEGER , CD_DEP_COLLEGE_COUNT INTEGER);--开启事务。 gaussdb=# START TRANSACTION;--插入数据。gaussdb=# INSERT INTO tpcds.customer_demographics_t2 VALUES(1,'M', 'U', 'DOCTOR DEGREE', 1200, 'GOOD', 1, 0, 0);gaussdb=# INSERT INTO tpcds.customer_demographics_t2 VALUES(2,'F', 'U', 'MASTER DEGREE', 300, 'BAD', 1, 0, 0);--提交事务,让所有更改永久化。gaussdb=# COMMIT;--查询数据。gaussdb=# SELECT * FROM tpcds.customer_demographics_t2;--删除表tpcds.customer_demographics_t2。gaussdb=# DROP TABLE tpcds.customer_demographics_t2;--删除SCHEMA。gaussdb=# DROP SCHEMA tpcds CASCADE;
  • client_min_messages 参数说明:控制发送到客户端的消息级别。每个级别都包含排在它后面的所有级别中的信息。级别越低,发送给客户端的消息就越少。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 当client_min_messages和log_min_messages取相同值时,其值所代表的级别不同。 取值范围:枚举类型,有效值有debug、debug5、debug4、debug3、debug2、debug1、info、log、notice、warning、error、fatal、panic,其中debug和debug2等效。参数的详细信息请参见表1。在实际设置过程中,如果设置的级别大于error,为fatal或panic,系统会默认将级别转为error。 默认值:notice
  • 语法格式 修改用户的权限等信息。 ALTER USER user_name [ [ WITH ] option [ ... ] ]; 其中option子句为。 { CREATEDB | NOCREATEDB } | { CREATEROLE | NOCREATEROLE } | { INHERIT | NOINHERIT } | { AUDITADMIN | NOAUDITADMIN } | { SYSADMIN | NOSYSADMIN } | {MONADMIN | NOMONADMIN} | {OPRADMIN | NOOPRADMIN} | {POLADMIN | NOPOLADMIN} | { USEFT | NOUSEFT } | { LOG IN | NOLOGIN } | { REPLICATION | NOREPLICATION } | {VCADMIN | NOVCADMIN} | {PERSISTENCE | NOPERSISTENCE} | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' [EXPIRED] | DISABLE | EXPIRED } | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' | EXPIRED ] | DISABLE } | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | PERM SPACE 'spacelimit' | PGUSER 修改用户名。 ALTER USER user_name RENAME TO new_name; 锁定或解锁。 ALTER USER user_name ACCOUNT { LOCK | UNLOCK }; 修改与用户关联的指定会话参数值。 ALTER USER user_name SET configuration_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }; 重置与用户关联的指定会话参数值。 ALTER USER user_name RESET { configuration_parameter | ALL };
  • 示例 --创建用户jim,登录密码为********。gaussdb=# CREATE USER jim PASSWORD '********';--修改用户jim的登录密码。gaussdb=# ALTER USER jim IDENTIFIED BY '**********' REPLACE '********';--将enable_seqscan的值设置为on, 设置成功后,在下一会话中生效。gaussdb=# ALTER USER jim SET enable_seqscan TO on;--重置jim的enable_seqscan参数。gaussdb=# ALTER USER jim RESET enable_seqscan;--锁定jim账户。gaussdb=# ALTER USER jim ACCOUNT LOCK;--解锁jim账户。gaussdb=# ALTER USER jim ACCOUNT UNLOCK;--修改用户名。gaussdb=# ALTER USER jim RENAME TO lisa;--删除用户。gaussdb=# DROP USER lisa CASCADE;
  • time_to_target_rpo 参数说明:双集群异地灾备模式下,设置主集群发生异常发生时到已归档到OBS的恢复点所允许的time_to_target_rpo秒。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0~3600(秒) 双集群异地灾备模式下,主集群日志将被归档到OBS。0是指不开启日志流控,1~3600是指设置主集群发生异常发生时到已归档到OBS的恢复点所允许的time_to_target_rpo秒,保证主集群因灾难崩溃时,最多可能丢失的数据的时长在允许范围内。time_to_target_rpo设置时间过小会影响主机的性能,设置过大会失去流控效果。 默认值:10
  • archive_timeout 参数说明:表示归档周期。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 超过该参数设定的时间时强制切换WAL段。 由于强制切换而提早关闭的归档文件仍然与完整的归档文件长度相同。因此,将archive_timeout设为很小的值将导致占用巨大的归档存储空间,建议将archive_timeout设置为60秒。 取值范围:整型,0 ~ 1073741823‬,单位为秒,其中0表示禁用该功能。 默认值:0
  • 语法格式 1 CREATE MASKING POLICY policy_name masking_clause[, ...] [ policy_filter_clause ] [ENABLE | DISABLE]; masking_clause: 1 masking_function ON LABEL(label_name[, ...]) masking_function: maskall不是预置函数,硬编码在代码中,不支持\df展示。 预置时脱敏方式如下: { maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking }
  • 参数说明 policy_name 审计策略名称,需要唯一,不可重复。 取值范围:字符串,要符合标识符命名规范。 label_name 资源标签名称。 masking_clause 指出使用何种脱敏函数对被label_name标签标记的数据库资源进行脱敏,支持用schema.function的方式指定脱敏函数。 policy_filter 指出该脱敏策略对何种身份的用户生效,若为空表示对所有用户生效。 FILTER_TYPE 描述策略过滤的条件类型,包括IP | APP | ROLES。 filter_value 指具体过滤信息内容,例如具体的IP,具体的APP名称,具体的用户名。 ENABLE|DISABLE 可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。
  • 示例 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 --创建dev_mask和bob_mask用户。gaussdb=# CREATE USER dev_mask PASSWORD '********';gaussdb=# CREATE USER bob_mask PASSWORD '********';--创建一个表tb_for_masking。gaussdb=# CREATE TABLE tb_for_masking(idx int, col1 text, col2 text, col3 text, col4 text, col5 text, col6 text, col7 text,col8 text);gaussdb=# INSERT INTO tb_for_masking VALUES(1, '9876543210', 'usr321usr', 'abc@huawei.com', 'abc@huawei.com', '1234-4567-7890-0123', 'abcdef 123456 ui 323 jsfd321 j3k2l3', '4880-9898-4545-2525', 'this is a llt case');gaussdb=# INSERT INTO tb_for_masking VALUES(2, '0123456789', 'lltc123llt', 'abc@gmail.com', 'abc@gmail.com', '9876-5432-1012-3456', '1234 abcd ef 56 gh78ijk90lm', '4856-7654-1234-9865','this,is.a!LLT?case');--创建资源标签标记敏感列。gaussdb=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1);gaussdb=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2);gaussdb=# CREATE RESOURCE LABEL mask_lb3 ADD COLUMN(tb_for_masking.col3);gaussdb=# CREATE RESOURCE LABEL mask_lb4 ADD COLUMN(tb_for_masking.col4);gaussdb=# CREATE RESOURCE LABEL mask_lb5 ADD COLUMN(tb_for_masking.col5);gaussdb=# CREATE RESOURCE LABEL mask_lb6 ADD COLUMN(tb_for_masking.col6);gaussdb=# CREATE RESOURCE LABEL mask_lb7 ADD COLUMN(tb_for_masking.col7);gaussdb=# CREATE RESOURCE LABEL mask_lb8 ADD COLUMN(tb_for_masking.col8);--创建脱敏策略。gaussdb=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1);gaussdb=# CREATE MASKING POLICY maskpol2 alldigitsmasking ON LABEL(mask_lb2);gaussdb=# CREATE MASKING POLICY maskpol3 basicemailmasking ON LABEL(mask_lb3);gaussdb=# CREATE MASKING POLICY maskpol4 fullemailmasking ON LABEL(mask_lb4);gaussdb=# CREATE MASKING POLICY maskpol5 creditcardmasking ON LABEL(mask_lb5);gaussdb=# CREATE MASKING POLICY maskpol6 shufflemasking ON LABEL(mask_lb6);gaussdb=# CREATE MASKING POLICY maskpol7 regexpmasking('[\d+]','*',2, 9) ON LABEL(mask_lb7);--创建仅对用户dev_mask和bob_mask,客户端工具为gsql,IP地址为'10.20.30.40', '127.0.0.0/24'场景下生效的脱敏策略。gaussdb=# CREATE MASKING POLICY maskpol8 randommasking ON LABEL(mask_lb8) FILTER ON ROLES(dev_mask, bob_mask), APP(gsql), IP('10.20.30.40', '127.0.0.0/24');--查看脱敏策略生效gaussdb=# SELECT * FROM tb_for_masking; idx | col1 | col2 | col3 | col4 | col5 | col6 | col7 | col8-----+------------+------------+----------------+----------------+---------------------+-------------------------------------+---------------------+-------------------- 1 | xxxxxxxxxx | usr000usr | xxx@huawei.com | xxx@xxxxxx.com | xxxx-xxxx-xxxx-0123 | s 2iju1bcjk243df333d61l 22 53ef3a | 48**-****-*545-2525 | this is a llt case 2 | xxxxxxxxxx | lltc000llt | xxx@gmail.com | xxx@xxxxx.com | xxxx-xxxx-xxxx-3456 | j 71fem0l286dbia543 g k9 ch | 48**-****-*234-9865 | this,is.a!LLT?case(2 rows)--使用gsql工具,IP地址为'10.20.30.40',用户dev_mask查看tb_for_masking。gaussdb=# GRANT ALL PRIVILEGES TO dev_mask;gaussdb=# GRANT ALL PRIVILEGES TO bob_mask;gaussdb=# SET role dev_mask PASSWORD 'xxxxxxxxxx';--使用maskpol8脱敏,结果随机,每次不同。gaussdb=# SELECT col8 FROM tb_for_masking; col8-------------------- 9f1425b3835cc30d99 9585b4ea8ea8ddcc5b(2 rows)gaussdb=# SET role bob_mask PASSWORD 'xxxxxxxxxx';gaussdb=# SELECT col8 FROM tb_for_masking; col8-------------------- f29ef3a0769a1f417c 806aa46409482d838f(2 rows)--删除脱敏策略。gaussdb=# DROP MASKING POLICY maskpol1, maskpol2, maskpol3, maskpol4, maskpol5, maskpol6, maskpol7, maskpol8;--删除资源标签。gaussdb=# DROP RESOURCE LABEL mask_lb1, mask_lb2, mask_lb3, mask_lb4, mask_lb5, mask_lb6, mask_lb7, mask_lb8;--删除表tb_for_masking。gaussdb=# DROP TABLE tb_for_masking;--删除用户dev_mask和bob_mask。gaussdb=# DROP USER dev_mask, bob_mask;
  • enable_stream_concurrent_update 参数说明:控制优化器在并发更新场景下对stream的使用,该参数受限于enable_stream_operator参数。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示允许优化器对update语句生成stream计划。 off表示优化器对update语句仅能生成非stream计划。 默认值:on
  • enable_stream_operator 参数说明:控制优化器对stream的使用。当enable_stream_operator参数关闭时,会有大量关于计划不能下推的日志记录到日志文件中。如果用户不需要这些日志内容,建议用户在enable_stream_operator参数关闭时,也同时关闭enable_unshipping_log参数。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示使用。 off表示不使用。 默认值: 独立部署:off 金融版(标准型):on 企业版:on 金融版(数据计算型):on
  • best_agg_plan 参数说明:对于stream下的Agg操作,优化器会生成三种计划: hashagg+gather(redistribute)+hashagg。 redistribute+hashagg(+gather)。 hashagg+redistribute+hashagg(+gather)。 本参数用于控制优化器生成哪种hashagg的计划。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:0,1,2,3 取值为1时,强制生成第一种计划。 取值为2时,如果group by列可以重分布,强制生成第二种计划,否则生成第一种计划。 取值为3时,如果group by列可以重分布,强制生成第三种计划,否则生成第一种计划。 取值为0时,优化器会根据以上三种计划的估算cost选择最优的一种计划生成。 默认值:0
  • qrw_inlist2join_optmode 参数说明:控制是否使用inlist-to-join查询重写。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串 disable:关闭inlist2join查询重写。 cost_base:基于代价的inlist2join查询重写。 rule_base:基于规则的inlist2join查询重写,即强制使用inlist2join查询重写。 任意正整数:inlist2join查询重写阈值,即in子句内的list内元素个数大于该阈值,进行inlist2join查询重写。 默认值:cost_base
  • expected_computing_nodegroup 参数说明:标识选定的计算Node Group模式或目标计算Node Group。Node Group目前为内部用机制,用户无需设置。 共4种计算Node Group模式,用于关联操作和聚集操作时选定计算Node Group。在每一种模式中,优化器有针对性地选定几个候选计算Node Group,然后根据代价,从中为当前算子挑选最佳计算Node Group。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串 optimal:候选计算Node Group列表包含算子操作对象所在的Node Group和由当前用户具有COMPUTE权限的所有Node Group包含的所有DN构成的Node Group query:候选计算Node Group列表包含算子操作对象所在的Node Group和由当前查询涉及的所有基表所在Node Group包含的所有DN构成的Node Group Node Group名(enable_nodegroup_debug被设置为off):候选计算Node Group列表包含算子操作对象所在的Node Group和该指定的Node Group Node Group名(enable_nodegroup_debug被设置为on):候选计算Node Group为指定的Node Group 默认值:query
  • agg_redistribute_enhancement 参数说明:当进行Agg操作时,如果包含多个group by列且均不为分布列,进行重分布时会选择某一group by列进行重分布。本参数控制选择重分布列的策略。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示会选择估算distinct值最多的一个可重分布列作为重分布列。 off表示会选择第一个可重分布列为重分布列。 默认值:off
  • enable_nodegroup_debug 参数说明:控制优化器在多Node Group环境下,是否使用强制弹性计算。Node Group目前为内部用机制,用户无需设置。 该参数只在expected_computing_nodegroup被设置为具体Node Group时生效。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示强制将计算弹性到expected_computing_nodegroup所指定的Node Group进行计算。 off表示不强制使用某个Node Group进行计算。 默认值:off
  • default_limit_rows 参数说明:设置生成genericplan的缺省limit估算行数。此参数设置为正数时意为直接将设置的值作为估算limit的行数;为正数小数时,自动取整;为负数时代表使用百分比的形式设置默认的估算值,负数转换为默认百分比,即-5代表5%。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:浮点型,-100~DBL_MAX。 默认值:-10
  • 注意事项 在package specification中声明过的函数或者存储过程,必须在package body中找到定义。 在实例化中,无法调用带有commit/rollback的存储过程。 创建存储过程时,仅对CREATE的存储过程或PACKAGE本身加写锁,仅对执行过程中编译、执行会对函数和函数依赖的PACKAGE均加读锁。 不能在Trigger中调用package函数。 不能在外部SQL中直接使用package当中的变量。 不允许在package外部调用package的私有变量和存储过程。 不支持其它存储过程不支持的用法,例如,在function中不允许调用commit/rollback,则package的function中同样无法调用commit/rollback。 不支持schema与package同名。 只支持A风格的存储过程和函数定义。 不支持package内有同名变量,包括包内同名参数。 package的全局变量为session级,不同session之间package的变量不共享。 package中调用自治事务的函数,不允许使用package中的cursor变量,以及递归的使用package中cursor变量的函数。 package中不支持声明ref cursor变量。 package默认为SECURITY INVOKER权限,如果想将默认行为改为SECURITY DEFINER权限,需要设置guc参数behavior_compat_options='plsql_security_definer'。 被授予CREATE ANY PACKAGE权限的用户,可以在public模式和用户模式下创建PACKAGE。 如果需要创建带有特殊字符的package名,特殊字符中不能含有空格,并且最好设置GUC参数behavior_compat_options="skip_insert_gs_source",否则可能引起报错。 package创建时依赖未定义对象,如参数behavior_compat_options='plpgsql_dependency'打开,创建可执行,通过WARNING提示;如参数未打开,package创建不可执行。 如package中A风格函数已被视图直接依赖,且参数behavior_compat_options='plpgsql_dependency'打开,再次创建包体后视图可正常访问;如参数未打开,视图访问失败。 创建package函数时,其参数默认值不支持含有变量。 包头在PG_OBJECT的类型为'S'(SPECIFICATION简称),包体在PG_OBJECT中的类型为'B'(BODY简称),当创建的PACKAGE对象失效时,可以通过PG_OBJECT中的VALID字段来查找PACKAGE失效对象的OID,并且使用“ALTER PACKAGE PKG_NAME COMPILE”来重新编译PACKAGE,使其有效。 在创建package内的函数时,如果函数名字为schema.func或package.func形式,则只会取func的名字,前面的Schema声明或者Package声明无效,如果需要默认禁用这种行为,可以设置guc参数behavior_compat_options='forbid_package_function_with_prefix'
  • 语法格式 CREATE PACKAGE SPECIFICATION语法格式。 CREATE [ OR REPLACE ] PACKAGE [ schema ] package_name [ invoker_rights_clause ] { IS | AS } item_list_1 END package_name;invoker_rights_clause可以被声明为AUTHID DEFINER或者AUTHID CURRENT_USER,分别为定义者权限和调用者权限。item_list_1可以为声明的变量或者存储过程以及函数。 PACKAGE SPECIFICATION(包头)声明了包内的公有变量、函数、异常等,可以被外部函数或者存储过程调用。在PACKAGE SPECIFICATION中只能声明存储过程,函数,不能定义存储过程或者函数。 CREATE PACKAGE BODY语法格式。 CREATE [ OR REPLACE ] PACKAGE BODY [ schema ] package_name { IS | AS } declare_section [ initialize_section ] END package_name; PACKAGE BODY(包体内)定义了包的私有变量,函数等。如果变量或者函数没有在PACKAGE SPECIFICATION中声明过,那么这个变量或者函数则为私有变量或者函数。 PACKAGE BODY也可以声明实例化部分,用来初始化package,详见示例。
  • 示例 CREATE PACKAGE SPECIFICATION示例: gaussdb=# CREATE OR REPLACE PACKAGE emp_bonus ISvar1 int:=1;--公有变量。var2 int:=2;PROCEDURE testpro1(var3 int);--公有存储过程,可以被外部调用。END emp_bonus;/ CREATE PACKAGE BODY示例: gaussdb=# drop table if exists test1;gaussdb=# create or replace package body emp_bonus isvar3 int:=3;var4 int:=4;procedure testpro1(var3 int)isbegincreate table if not exists test1(col1 int);insert into test1 values(var1);insert into test1 values(var4);end;begin --实例化开始。var4:=9;testpro1(var4);end emp_bonus;/ ALTER PACKAGE OWNER示例: --将PACKAGE emp_bonus的所属者改为omm。gaussdb=# ALTER PACKAGE emp_bonus OWNER TO omm; 调用PACKAGE示例: --使用call调用package存储过程。gaussdb=# call emp_bonus.testpro1(1); --使用select调用package存储过程。gaussdb=# select emp_bonus.testpro1(1); --匿名块里调用package存储过程。gaussdb=# beginemp_bonus.testpro1(1);end;/
  • global_syscache_threshold 参数说明:全局系统缓存内存最大占用大小。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 需要打开enable_global_syscache参数。 取值范围:整型,16384 ~ 1073741824,单位为kB。 默认值:163840 推荐计算公式:热点DB个数和线程个数的最小值乘以每个DB分配的内存大小,即global_syscache_threshold = min(count(hot dbs),count(threads)) * memofdb。 热点DB数即访问较为频繁的数据库,线程数在线程池模式下取线程池线程个数和后台线程个数之和,非线程池模式不需要计算这个值,直接使用热点DB数。 memofdb即平均每个db应该分配的内存,每个DB的底噪内存是2M,平均每增加一个表或者索引,增加11k内存。 如果设置的值过小,会导致内存频繁淘汰,内存存在大量碎片无法回收,导致内存控制失效。
  • 注意事项 ANALYZE非临时表不能在一个匿名块、事务块、函数或存储过程内被执行。支持存储过程中ANALYZE临时表,不支持统计信息回滚操作。 ANALYZE VERIFY 场景不触发远程读,因此远程读参数不生效。对于关键系统表出现错误被系统检测出页面损坏时,将直接报错不再继续检测。 如果没有指定参数,ANALYZE处理当前数据库里用户拥有相应权限的每个表。如果参数中指定了表,ANALYZE只处理指定的表。 要对一个表进行ANALYZE操作,通常用户必须是表的所有者或者被授予了指定表VACUUM权限的用户,默认系统管理员有该权限。数据库的所有者允许对数据库中除了共享目录以外的所有表进行ANALYZE操作(该限制意味着只有系统管理员才能真正对一个数据库进行ANALYZE操作)。ANALYZE命令会跳过那些用户没有权限的表。 ANALYZE不收集无法做比较或等值运算的列,例如cursor类型。 如果拟分析的表成了一个空表,ANALYZE不会记录该表的统计信息,而原来已有统计信息则会保留。
  • 功能描述 用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC、PG_STATISTIC_EXT下,执行ANALYZE命令后,可在上述系统表或系统视图PG_STATS、PG_EXT_STATS内查询收集到的统计信息。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。 如果没有指定参数,ANALYZE会分析当前数据库中的每个表和分区表。同时也可以通过指定table_name、column_name和partition_name参数把分析限定在特定的表、列或分区表中。 ANALYZE|ANALYSE VERIFY用于检测数据库中普通表的数据文件是否损坏。
  • 语法格式 收集表的统计信息。 { ANALYZE | ANALYSE } [ VERBOSE ] [ table_name [ ( column_name [, ...] ) ] ]; 收集分区表的分区统计信息。该语法在功能上尚不支持。 { ANALYZE | ANALYSE } [ VERBOSE ] table_name [ ( column_name [, ...] ) ] PARTITION ( patrition_name ) ; 普通分区表目前支持针对某个分区的统计信息的语法,但功能上不支持针对某个分区的统计信息收集。
  • 参数说明 VERBOSE 启用显示进度信息。 如果指定了VERBOSE,ANALYZE发出进度信息,表明目前正在处理的表。各种有关表的统计信息也会打印出来。 table_name 需要分析的特定表的表名(可能会带模式名),如果省略,将对数据库中的所有表(非外部表)进行分析。 对于ANALYZE收集统计信息,目前仅支持行存表。 取值范围:已有的表名。 column_name,column_1_name,column_2_name 需要分析特定列的列名,默认为所有列。 取值范围:已有的列名。 partition_name 如果table为分区表,在关键字PARTITION后面指定分区名partition_name表示分析该分区表的统计信息。目前语法上支持分区表做ANALYZE,但功能实现上暂不支持对指定分区统计信息的分析。 取值范围:表的某一个分区名。 index_name 需要分析的特定索引表的表名(可能会带模式名)。 取值范围:已有的表名。 FAST|COMPLETE FAST模式下主要对于表的CRC和page header进行校验,如果校验失败则会告警; 而COMPLETE模式下,则主要对表的指针、tuple进行解析校验。 CASCADE CASCADE模式下会对当前表的所有索引进行检测处理。
  • 示例 --创建表。gaussdb=# CREATE TABLE customer_info(WR_RETURNED_DATE_SK INTEGER ,WR_RETURNED_TIME_SK INTEGER ,WR_ITEM_SK INTEGER NOT NULL,WR_REFUNDED_CUSTOMER_SK INTEGER); --创建分区表gaussdb=# CREATE TABLE customer_par(WR_RETURNED_DATE_SK INTEGER ,WR_RETURNED_TIME_SK INTEGER ,WR_ITEM_SK INTEGER NOT NULL,WR_REFUNDED_CUSTOMER_SK INTEGER)PARTITION BY RANGE(WR_RETURNED_DATE_SK)(PARTITION P1 VALUES LESS THAN(2452275),PARTITION P2 VALUES LESS THAN(2452640),PARTITION P3 VALUES LESS THAN(2453000),PARTITION P4 VALUES LESS THAN(MAXVALUE))ENABLE ROW MOVEMENT; --使用ANALYZE语句更新统计信息。gaussdb=# ANALYZE customer_info;gaussdb=# ANALYZE customer_par; --使用ANALYZE VERBOSE语句更新统计信息,并输出表的相关信息。gaussdb=# ANALYZE VERBOSE customer_info;INFO: ANALYZE INFO : estimate total rows of "customer_info": scanned 0 pages of total 0 pages with 1 retry times, containing 0 live rows and 0 dead rows, estimated 0 total rows(datanode pid=38661)INFO: ANALYZE INFO : "customer_info": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows(datanode pid=38661)ANALYZE 若环境若有故障,需查看数据库主节点的log。 --删除表。gaussdb=# DROP TABLE customer_info;gaussdb=# DROP TABLE customer_par;
  • 示例 --创建自定义函数。gaussdb=# CREATE OR REPLACE FUNCTION int_add(int,int) returns int as $BODY$declarebegin 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;
  • hll_default_expthresh(废弃) 参数说明:该参数可以用来设置从Explicit模式到Sparse模式的默认阈值大小。当前已经使用参数hll_default_log2explicit替代类似功能。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,-1~7。-1表示自动模式,0表示跳过Explicit模式,取1-7表示在基数到达2hll_default_expthresh时切换模式。 默认值:-1
  • 参数说明 name 要创建的聚合函数名(可以有模式修饰) 。 input_data_type 该聚合函数要处理的输入数据类型。要创建一个零参数聚合函数,可以使用*代替输入数据类型列表。 (count(*)就是这种聚合函数的一个实例。 ) base_type 在以前的CREATE AGGREGATE语法中,输入数据类型是通过basetype参数指定的,而不是写在聚合的名称之后。 需要注意的是这种以前语法仅允许一个输入参数。 要创建一个零参数聚合函数,可以将basetype指定为"ANY"(而不是*)。 sfunc 将在每一个输入行上调用的状态转换函数的名称。 对于有N个参数的聚合函数,sfunc必须有 +1 个参数,其中的第一个参数类型为state_data_type,其余的匹配已声明的输入数据类型。 函数必须返回一个state_data_type类型的值。 这个函数接受当前状态值和当前输入数据,并返回下个状态值。 state_data_type 聚合的状态值的数据类型。 ffunc 在转换完所有输入行后调用的最终处理函数,它计算聚合的结果。 此函数必须接受一个类型为state_data_type的参数。 聚合的输出数据 类型被定义为此函数的返回类型。 如果没有声明ffunc则使用聚合结果的状态值作为聚合的结果,且输出类型为state_data_type。 initial_condition 状态值的初始设置(值)。 它必须是一个state_data_type类型可以接受的文本常量值。 如果没有声明,状态值初始为 NULL 。 sort_operator 用于MIN或MAX类型聚合的排序操作符。 这个只是一个操作符名 (可以有模式修饰)。这个操作符假设接受和聚合一样的输入数据类型。 collection_func 目前该参数在集中式下不生效。
  • 语法格式 CREATE AGGREGATE name ( input_data_type [ , ... ] ) ( SFUNC = sfunc, STYPE = state_data_type [ , FINALFUNC = ffunc ] [ , INITCOND = initial_condition ] [ , SORTOP = sort_operator ] [ , CFUNC = collection_func ])or the old syntaxCREATE AGGREGATE name ( BASETYPE = base_type, SFUNC = sfunc, STYPE = state_data_type [ , FINALFUNC = ffunc ] [ , INITCOND = initial_condition ] [ , SORTOP = sort_operator ] [ , CFUNC = collection_func ])
共99354条