华为云用户手册
-
ADM_SCHEDULER_PROG RAM S ADM_SCHEDULER_PROGRAMS视图显示数据库中所有可以调度的程序信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 ADM_SCHEDULER_PROGRAMS字段 名称 类型 描述 owner name 调度程序的所有者。 program_name text 调度程序的名称。 program_type character varying(16) 调度程序的类型。可用类型为: PLSQL_BLOCK:匿名存储过程快。 STORED_PROCEDURE:保存的存储过程。 EXTERNAL_SCRIPT:外部脚本。 program_action text 调度程序执行的操作。 number_of_arguments numeric 调度程序参数个数。 enabled character varying(5) 调度程序是否启用。 comments text 调度程序的备注。 detached character varying(5) 暂不支持,值为NULL。 schedule_limit interval day to second(0) 暂不支持,值为NULL。 priority numeric 暂不支持,值为NULL。 weight numeric 暂不支持,值为NULL。 max_runs numeric 暂不支持,值为NULL。 max_failures numeric 暂不支持,值为NULL。 max_run_duration interval day to second(0) 暂不支持,值为NULL。 has_constraints character varying(5) 暂不支持,值为NULL。 nls_env character varying(4000) 暂不支持,值为NULL。 父主题: 其他系统视图
-
MY_TAB_HISTOGRAMS MY_TAB_HISTOGRAMS系统视图显示当前用户拥有的表和视图的直方图信息。所有用户都可以访问该视图。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_TAB_HISTOGRAMS字段 名称 类型 描述 table_name character varying(128) 表名。 column_name character varying(4000) 列名。 endpoint_number numeric 直方图的桶号。 endpoint_value numeric 暂不支持,值为NULL。 endpoint_actual_value character varying(4000) 桶端点的实际值。 endpoint_actual_value_raw raw 暂不支持,值为NULL。 endpoint_repeat_count numeric 暂不支持,值为NULL。 scope character varying(7) 暂不支持,值为SHARED。 父主题: 其他系统视图
-
GLOBAL_STAT_HOTKEYS_INFO GLOBAL_STAT_HOTKEYS_INFO视图可用来查询整个集群中热点key的统计信息,查询结果按照count从大到小排序。 表1 GLOBAL_STAT_HOTKEYS_INFO字段 名称 类型 描述 database_name text 热点key所在数据库的名称。 schema_name text 热点key所在模式的名称。 table_name text 热点key所在表的名称。 key_value text 热点key的值。 hash_value bigint 热点key在数据库中的哈希值。如果是List/Range分布表,该字段为0。 count numeric 热点key被访问频次。 父主题: 其他系统视图
-
示例 --创建系统管理员用户。 gaussdb=# CREATE USER sysadmin WITH SYSADMIN PASSWORD '********'; --切换管理员用户。 gaussdb=# \c - sysadmin --创建同义词t1。 gaussdb=# CREATE OR REPLACE SYNONYM t1 FOR ot.t1; --创建新用户u1。 gaussdb=# CREATE USER u1 PASSWORD '********'; --给新用户赋权限。 gaussdb=# GRANT ALL ON SCHEMA sysadmin TO u1; --修改同义词t1的owner为u1。 gaussdb=# ALTER SYNONYM t1 OWNER TO u1; --删除同义词t1。 gaussdb=# DROP SYNONYM t1; --收回用户u1权限。 gaussdb=# REVOKE ALL ON SCHEMA sysadmin FROM u1; --删除用户u1。 gaussdb=# DROP USER u1; --切换到初始用户init_user,请使用真实的初始用户名称替换init_user。 gaussdb=# \c - init_user --删除用户sysadmin。 gaussdb=# DROP USER sysadmin;
-
参数说明 GRANT的权限分类如下所示。 SELECT 允许对指定的表、视图、序列执行SELECT语句。UPDATE或DELETE时也需要对应字段上的SELECT权限。 INSERT 允许对指定的表执行INSERT语句。 UPDATE 允许对声明的表中任意字段执行UPDATE语句,UPDATE命令也需要SELECT权限来查询出哪些行需要更新。SELECT… FOR UPDATE和SELECT… FOR SHARE除了需要SELECT权限外,还需要UPDATE权限。 DELETE 允许执行DELETE语句删除指定表中的数据。DELETE命令也需要SELECT权限来查询出哪些行需要删除。 TRUNCATE 允许执行TRUNCATE语句删除指定表中的所有记录。 REFEREN CES 创建一个外键约束,必须拥有参考表和被参考表的REFERENCES权限,分布式场景暂不支持。 TRIGGER 允许在指定的表上创建触发器。 CREATE 对于数据库,允许在数据库里创建新的模式。 对于模式,允许在模式中创建新的对象。如果要重命名一个对象,用户除了必须是该对象的所有者外,还必须拥有该对象所在模式的CREATE权限。 对于表空间,允许在表空间中创建表,允许在创建数据库和模式的时候把该表空间指定为缺省表空间。 对于子集群,允许在子集群中创建表对象。 CONNECT 允许用户连接到指定的数据库。 EXECUTE 允许使用指定的函数,以及利用这些函数实现的操作符。 USAGE 对于过程语言,允许用户在创建函数的时候指定过程语言。 对于模式,USAGE允许访问包含在指定模式中的对象,若没有该权限,则只能看到这些对象的名称。 对于序列,USAGE允许使用nextval函数。 对于子集群, 对包含在指定模式中的对象有访问权限时,USAGE允许访问指定子集群下的表对象。 对于密钥对象,USAGE是使用密钥的权限。 COMPUTE 针对计算子集群,允许用户在具有compute权限的计算子集群上进行弹性计算。 ALTER 允许用户修改指定对象的属性,但不包括修改对象的所有者和修改对象所在的模式。 DROP 允许用户删除指定的对象。 COMMENT 允许用户定义或修改指定对象的注释。 INDEX 允许用户在指定表上创建索引,并管理指定表上的索引,还允许用户对指定表执行REINDEX和CLUSTER操作。 VACUUM 允许用户对指定的表执行ANALYZE和VACUUM操作。 ALL PRIVILEGES 一次性给指定用户/角色赋予所有可赋予的权限。只有系统管理员有权执行GRANT ALL PRIVILEGES。 GRANT的参数说明如下所示。 role_name 已存在用户名称。 table_name 已存在表名称。 column_name 已存在字段名称。 schema_name 已存在模式名称。 database_name 已存在数据库名称。 function_name 已存在函数名称。 sequence_name 已存在序列名称。 domain_name 已存在域类型名称。 fdw_name 已存在外部数据包名称。 lang_name 已存在语言名称。 type_name 已存在类型名称。 group_name 已存在的子集群名称。 argmode 参数模式。 取值范围:字符串,要符合标识符命名规范。 arg_name 参数名称。 取值范围:字符串,要符合标识符命名规范。 arg_type 参数类型。 取值范围:字符串,要符合标识符命名规范。 loid 包含本页的大对象的标识符。 取值范围:字符串,要符合标识符命名规范。 tablespace_name 表空间名称。 client_master_key 客户端加密主密钥的名称。 取值范围:字符串,要符合标识符命名规范。 column_encryption_key 列加密密钥的名称。 取值范围:字符串,要符合标识符命名规范。 directory_name 目录名称。 取值范围:字符串,要符合标识符命名规范。 WITH GRANT OPTION 如果声明了WITH GRANT OPTION,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予PUBLIC。 非对象所有者给其他用户授予对象权限时,命令按照以下规则执行: 如果用户没有该对象上指定的权限,命令立即失败。 如果用户有该对象上的部分权限,则GRANT命令只授予他有授权选项的权限。 如果用户没有可用的授权选项,GRANT ALL PRIVILEGES形式将发出一个警告信息,其他命令形式将发出在命令中提到的且没有授权选项的相关警告信息。 三权分立关闭时的数据库系统管理员可以访问所有对象,而不会受对象的权限设置影响。除了必要的情况外,建议不要总是以系统管理员身份进行操作。
-
语法格式 将表或视图的访问权限赋予指定的用户或角色。 1 2 3 4 5 6 GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将表中字段的访问权限赋予指定的用户或角色。 1 2 3 4 5 GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )} [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) } ON [ TABLE ] table_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 如果拥有表的访问权限,则默认拥有表中所有字段的访问权限。如果要仅赋予表中某个字段的访问权限,需要先撤销所属表的访问权限。 将序列的访问权限赋予指定的用户或角色。 1 2 3 4 5 6 GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON { [ SEQUENCE ] sequence_name [, ...] | ALL SEQUENCES IN SCHEMA schema_name [, ...] } TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将数据库的访问权限赋予指定的用户或角色。 1 2 3 4 5 GRANT { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON DATABASE database_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将域的访问权限赋予指定的用户或角色。 1 2 3 4 GRANT { USAGE | ALL [ PRIVILEGES ] } ON DOMAIN domain_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 本版本暂时不支持赋予域的访问权限。 将客户端加密主密钥CMK的访问权限赋予指定的用户或角色。 1 2 3 4 GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } ON CLIENT_MASTER_KEY client_master_key TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将列加密密钥CEK的访问权限赋予指定的用户或角色。 1 2 3 4 GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } ON COLUMN_ENCRYPTION_KEY column_encryption_key TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将外部数据源的访问权限赋予给指定的用户或角色。 1 2 3 4 GRANT { USAGE | ALL [ PRIVILEGES ] } ON FOREIGN DATA WRAPPER fdw_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将外部服务器的访问权限赋予给指定的用户或角色。 1 2 3 4 GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON FOREIGN SERVER server_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将函数的访问权限赋予给指定的用户或角色。 1 2 3 4 5 GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将存储过程的访问权限赋予给指定的用户或角色。 1 2 3 4 GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON PROCEDURE {proc_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将过程语言的访问权限赋予给指定的用户或角色。 1 2 3 4 GRANT { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE lang_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 本版本只有C函数支持所有用户创建,而Java和Internal只支持拥有sysadmin权限的用户创建。 拥有sysadmin权限的用户通过grant语法来将创建C函数的权限授权给普通用户时,不支持GRANT USAGE ON LANGUAGE c TO PUBLIC,只支持授权给特定用户。 拥有sysadmin权限的用户通过grant语法来将创建C函数的权限授权给普通用户时,不支持WITH GRANT OPTION。 将子集群的访问权限赋予指定的用户或角色。 1 2 3 4 GRANT { { CREATE | USAGE | COMPUTE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } ON NODE GROUP group_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将子集群的create权限赋予指定用户或角色时,会默认把usage和compute权限赋予指定用户或角色。 将模式的访问权限赋予指定的用户或角色。 1 2 3 4 GRANT { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将模式中的表或者视图对象授权给其他用户时,需要将表或视图所属的模式的USAGE权限同时授予该用户,若没有该权限,则只能看到这些对象的名称,并不能实际进行对象访问。 将表空间的访问权限赋予指定的用户或角色。 1 2 3 4 GRANT { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TABLESPACE tablespace_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将类型的访问权限赋予指定的用户或角色。 1 2 3 4 GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TYPE type_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 本版本暂时不支持赋予类型的访问权限。 将DIRECTORY对象的权限赋予指定的角色。 1 2 3 4 GRANT { { READ | WRITE | ALTER | DROP } [, ...] | ALL [PRIVILEGES] } ON DIRECTORY directory_name [, ...] TO { [GROUP] role_name | PUBLIC } [, ...] [WITH GRANT OPTION]; 将PACKAGE对象的权限赋予指定的角色。 1 2 3 4 GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [PRIVILEGES] } ON PACKAGE package_name [, ...] TO { [GROUP] role_name | PUBLIC } [, ...] [WITH GRANT OPTION]; 将角色的权限赋予其他用户或角色的语法。 1 2 3 GRANT role_name [, ...] TO role_name [, ...] [ WITH ADMIN OPTION ]; 将SYSADMIN权限赋予指定的角色。 1 2 GRANT ALL { PRIVILEGES | PRIVILEGE } TO role_name;
-
功能描述 对角色和用户进行授权操作。 使用GRANT命令进行用户授权包括以下场景: 将系统权限授权给角色或用户 系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN、MONADMIN、OPRADMIN、POLADMIN、INHERIT、REPLICATION和LOGIN等。 系统权限一般通过CREATE/ALTER ROLE语法来指定。其中,SYSADMIN权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。但系统权限无法通过ROLE和USER的权限被继承,也无法授予PUBLIC。 将数据库对象授权给角色或用户 将数据库对象(表、视图、指定字段、数据库、函数、模式、表空间等)的相关权限授予特定角色或用户。 GRANT命令将数据库对象的特定权限授予一个或多个角色,这些权限会追加到已有的权限上。 关键字PUBLIC表示该权限要赋予所有角色,包括以后创建的用户。PUBLIC可以看做是一个隐含定义好的组,它总是包括所有角色。任何角色或用户都将拥有通过GRANT直接赋予的权限和所属的权限,再加上PUBLIC的权限。 如果声明了WITH GRANT OPTION,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予PUBLIC,这是 GaussDB 特有的属性。 GaussDB会将某些类型的对象上的权限授予PUBLIC。默认情况下,对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予PUBLIC,而以下这些对象的权限会授予PUBLIC:数据库的CONNECT权限和CREATE TEMP TABLE权限、函数的EXECUTE特权、语言和数据类型(包括域)的USAGE特权。对象拥有者可以撤销默认授予PUBLIC的权限并专门授予权限给其他用户。为了更安全,建议在同一个事务中创建对象并设置权限,这样其他用户就没有时间窗口使用该对象。这些初始的默认权限可以使用ALTER DEFAULT PRIVILEGES命令修改。 对象的所有者缺省具有该对象上的所有权限,出于安全考虑所有者可以舍弃部分权限,但ALTER、DROP、COMMENT、INDEX、VACUUM以及对象的可再授予权限属于所有者固有的权限,隐式拥有。 将角色或用户的权限授权给其他角色或用户 将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。 当声明了WITH ADMIN OPTION,被授权的用户可以将该权限再次授予其他角色或用户,以及撤销所有由该角色或用户继承到的权限。当授权的角色或用户发生变更或被撤销时,所有继承该角色或用户权限的用户拥有的权限都会随之发生变更。 三权分立关闭时,系统管理员可以赋予或者撤销任何非永久用户、运维管理员和私用用户角色的权限。安全管理员可以赋予或者撤销任何非系统管理员、内置角色、永久用户、运维管理员和私用用户角色的权限。 将ANY权限授予给角色或用户 将ANY权限授予特定的角色和用户,ANY权限的取值范围参见语法格式。当声明了WITH ADMIN OPTION,被授权的用户可以将该ANY权限再次授予其他角色/用户,或从其他角色/用户处回收该ANY权限。ANY权限可以通过角色被继承,但不能赋予PUBLIC。初始用户和三权分立关闭时的系统管理员用户可以给任何角色/用户授予或撤销ANY权限。 目前支持以下ANY权限:CREATE ANY TABLE、ALTER ANY TABLE、DROP ANY TABLE、SELECT ANY TABLE、INSERT ANY TABLE、UPDATE ANY TABLE、DELETE ANY TABLE、CREATE ANY SEQUENCE、CREATE ANY INDEX、CREATE ANY FUNCTION、EXECUTE ANY FUNCTION、 CREATE ANY PACKAGE、EXECUTE ANY PACKAGE、CREATE ANY TYPE、ALTER ANY TYPE、DROP ANY TYPE、ALTER ANY SEQUENCE、DROP ANY SEQUENCE、SELECT ANY SEQUENCE、ALTER ANY INDEX、DROP ANY INDEX、CREATE ANY SYNONYM、DROP ANY SYNONYM、CREATE ANY TRIGGER、ALTER ANY TRIGGER、DROP ANY TRIGGER。详细的ANY权限范围描述请参见表1。
-
注意事项 不允许将ANY权限授予PUBLIC,也不允许从PUBLIC回收ANY权限。 ANY权限属于数据库内的权限,只对授予该权限的数据库内的对象有效,例如SELECT ANY TABLE只允许用户查看当前数据库内的所有用户表数据,对其他数据库内的用户表无查看权限。 ANY权限与原有的权限相互无影响。 如果用户被授予CREATE ANY TABLE权限,在同名模式下创建表的所有者是该同名模式的所有者,用户对表进行其他操作时,需要授予相应的操作权限。与此类似的还有CREATE ANY FUNCTION、CREATE ANY PACKAGE、CREATE ANY TYPE、CREATE ANY SEQUENCE和CREATE ANY INDEX,在同名模式下创建的对象的所有者是同名模式的所有者;而对于CREATE ANY TRIGGER和CREATE ANY SYNONYM,在同名模式下创建的对象的所有者为创建者。 需要谨慎授予用户CREATE ANY FUNCTION或CREATE ANY PACKAGE的权限,以免其他用户利用DEFINER类型的函数或PACKAGE进行权限提升。 通过GRANT授予用户使用表的权限时,如果用户使用不当,可能会通过ALTER语法在表的默认值、约束增加表达式、创建索引在索引上增加表达式等操作导致权限被利用的风险。 通过GRANT授予用户使用TRIGGER的权限时,如果用户使用不当,可能通过WHEN条件创建表达式,当触发器被触发时,存在权限被利用的风险。 给用户赋权时,需要特别注意定义者函数/PACKAGE,定义者函数/PACKAGE会使用函数/PACKAGE的owner权限执行,若赋权不当(包括GRANT ROLE TO ROLE),则存在权限被利用风险。 不要把对象的权限赋予给过多的用户,可以根据业务需求使用角色或PUBLIC。
-
GLOBAL_OPERATOR_RUNTIME GLOBAL_OPERATOR_RUNTIME视图显示当前用户在数据库主节点上正在执行的作业的算子相关信息,如表1所示。 表1 GLOBAL_OPERATOR_RUNTIME的字段 名称 类型 描述 queryid bigint 语句执行使用的内部query_id。 pid bigint 后端线程id。 plan_node_id integer 查询对应的执行计划的plan node id。 plan_node_name text 对应于plan_node_id的算子的名称。 start_time timestamp with time zone 该算子处理第一条数据的开始时间。 duration bigint 该算子到结束时候总的执行时间(ms)。 status text 当前算子的执行状态,包括finished和running。 query_dop integer 当前算子执行时的并行度。 estimated_rows bigint 优化器估算的行数信息。 tuple_processed bigint 当前算子返回的元素个数。 min_peak_memory integer 当前算子在数据库节点上的最小内存峰值(MB)。 max_peak_memory integer 当前算子在数据库节点上的最大内存峰值(MB)。 average_peak_memory integer 当前算子在数据库节点上的平均内存峰值(MB)。 memory_skew_percent integer 当前算子在数据库节点的内存使用倾斜率。 min_spill_size integer 若发生下盘,数据库节点上下盘的最小数据量(MB),默认为0。 max_spill_size integer 若发生下盘,数据库节点上下盘的最大数据量(MB),默认为0。 average_spill_size integer 若发生下盘,数据库节点上下盘的平均数据量(MB),默认为0。 spill_skew_percent integer 若发生下盘,数据库节点间下盘倾斜率。 min_cpu_time bigint 该算子在数据库节点上的最小执行时间(ms)。 max_cpu_time bigint 该算子在数据库节点上的最大执行时间(ms)。 total_cpu_time bigint 该算子在数据库节点上的总执行时间(ms)。 cpu_skew_percent integer 数据库节点间执行时间的倾斜率。 warning text 主要显示如下几类告警信息: Sort/SetOp/HashAgg/HashJoin spill Spill file size large than 256MB Broadcast size large than 100MB Early spill Spill times is greater than 3 Spill on memory adaptive Hash table conflict 父主题: Operator
-
PV_SESSION_TIME PV_SESSION_TIME视图显示会话线程的运行时间信息及各执行阶段所消耗的时间。具体字段信息如表1所示。 表1 PV_SESSION_TIME字段 名称 类型 描述 sessid text 线程标识+线程启动时间。 stat_id integer 统计编号。 stat_name text 会话类型名称。 DB_TIME:作业在多核下的有效时间花费。 CPU_TIME:CPU时间的消耗。 EXECUTION_TIME:执行器内花费的时间。 PARSE_TIME:SQL解析的时间花费。 PLAN_TIME:生成Plan的时间花费。 REWRITE_TIME:SQL重写的时间消耗。 PL_EXECUTION_TIME:plpgsql(存储过程)的执行时间。 PL_COMPILATION_TIME:plpgsql(存储过程)编译时间。 NET_SEND_TIME:网络上的时间花销。 DATA_IO_TIME:I/O时间上的花销。 value bigint 会话值。 父主题: 其他系统视图
-
Hint的错误、冲突及告警 Plan Hint的结果会体现在计划的变化上,可以通过explain来查看变化。 hint中的错误不会影响语句的执行,只是不能生效,该错误会根据语句类型以不同方式提示用户。对于explain语句,hint的错误会以warning形式显示在界面上,对于非explain语句,会以debug1级别日志显示在日志中,关键字为PLANHINT。 hint的错误分为以下类型: 语法错误 语法规则树归约失败,会报错,指出出错的位置。 例如:hint关键字错误,leading hint或join hint指定2个表以下,其它hint未指定表等。一旦发现语法错误,则立即终止hint的解析,所以此时只有错误前面解析完的hint有效。 例如: 1 leading((t1 t2)) nestloop(t1) rows(t1 t2 #10) nestloop(t1)存在语法错误,则终止解析,可用hint只有之前解析的leading((t1 t2))。 语义错误 表不存在、存在多个、或在leading或join中出现多次,均会报语义错误。 scanhint中的index不存在,会报语义错误。 如果子查询提升后,同一层出现多个名称相同的表,且其中某个表需要被hint,hint会存在歧义,无法使用,需要为相同表增加别名规避。 hint重复或冲突 如果存在hint重复或冲突,只有第一个hint生效,其它hint均会失效,会给出提示。 hint重复是指,hint的方法及表名均相同。例如:nestloop(t1 t2) nestloop(t1 t2)。 hint冲突是指,table list一样的hint,存在不一样的hint,hint的冲突仅对于每一类hint方法检测冲突。 例如:nestloop (t1 t2) hashjoin (t1 t2),则后面与前面冲突,此时hashjoin的hint失效。注意:nestloop(t1 t2)和no mergejoin(t1 t2)不冲突。 leading hint中的多个表会进行拆解。例如:leading ((t1 t2 t3))会拆解成:leading((t1 t2)) leading(((t1 t2) t3)),此时如果存在leading((t2 t1)),则两者冲突,后面的会被丢弃。(例外:指定内外表的hint若与不指定内外表的hint重复,则始终丢弃不指定内外表的hint。) 查询改写的hint允许重复,但对于重复的hint数据库只会使用第一个,对于其他未使用的hint则会报"unused hint" Warning提示。例如:/*+ expand_sublink expand_sublink */由于数据库只使用第一个expand_sublink hint,所以仍然会报"unused hint" Warning提示。 子链接提升后hint失效 子链接提升后的hint失效,会给出提示。通常出现在子链接中存在多个表连接的场景。提升后,子链接中的多个表不再作为一个整体出现在join中。 列类型不支持重分布 对于skew hint来说,目的是为了进行重分布时的调优,所以当hint列的类型不支持重分布时,hint将无效。 hint未被使用 非等值join使用hashjoin hint或mergejoin hint。 不包含索引的表使用indexscan hint、index hint或indexonlyscan hint。 不包含全局二级索引的表使用gsi hint和gsitable hint。 通常只有在索引列上使用过滤条件才会生成相应的索引路径,全表扫描将不会使用索引,因此使用indexscan hint、index hint、indexonlyscan hint或gsi hint将不会使用。 indexonlyscan只有输出列仅包含索引列才会使用,否则指定时hint不会被使用。 gsi只有查询能够下推至全局二级索引时才会使用,否则不会被使用。 多个表存在等值连接时,仅尝试有等值连接条件的表连接,此时没有关联条件的表之间的路径将不会生成,所以指定相应的leading、join、rows hint将不使用,例如:t1 t2 t3表join,t1和t2, t2和t3有等值连接条件,则t1和t3不会优先连接,leading(t1 t3)不会被使用。 生成stream计划时,如果表的分布列与join列相同,则不会生成redistribute的计划。如果不同,且另一表分布列与join列相同,只能生成redistribute的计划,不会生成broadcast的计划,指定相应的hint则不会被使用。 如果子链接未被提升,则blockname hint不会被使用。 对于skew hint,hint未被使用可能由于: 计划中不需要进行重分布。 hint指定的列包含分布键。 hint指定倾斜信息有误或不完整,如对于join优化未指定值。 倾斜优化的GUC参数处于关闭状态。 父主题: 使用Plan Hint进行调优
-
示例 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 gaussdb=# DROP TABLE t1; gaussdb=# CREATE TABLE t1(a int); gaussdb=# INSERT INTO t1 VALUES(1),(10); --RETURN NEXT gaussdb=# CREATE OR REPLACE FUNCTION fun_for_return_next() RETURNS SETOF t1 AS $$ DECLARE r t1%ROWTYPE; BEGIN FOR r IN select * from t1 LOOP RETURN NEXT r; END LOOP; RETURN; END; $$ LANGUAGE plpgsql; gaussdb=# call fun_for_return_next(); a --- 1 10 (2 rows) -- RETURN QUERY gaussdb=# CREATE OR REPLACE FUNCTION fun_for_return_query() RETURNS SETOF t1 AS $$ DECLARE r t1%ROWTYPE; BEGIN RETURN QUERY select * from t1; END; $$ language plpgsql; gaussdb=# call fun_for_return_query(); a --- 1 10 (2 rows)
-
语法 创建函数时需要指定返回值SETOF datatype。 return_next_clause::= return_next_clause::=语句如图1所示。 图1 return_next_clause::= return_query_clause::= return_query_clause::=语句如图2所示。 图2 return_query_clause::= 当需要函数返回一个集合时,使用RETURN NEXT或者RETURN QUERY向结果集追加结果,然后继续执行函数的下一条语句。随着后续的RETURN NEXT或RETURN QUERY命令的执行,结果集中会有多个结果。函数执行完成后会一起返回所有结果。 RETURN NEXT可用于标量和复合数据类型。 RETURN QUERY有一种变体RETURN QUERY EXECUTE,后面还可以增加动态查询,通过USING向查询插入参数。
-
DB4AI.PUBLISH_SNAPSHOT PUBLISH_SNAPSHOT是DB4AI特性用于发布快照的接口函数,如表1所示。通过语法PUBLISH SNAPSHOT调用。 表1 DB4AI.PUBLISH_SNAPSHOT入参和返回值列表 参数 类型 描述 i_schema IN NAME 快照存储的模式名字,默认值是当前用户或者PUBLIC。 i_name IN NAME 快照名称。 res OUT db4ai.snapshot_name 结果。 父主题: DB4AI Schema
-
SUMMARY_STAT_DATABASE_CONFLI CTS 显示数据库各节点冲突状态的统计信息的汇总求和结果,如表1所示。在PDB仅显示本PDB的信息。 表1 SUMMARY_STAT_DATABASE_CONFLICTS字段 名称 类型 描述 datname name 数据库名称。 confl_tablespace bigint 冲突的表空间的数目。 confl_lock bigint 冲突的锁数目。 confl_snapshot bigint 冲突的快照数目。 confl_bufferpin bigint 冲突的缓冲区数目。 confl_deadlock bigint 冲突的死锁数目。 父主题: Object
-
接口介绍 高级功能包DBE_XMLDOM用于访问XMLType对象,实现DOM(Document Object Model),用于访问HTML和XML DOCUMENTS API。高级功能包DBE_XMLDOM支持的所有类型请参见表1,DBE_XMLDOM支持的所有接口请参见表2。 DBE_XMLDOM高级包在字符集设置为SQL_ASCII的数据库内使用的情况下,输入超出ASCII范围的字符,会导致报错。 表1 DBE_XMLDOM数据类型说明 类型名称 描述 DOMATTR 实现DOM Attribute接口。 DOMDOCUMENT 实现DOM Document接口。 DOMELEMENT 实现DOM Element接口。 DOMNAMEDNODEMAP 实现DOM Named Node Map接口。 DOMNODELIST 实现DOM Node List接口。 DOMNODE 实现DOM Node接口。 DOMTEXT 实现DOM Text接口。 表2 DBE_XMLDOM接口参数说明 接口名称 描述 DBE_XMLDOM.APPENDCHILD 将newchild node添加到parent(n)节点最后面,并返回新添加的Node节点。 DBE_XMLDOM.CREATEELEMENT 创建指定名称的DOMELEMENT对象。 DBE_XMLDOM.CREATETEXTNODE 创建DOMTEXT节点。 DBE_XMLDOM.FREEDOCUMENT 释放DOMDOCUMENT节点相关资源。 DBE_XMLDOM.FREEELEMENT 释放DOMELEMENT节点相关资源。 DBE_XMLDOM.FREENODE 释放DOMNODE节点相关资源。 DBE_XMLDOM.FREENODELIST 释放DOMNODELIST节点相关资源。 DBE_XMLDOM.GETATTRIBUTE 按名称返回DOMELEMENT属性的值。 DBE_XMLDOM.GETATTRIBUTES 将DOMNODE节点属性值作为map返回。 DBE_XMLDOM.GETCHILDNODES 将节点下的若干子节点转换成节点列表。 DBE_XMLDOM.GETCHILDRENBYTAGNAME 按名称返回DOMELEMENT的子节点。 DBE_XMLDOM.GETDOCUMENTELEMENT 返回指定DOCUMENT的首个子节点。 DBE_XMLDOM.GETFIRSTCHILD 返回第一个子节点。 DBE_XMLDOM.GETLASTCHILD 返回最后一个子节点。 DBE_XMLDOM.GETLENGTH 获取给定节点中的节点个数。 DBE_XMLDOM.GETLOCALNAME 检索节点的本地名称。 DBE_XMLDOM.GETNAMEDITEM 检索由名称指定的节点。 DBE_XMLDOM.GETNEXTSIBLING 返回该节点的下一个节点。 DBE_XMLDOM.GETNODENAME 返回节点名称。 DBE_XMLDOM.GETNODETYPE 返回节点类型。 DBE_XMLDOM.GETNODEVALUE 此函数用于获取节点的值,具体取决于其类型。 DBE_XMLDOM.GETPARENTNODE 检索此节点的父节点。 DBE_XMLDOM.GETTAGNAME 返回指定DOMELEMENT的标签名称。 DBE_XMLDOM.HASCHILDNODES 检查DOMNODE对象是否拥有任一子节点。 DBE_XMLDOM.IMPORTNODE 复制节点并为该节点指定所属文档。 DBE_XMLDOM.ISNULL 检测节点是否为空。 DBE_XMLDOM.ITEM 返回映射中与索引参数对应的项。 DBE_XMLDOM.MAKEELEMENT 将DOMNODE对象转换为DOMELEMENT类型。 DBE_XMLDOM.MAKENODE 将节点强制转换为DOMNODE类型。 DBE_XMLDOM.NEWDOMDOCUMENT 返回新的DOMDOCUMENT对象。 DBE_XMLDOM.SETATTRIBUTE 按名称设置DOMELEMENT属性的值。 DBE_XMLDOM.SETCHARSET 设置DOMDOCUMENT的CHATSET字符集。 DBE_XMLDOM.SETDOCTYPE 设置DOMDOCUMENT的外部DTD。 DBE_XMLDOM.SETNODEVALUE 此函数用于向DOMNODE对象中设置节点的值。 DBE_XMLDOM.WRITETOBUFFER 将 XML 节点写入指定缓冲区。 DBE_XMLDOM.WRITETOCLOB 将 XML 节点写入指定CLOB。 DBE_XMLDOM.WRITETOFILE 将 XML 节点写入指定文件。 DBE_XMLDOM.GETSESSIONTREENUM 显示当前session中所有类型的dom树的数量。 DBE_XMLDOM.GETDOCTREESINFO 显示document类型的dom树的内存占用、节点数量等统计信息。 DBE_XMLDOM.GETDETAILDOCTREEINFO 显示特定的document变量的各类型节点数量。 DBE_XMLDOM.GETELEMENTSB.... 返回匹配TAGNAME的DOMNODELIST节点列表。
-
唯一约束和唯一索引有什么区别? 答:唯一约束和唯一索引的主要区别如下: 唯一约束和唯一索引概念不同。 唯一约束确保一列或者一组列中包含的数据对于表中所有的行都是唯一的。 如果没有声明DISTRIBUTE BY REPLICATION,则唯一约束的列集合中必须包含分布列。唯一索引用于限制索引字段值的唯一性,或者是多个字段组合值的唯一性。CREATE UNIQUE INDEX创建唯一索引。 唯一约束和唯一索引功能不同。 约束主要是为了保证数据的完整性,索引主要是为了辅助查询。 唯一约束和唯一索引使用方法不同。 创建唯一约束,会自动创建一个同名的唯一索引,该索引不能单独删除,删除约束会自动删除索引。唯一约束是通过唯一索引来实现数据的唯一。 创建一个唯一索引,这个索引是独立的,并且可以单独删除。 如果一个列上想有约束和索引,且两者可以单独的删除。可以先建唯一索引,再建同名的唯一约束。 如果表的一个字段,要作为另外一个表的外键,这个字段必须有唯一约束(或是主键),如果只是有唯一索引,就会报错。 父主题: FAQ
-
示例 普通索引 --创建tbl_test1表。 gaussdb=# CREATE TABLE tbl_test1( id int, --用户id name varchar(50), --用户姓名 postcode char(6) --邮编 ); --创建表空间tbs_index1。 gaussdb=# CREATE TABLESPACE tbs_index1 RELATIVE LOCATION 'test_tablespace/tbs_index1'; --为表tbl_test1创建索引idx_test1指定表空间。 gaussdb=# CREATE INDEX idx_test1 ON tbl_test1(name) TABLESPACE tbs_index1; --查询索引idx_test1信息。 gaussdb=# SELECT indexname,tablename,tablespace FROM pg_indexes WHERE indexname = 'idx_test1'; indexname | tablename | tablespace -----------+-----------+------------ idx_test1 | tbl_test1 | tbs_index1 (1 row) --删除索引。 gaussdb=# DROP INDEX idx_test1; --删除表空间。 gaussdb=# DROP TABLESPACE tbs_index1; 唯一索引 --为表tbl_test1创建唯一索引idx_test2。 gaussdb=# CREATE UNIQUE INDEX idx_test2 ON tbl_test1(id); --查询索引信息。 gaussdb=# \d tbl_test1 Table "public.tbl_test1" Column | Type | Modifiers ----------+-----------------------+----------- id | integer | name | character varying(50) | postcode | character(6) | Indexes: "idx_test2" UNIQUE, btree (id) TABLESPACE pg_default --删除索引。 gaussdb=# DROP INDEX idx_test2; 表达式索引 --为表tbl_test1创建一个表达式索引。 gaussdb=# CREATE INDEX idx_test3 ON tbl_test1(substr(postcode,2)); --查询索引信息。 gaussdb=# \d tbl_test1 Table "public.tbl_test1" Column | Type | Modifiers ----------+-----------------------+----------- id | integer | name | character varying(50) | postcode | character(7) | Indexes: "idx_test3" btree (substr(postcode::text, 2)) TABLESPACE pg_default --删除索引。 gaussdb=# DROP INDEX idx_test3; 部分索引 --为表tbl_test1中id不为为空的数据建立索引。 gaussdb=# CREATE INDEX idx_test4 ON tbl_test1(id) WHERE id IS NOT NULL; --删除索引。 gaussdb=# DROP INDEX idx_test4; --删除表。 gaussdb=# DROP TABLE tbl_test1; 分区索引 --建表。 gaussdb=# CREATE TABLE student(id int, name varchar(20)) PARTITION BY RANGE (id) ( PARTITION p1 VALUES LESS THAN (200), PARTITION pmax VALUES LESS THAN (MAXVALUE) ); --创建LOCAL分区索引不指定索引分区的名称。 gaussdb=# CREATE INDEX idx_student1 ON student(id) LOCAL; --查看索引分区信息,LOCAL索引分区数和表的分区数一致。 gaussdb=# SELECT relname FROM pg_partition WHERE parentid = 'idx_student1'::regclass; relname ------------- p1_id_idx pmax_id_idx (2 rows) --删除LOCAL分区索引。 gaussdb=# DROP INDEX idx_student1; --创建GLOBAL索引。 gaussdb=# CREATE INDEX idx_student2 ON student(name) GLOBAL; --查看索引分区信息,GLOBAL索引分区数和表的分区数不一致。 gaussdb=# SELECT relname FROM pg_partition WHERE parentid = 'idx_student2'::regclass; relname --------- (0 rows) --删除GLOBAL分区索引。 gaussdb=# DROP INDEX idx_student2; --创建LOCAL表达式索引,不指定索引分区的名称。 gaussdb=# CREATE INDEX idx_student3 ON student(lower(name)) LOCAL; --查看索引分区信息,LOCAL索引分区数和表的分区数一致。 gaussdb=# SELECT relname FROM pg_partition WHERE parentid = 'idx_student3'::regclass; relname ------------- p1_id_idx pmax_id_idx (2 rows) --删除LOCAL分区表达式索引。 gaussdb=# DROP INDEX idx_student3; --创建GLOBAL表达式索引。 gaussdb=# CREATE INDEX idx_student4 ON student(lower(name)) GLOBAL; --查看索引分区信息,GLOBAL表达式索引分区数和表的分区数不一致。 gaussdb=# SELECT relname FROM pg_partition WHERE parentid = 'idx_student4'::regclass; relname --------- (0 rows) --删除GLOBAL分区表达式索引。 gaussdb=# DROP INDEX idx_student4; --删除表。 gaussdb=# DROP TABLE student;
-
优化建议 create index 约束限制: 普通表的索引支持最大列数为32列;分区表的GLOBAL索引支持最大列数为31列。 单个索引大小不能超过索引页面大小(8k),其中B-tree、UBtree索引不能超过页面大小的三分之一。 分区表上不支持创建部分索引。 分区表创建GLOBAL索引时,存在以下约束条件: 不支持表达式索引、部分索引。 仅支持Btree索引。 在相同属性列上,分区LOCAL索引与GLOBAL索引不能共存。 如果ALTER语句不带有UPDATE GLOBAL INDEX,那么原有的GLOBAL索引将失效,查询时将使用其他索引进行查询;如果ALTER语句带有UPDATE GLOBAL INDEX,原有的GLOBAL索引仍然有效,并且索引功能正确。
-
注意事项 基表为HASH分布时,若创建不包含基表分布键的主键或唯一索引,需要使用全局二级索引(CREATE GLOBAL INDEX),若创建包含基表分布键的主键或唯一索引,需要使用普通索引(CREATE INDEX),单DN部署形式下,使用全局二级索引或者普通索引均可创建成功;当基表为除HASH分布以外的其他分布形式时,主键或唯一索引只能使用普通索引(CREATE INDEX),即索引键必须包含基表分布键。 索引自身也占用存储空间、消耗计算资源,创建过多的索引将对数据库性能造成负面影响(尤其影响数据导入的性能,建议在数据导入后再建索引)。因此,仅在必要时创建索引。 索引定义里的所有函数和操作符都必须是immutable类型的,即它们的结果必须只能依赖于它们的输入参数,而不受任何外部的影响(如另外一个表的内容或者当前时间)。这个限制可以确保该索引的行为是定义良好的。要在一个索引上或WHERE中使用用户定义函数,请把它标记为immutable类型函数。 分区表索引分为LOCAL索引与GLOBAL索引,LOCAL索引与某个具体分区绑定,而GLOBAL索引则对应整个分区表。 被授予CREATE ANY INDEX权限的用户,可以在public模式和用户模式下创建索引。 禁止其他用户在初始用户的表上创建包含用户自定义函数的表达式索引。 如果基表是HASH/RANGE/LIST分布,则创建唯一索引时必须包含基表的分布键,且不能含有表达式。 如果表达式索引中调用的是用户自定义函数,按照函数创建者权限执行表达式索引函数。 不支持XML类型数据作为普通索引、UNIQUE索引、GLOBAL索引、LOCAL索引、部分索引。 在线创建索引的类型只支持btree索引和ubtree索引。索引创建形式只支持非分区表普通索引及分区表GLOBAL索引、LOCAL索引,不支持PCR ubtree索引、二级分区与GSI。在线并行创建索引只支持Astore及Ustore的普通索引、GLOBAL索引、LOCAL索引。 CREATE INDEX创建索引可能会改变表的访问方式从而导致查询执行计划改变。 当创建索引的SQL语句过长(长度大于等于5250字符)时,会上报一条WARNING,建议缩短创建索引语句的长度。 创建索引的SQL语句过长时,可能会在备份恢复索引时发生失败。由于备份恢复创建索引语句由gs_dump导出,gs_dump在导出索引定义时会对函数名、条件、列名进行添加引号、括号和列的类型的操作,原SQL语句会变得更长,进而导致该语句对应的pg_index元组不能存到一个页面上,造成创建索引失败。
-
语法格式 修改自定义函数的附加参数。 ALTER FUNCTION function_name ( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) action [ ... ] [ RESTRICT ]; 其中附加参数action子句语法为: {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT} | {IMMUTABLE | STABLE | VOLATILE} | {SHIPPABLE | NOT SHIPPABLE} | {NOT FENCED | FENCED} | [ NOT ] LEAKPROOF | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER } | AUTHID { DEFINER | CURRENT_USER } | COST execution_cost | ROWS result_rows | SET configuration_parameter { { TO | = } { value | DEFAULT }| FROM CURRENT} | RESET {configuration_parameter | ALL} 修改自定义函数的名称。 ALTER FUNCTION function_name ( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) RENAME TO new_name; 修改自定义函数的所有者。 ALTER FUNCTION function_name ( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) OWNER TO new_owner; 修改自定义函数的模式。 ALTER FUNCTION function_name ( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) SET SCHEMA new_schema;
-
语法格式 在表上创建索引。 1 2 3 4 5 6 7 8 CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ IF NOT EXISTS ] [ [schema_name.] index_name ] ON table_name [ USING method ] ({ { column_name [ ( length ) ] | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] }[, ...] ) [ INCLUDE ( column_name [, ...] ) ] [ WITH ( {storage_parameter = value} [, ... ] ) ] [ TABLESPACE tablespace_name ] { [ COMMENT 'string' ] [ ... ] } [ { VISIBLE | INVISIBLE } ] [ WHERE predicate ]; 在分区表上创建索引。 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [schema_name.] index_name ] ON table_name [ USING method ] ( { { column_name [ ( length ) ] | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS LAST ] } [, ...] ) [ LOCAL [ ( { PARTITION index_partition_name [ FOR { partition_name | ( partition_value [, ...] ) } ] [ TABLESPACE index_partition_tablespace ] [ ( [SUBPARTITION index_subpartition_name] [ FOR { partition_name | ( partition_value [, ...] ) } ] [ TABLESPACE index_partition_tablespace ] [, ...] ) ] [, ...] } ) ] | GLOBAL ] [ INCLUDE ( column_name [, ...] ) ] [ WITH ( { storage_parameter = value } [, ...] ) ] [ TABLESPACE tablespace_name ] { [ COMMENT 'string' ] [ ... ] } [ { VISIBLE | INVISIBLE } ];
-
参数说明 function_name 要修改的函数名称。 取值范围:已存在的函数名。 argmode 标识该参数是输入、输出参数。 取值范围: IN:声明入参。 OUT:声明出参。 INOUT:声明出入参。 VARIADIC:声明数组类型的参数。 argname 参数名称。 取值范围:字符串,符合标识符命名规范。 argtype 函数参数的类型。 取值范围:有效的类型,请参考数据类型 CALLED ON NULL INPUT 表明该函数的某些参数是NULL的时候可以按照正常的方式调用。缺省时与指定此参数的作用相同。 RETURNS NULL ON NULL INPUT STRICT STRICT用于指定如果函数的某个参数是NULL,此函数总是返回NULL。如果声明了这个参数,则如果存在NULL参数时不会执行该函数,而只是自动假设一个NULL结果。 RETURNS NULL ON NULL INPUT和STRICT的功能相同。 IMMUTABLE 表示该函数在给出同样的参数值时总是返回同样的结果。 STABLE 表示该函数不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同SQL语句之间变化。 VOLATILE 表示该函数值可以在一次表扫描内改变,不会做任何优化。 LEAKPROOF 表示该函数没有副作用,指出参数只包括返回值。LEAKPROOF只能由系统管理员设置。 EXTERNAL (可选)目的是和SQL兼容,这个特性适合于所有函数,而不仅是外部函数。 SECURITY INVOKER AUTHID CURRENT_USER 表明该函数将以调用它的用户的权限执行。缺省时与指定此参数的作用相同。 SECURITY INVOKER和AUTHID CURRENT_USER的功能相同。 SECURITY DEFINER AUTHID DEFINER 声明该函数将以创建它的用户的权限执行。 AUTHID DEFINER和SECURITY DEFINER的功能相同。 COST execution_cost 用来估计函数的执行成本。 execution_cost以cpu_operator_cost为单位。 取值范围:正数。 ROWS result_rows 估计函数返回的行数。用于函数返回的是一个集合。 取值范围:正数,默认值是1000行。 configuration_parameter value 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 取值范围:字符串。 DEFAULT OFF RESET 用户指定的值:需要满足修改参数的取值限制。 FROM CURRENT 取当前会话中的值设置为configuration_parameter的值。 new_name 函数的新名称。要修改函数的所属模式,必须拥有新模式的CREATE权限。 取值范围:字符串,符合标识符命名规范。 new_owner 函数的新所有者。要修改函数的所有者,新所有者必须拥有该函数所属模式的CREATE权限。需要注意注意的是:仅有初始化用户才可以将函数的owner设置为初始化用户。 取值范围:已存在的用户角色。 new_schema 函数的新模式。 取值范围:已存在的模式。
-
示例 修改函数示例: --创建函数。 gaussdb=# CREATE OR REPLACE FUNCTION test_func(a int) RETURN int IS proc_var int; BEGIN proc_var := a; return 1; END; / --将函数test_func(a int)的名称修改为test_func_tk(a int)。 gaussdb=# ALTER FUNCTION test_func(a int) RENAME TO test_func_tk; --创建jim用户。 gaussdb=# CREATE USER jim PASSWORD '********'; --将函数的所有者改为jim。 gaussdb=# ALTER FUNCTION test_func_tk(a int) OWNER TO jim; --新建模式test。 gaussdb=# CREATE SCHEMA test; --将函数模式改为test。 gaussdb=# ALTER FUNCTION test_func_tk(a int) SET SCHEMA test; 重编译函数译示例: --用函数名重编译函数。 gaussdb=# ALTER FUNCTION test.test_func_tk COMPILE; --用函数带类型签名重编译存储过程。 gaussdb=# ALTER FUNCTION test.test_func_tk(a int) COMPILE; --删除函数。 gaussdb=# DROP FUNCTION test.test_func_tk(a int); --删除jim用户。 gaussdb=# DROP USER jim; --删除SCHEMA。 gaussdb=# DROP SCHEMA test;
-
注意事项 只有函数的所有者或者被授予了函数ALTER权限的用户才能执行ALTER FUNCTION命令,系统管理员默认拥有该权限。针对所要修改属性的不同,还有以下权限约束: 如果函数中涉及对临时表相关的操作,则无法使用ALTER FUNCTION。 修改函数的所有者或修改函数的模式,当前用户必须是该函数的所有者或者系统管理员,且该用户是新所有者角色的成员。 只有系统管理员和初始化用户可以将function的schema修改成public。
-
功能描述 在指定的表上创建索引。 索引可以用来提高数据库查询性能,但是不恰当的使用将导致数据库性能下降。建议仅在匹配如下某条原则时创建索引: 经常执行查询的字段。 在连接条件上创建索引,对于存在多字段连接的查询,建议在这些字段上建立组合索引。例如:select * from t1 join t2 on t1.a=t2.a and t1.b=t2.b,可以在t1表上的a,b字段上建立组合索引。 where子句的过滤条件字段上(尤其是范围条件)。 在经常出现在order by、group by和distinct后的字段。 在分区表上创建索引与在普通表上创建索引的语法不太一样,使用时请注意,如当索引带GLOBAL/LOCAL关键字或者创建索引为GLOBAL索引时不支持创建部分索引。需要注意分区表上创建索引会根据如下规则进行判断:如果创建索引时申明了GLOBAL/LOCAL关键字,则创建对应类型的索引;如果创建索引指定分区名,则创建LOCAL索引;如果是unique索引,索引需包含分区键,此时创建LOCAL索引;否则默认创建GLOBAL索引。
-
示例 --查询集群DN初始状态。 gaussdb=# SELECT node_name, nodeis_preferred FROM pgxc_node WHERE node_type = 'D' ORDER BY 1; node_name | nodeis_preferred -----------+------------------ dn_6001_6002_6003 | f dn_6004_6005_6006 | f dn_6007_6008_6009 | f (3 rows) --创建NODE GROUP,用上一步中查询到的真实节点名称替换dn_6001_6002_6003。 gaussdb=# CREATE NODE GROUP test_group WITH ( dn_6001_6002_6003 ); --删除NODE GROUP。 gaussdb=# DROP NODE GROUP test_group;
-
示例 --创建用户组,与CREATE ROLE效果一样。 gaussdb=# CREATE GROUP test_group WITH PASSWORD "********"; --使用CREATE ROLE创建角色,默认不能登录数据库。 --可使用ALTER ROLE role_name WITH LOGIN语句让用户可以登录数据库。 gaussdb=# CREATE ROLE test_role WITH PASSWORD "********"; --使用CREATE USER创建用户,自动创建同名模式,有登录的权限。 gaussdb=# CREATE USER test_user WITH PASSWORD "********"; --查看用户信息。 gaussdb=# \du test* List of roles Role name | Attributes | Member of ------------+--------------+----------- test_group | Cannot login | {} test_role | Cannot login | {} test_user | | {} --查询CREATE USER命令自动创建的模式。 gaussdb=# \dn test* List of schemas Name | Owner -----------+----------- test_user | test_user (1 row) --删除。 gaussdb=# DROP ROLE test_role; gaussdb=# DROP GROUP test_group; gaussdb=# DROP USER test_user;
-
语法格式 CREATE GROUP group_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [ EXPIRED ] | DISABLE }; 其中可选项option子句语法为: {SYSADMIN | NOSYSADMIN} | {MONADMIN | NOMONADMIN} | {OPRADMIN | NOOPRADMIN} | {POLADMIN | NOPOLADMIN} | {AUDITADMIN | NOAUDITADMIN} | {CREATEDB | NOCREATEDB} | {USEFT | NOUSEFT} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {LOGIN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {PERSISTENCE | NOPERSISTENCE} | CONNECTION LIMIT connlimit | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_group_name | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN role_name [, ...] | USER role_name [, ...] | SYSID uid | DEFAULT TABLESPACE tablespace_name | PROFILE DEFAULT | PROFILE profile_name | PGUSER
-
执行具有输入参数的语句 准备一个普通语句,通过替换参数(在想要替换参数的地方输入问号)执行它的特定版本。使用EXECUTE语句通过USING子句给定参数执行准备语句。 示例如下: EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "INSERT INTO test1 VALUES(?, ?);"; EXEC SQL END DECLARE SECTION; /* PREPARE 准备一个语句用于执行 */ EXEC SQL PREPARE mystmt FROM :stmt; ... /* 单引号为有效字符,若用字符串需用双引号 */ EXEC SQL EXECUTE mystmt USING 42, 'foobar'; /* 当不再需要预备语句时,应该释放它 */ EXEC SQL DEALLOCATE PREPARE name; 父主题: 执行动态SQL语句
共100000条
- 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
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- ...
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333
推荐文章