华为云用户手册

  • memory_tracking_mode 参数说明:设置记录内存信息的模式。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围: none,不启动内存统计功能。 peak, 统计query级内存peak值;此数值记入数据库log,也可由explain analyze输出。 normal,仅做内存实时统计,不生成文件。 executor,生成统计文件,包含执行层使用过的所有已分配内存的上下文信息。 fullexec,生成文件包含执行层申请过的所有内存上下文信息。 默认值:none
  • enable_resource_record 参数说明:是否开启资源监控记录归档功能。开启时,对于history视图(GS_WLM_SESSION_HISTORY和GS_WLM_OPERATOR_HISTORY)中的记录,每隔3分钟会分别被归档到相应的info视图(GS_WLM_SESSION_INFO和GS_WLM_OPERATOR_INFO),归档后history视图中的记录会被清除。此参数需在CN和DN同时应用。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示开启资源监控记录归档功能。 off表示关闭资源监控记录归档功能。 默认值:off
  • use_workload_manager 参数说明:是否开启资源管理功能。此参数需在CN和DN同时应用。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示打开资源管理。 off表示关闭资源管理。 当使用表1中的方式二来修改参数值时,新参数值只能对更改操作执行后启动的线程生效。此外,对于后台线程以及线程复用执行的新作业,该参数值的改动不会生效。如果希望这类线程即时识别参数变化,可以使用kill session或重启节点的方式来实现。 use_workload_manager参数由off变为on状态后,不会统计off时的存储资源。如果需要统计off时用户使用的存储资源,请在数据库中执行以下命令: 1 select gs_wlm_readjust_user_space(0); 默认值:on
  • 列存表 数据按列进行存储,即一列所有数据是连续存储的。单列查询IO小,比行存表占用更少的存储空间。适合数据批量插入、更新较少和以查询为主统计分析类的场景。列存表不适合点查询。 1 2 3 4 5 6 7 8 9 10 gaussdb=# CREATE TABLE customer_t2 ( state_ID CHAR(2), state_NAME VARCHAR2(40), area_ID NUMBER ) WITH (ORIENTATION = COLUMN); --删除表 gaussdb=# DROP TABLE customer_t2;
  • 行存表 默认创建表的类型。数据按行进行存储,即一行数据是连续存储。适用于对数据需要经常更新的场景。 1 2 3 4 5 6 7 8 9 gaussdb=# CREATE TABLE customer_t1 ( state_ID CHAR(2), state_NAME VARCHAR2(40), area_ID NUMBER ); --删除表 gaussdb=# DROP TABLE customer_t1;
  • 操作步骤 连接数据库。 查看数据库运行参数当前取值。 方法一:使用SHOW命令。 使用如下命令查看单个参数: 1 gaussdb=# SHOW server_version; server_version显示数据库版本信息的参数。 使用如下命令查看所有参数: 1 gaussdb=# SHOW ALL; 方法二:使用pg_settings视图。 使用如下命令查看单个参数: 1 gaussdb=# SELECT * FROM pg_settings WHERE NAME='server_version'; 使用如下命令查看所有参数: 1 gaussdb=# SELECT * FROM pg_settings;
  • 解析查询 GaussDB 提供了函数to_tsquery和plainto_tsquery将查询转换为tsquery数据类型,to_tsquery提供比plainto_tsquery更多的功能,但对其输入要求更严格。 to_tsquery([ config regconfig, ] querytext text) returns tsquery to_tsquery从querytext中创建一个tsquery,querytext必须由布尔运算符& (AND),| (OR)和! (NOT)分割的单个token组成。这些运算符可以用圆括弧分组。换句话说,to_tsquery输入必须遵循tsquery输入的通用规则,具体请参见文本搜索类型。不同的是基本tsquery以token表面值作为输入,而to_tsquery使用指定或默认分词器将每个token标准化成词素,并依据分词器丢弃属于停用词的token。例如: 1 2 3 4 5 gaussdb=# SELECT to_tsquery('english', 'The & Fat & Rats'); to_tsquery --------------- 'fat' & 'rat' (1 row) 像在基本tsquery中的输入一样,weight(s)可以附加到每个词素来限制它只匹配那些有相同weight(s)的tsvector词素。比如: 1 2 3 4 5 gaussdb=# SELECT to_tsquery('english', 'Fat | Rats:AB'); to_tsquery ------------------ 'fat' | 'rat':AB (1 row) 同时,*也可以附加到词素来指定前缀匹配: 1 2 3 4 5 gaussdb=# SELECT to_tsquery('supern:*A & star:A*B'); to_tsquery -------------------------- 'supern':*A & 'star':*AB (1 row) 这样的词素将匹配tsquery中指定字符串和权重的项。 plainto_tsquery([ config regconfig, ] querytext text) returns tsquery plainto_tsquery将未格式化的文本querytext变换为tsquery。类似于to_tsvector,文本被解析并且标准化,然后在存在的词之间插入&(AND)布尔算子。 比如: 1 2 3 4 5 gaussdb=# SELECT plainto_tsquery('english', 'The Fat Rats'); plainto_tsquery ----------------- 'fat' & 'rat' (1 row) 请注意,plainto_tsquery无法识别布尔运算符、权重标签,或在其输入中的前缀匹配标签: 1 2 3 4 5 gaussdb=# SELECT plainto_tsquery('english', 'The Fat & Rats:C'); plainto_tsquery --------------------- 'fat' & 'rat' & 'c' (1 row) 在这里,所有输入的标点符号作为空格符号丢弃。 父主题: 控制文本搜索
  • 操作步骤 创建一个文本搜索配置ts_conf,复制预定义的文本搜索配置english。 1 2 gaussdb=# CREATE TEXT SEARCH CONFIGURATION ts_conf ( COPY = pg_catalog.english ); CREATE TEXT SEARCH CONFIGURATION 创建Synonym词典。 假设同义词词典定义文件gs_dict.syn内容如下: 1 2 gaussdb gs gauss gs 执行如下语句创建Synonym词典: 1 2 3 4 5 gaussdb=# CREATE TEXT SEARCH DICTIONARY gs_dict ( TEMPLATE = synonym, SYNONYMS = gs_dict, FILEPATH = 'file:///home/dicts' ); 创建一个Ispell词典english_ispell(词典定义文件来自开源词典)。 1 2 3 4 5 6 7 gaussdb=# CREATE TEXT SEARCH DICTIONARY english_ispell ( TEMPLATE = ispell, DictFile = english, AffFile = english, StopWords = english, FILEPATH = 'file:///home/dicts' ); 设置文本搜索配置ts_conf,修改某些类型的token对应的词典列表。关于token类型的详细信息,请参见解析器。 1 2 3 4 gaussdb=# ALTER TEXT SEARCH CONFIGURATION ts_conf ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, word, hword, hword_part WITH gs_dict, english_ispell, english_stem; 在文本搜索配置中,选择设置不索引或搜索某些token类型。 1 2 gaussdb=# ALTER TEXT SEARCH CONFIGURATION ts_conf DROP MAPPING FOR email, url, url_path, sfloat, float; 使用文本检索调测函数ts_debug()对所创建的词典配置ts_conf进行测试。 1 2 3 4 5 gaussdb=# SELECT * FROM ts_debug('ts_conf', ' GaussDB, the highly scalable, SQL compliant, open source object-relational database management system, is now undergoing beta testing of the next version of our software. '); 可以设置当前session使用ts_conf作为默认的文本搜索配置。此设置仅在当前session有效。 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 gaussdb=# \dF+ ts_conf Text search configuration "public.ts_conf" Parser: "pg_catalog.default" Token | Dictionaries -----------------+------------------------------------- asciihword | gs_dict,english_ispell,english_stem asciiword | gs_dict,english_ispell,english_stem file | simple host | simple hword | gs_dict,english_ispell,english_stem hword_asciipart | gs_dict,english_ispell,english_stem hword_numpart | simple hword_part | gs_dict,english_ispell,english_stem int | simple numhword | simple numword | simple uint | simple version | simple word | gs_dict,english_ispell,english_stem gaussdb=# SET default_text_search_config = 'public.ts_conf'; SET gaussdb=# SHOW default_text_search_config; default_text_search_config ---------------------------- public.ts_conf (1 row)
  • 优化分析 如果将a作为t1和t2的分布列: 1 2 CREATE TABLE t1 (a int, b int) DISTRIBUTE BY HASH (a); CREATE TABLE t2 (a int, b int) DISTRIBUTE BY HASH (a); 则执行计划将存在“Streaming”,导致DN之间存在较大通信数据量,如图1所示。 图1 选择合适的分布列案例(一) 如果将a作为t1的分布列,将b作为t2的分布列: 1 2 CREATE TABLE t1 (a int, b int) DISTRIBUTE BY HASH (a); CREATE TABLE t2 (a int, b int) DISTRIBUTE BY HASH (b); 则执行计划将不包含“Streaming”,减少DN之间存在的通信数据量,从而提升查询性能,如图2所示。 图2 选择合适的分布列案例(二)
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 ALTER NODE GROUP groupname | SET DEFAULT | RENAME TO new_group_name | SET VCGROUP RENAME TO new_group_name | SET NOT VCGROUP | SET TABLE GROUP new_group_name | COPY BUCKETS FROM src_group_name | ADD NODE ( nodename [, ... ] ) | DELETE NODE ( nodename [, ... ] ) | RESIZE TO dest_group_name | SET VCGROUP WITH GROUP new_group_name
  • 注意事项 只有系统管理员或者被授予了node group的ALTER权限的用户可以修改node group信息。 修改node group操作都是系统内部操作,除了SET DEFAULT语法之外,其他操作都需要在维护模式下(调用set xc_maintenance_mode=on;)。 ALTER NODE GROUP语法仅仅应该在数据库内部使用,使用者不应该手动调用这些SQL语句,否则会导致数据库系统数据不一致。
  • 参数说明 groupname 需要修改的node group名称。 取值范围:字符串,要符合标识符的命名规范。 SET DEFAULT 将系统中除了groupname指定的node group之外的其他node group对象的in_redistribution字段设置为'y'。考虑到兼容以前版本,该语法仍然保留,且不需要设置维护模式。 RENAME TO new_group_name 将groupname指定的node group的名称修改为new_group_name。 SET VCGROUP RENAME TO new_group_name 将整个物理集群转换为一个逻辑集群,转换后groupname是逻辑集群名称,原物理集群名称修改为new_group_name。 SET NOT VCGROUP 将所有逻辑集群转换为普通的node group,所有逻辑集群的group_kind从'v' 变成 'n'。 SET TABLE GROUP new_group_name 将所有CN节点的pgxc_class表中pgroup字段是group_name的记录修改为new_group_name。 COPY BUCKETS FROM src_group_name 从src_group_name表示的NodeGroup中,将group_members字段和group_buckets字段的内容拷贝到groupname所表示的NodeGroup中。 ADD NODE ( nodename [, ... ] ) 从groupname指定的NodeGroup中增加指定的节点,这些新增节点在PGXC_NODE系统表中存在。该语句仅仅修改系统表,不会进行实际的节点添加和数据重分布,用户不应该直接调用该SQL语句。 DELETE NODE ( nodename [, ... ] ) 从groupname指定的NodeGroup中,将指定的节点移除,这些被移除的节点仍然存在于PGXC_NODE系统表中。该语句仅仅修改系统表,不会进行实际的节点移除和数据重分布,用户不应该直接调用该SQL语句。 RESIZE TO dest_group_name 设置集群resize操作标志,将groupname所表示的NodeGroup设置为重分布的源NodeGroup,并取消is_installation标志;同时将desst_group_name设置为重分布的目的NodeGroup,并设置is_installation标志。 SET VCGROUP WITH GROUP new_group_name 将整个物理集群转换为一个逻辑集群,转换后groupname仍是物理集群,new_group_name为转换后的逻辑集群名称。
  • 参数说明 OR REPLACE 当存在同名的存储过程时,替换原来的定义。 procedure_name 创建的存储过程名称,可以带有模式名。 取值范围:字符串,要符合标识符的命名规范。 argmode 参数的模式。 VARIADIC用于声明数组类型的参数。 取值范围: IN,OUT,INOUT或VARIADIC。缺省值是IN。只有OUT模式的参数后面能跟VARIADIC。并且OUT和INOUT模式的参数不能用在RETURNS TABLE的过程定义中。 argname 参数的名称。 取值范围:字符串,要符合标识符的命名规范。 argtype 参数的数据类型。 取值范围:可用的数据类型。 IMMUTABLE、STABLE等 行为约束可选项。各参数的功能与CREATE FUNCTION类似,详细说明见CREATE FUNCTION plsql_body PL/SQL存储过程体。 当在存储过程体中进行创建用户等涉及用户密码相关操作时,系统表及csv日志中会记录密码的明文。因此不建议用户在存储过程体中进行涉及用户密码的相关操作。 argument_name和argmode的顺序没有严格要求,推荐按照argument_name、argmode、argument_type的顺序使用。
  • 注意事项 如果创建存储过程时参数或返回值带有精度,不进行精度检测。 创建存储过程时,存储过程定义中对表对象的操作建议都显示指定模式,否则可能会导致存储过程执行异常。 在创建存储过程时,存储过程内部通过SET语句设置current_schema和search_path无效。执行完函数search_path和current_schema与执行函数前的search_path和current_schema保持一致。 如果存储过程参数中带有出参,SELECT调用存储过程必须缺省出参,CALL调用存储过程时调用非重载函数必须指定出参,对于重载的package函数,out参数可以缺省,具体信息参见CALL的示例。 存储过程指定package属性时支持重载。 在创建procedure时,不能在avg函数外面嵌套其他agg函数,或者其他系统函数。 函数定义时如果指定为IMMUTABLE和SHIPPABLE类型,应该尽量避免函数中存在INSERT,UPDATE,DELETE,MERGE和DDL操作,因为上述操作应该由CN判断对应的执行节点,否则执行结果可能产生错误。 存储过程中不支持需要return集合的操作。 在存储过程内部调用其它无参数的存储过程时,可以省略括号,直接使用存储过程名进行调用。
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 postgres=# CREATE [ OR REPLACE ] PROCEDURE procedure_name [ ( {[ argmode ] [ argname ] argtype [ { DEFAULT | := | = } expression ]}[,...]) ] [ { IMMUTABLE | STABLE | VOLATILE } | { SHIPPABLE | NOT SHIPPABLE } | {PACKAGE} | [ NOT ] LEAKPROOF | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER} | COST execution_cost | SET configuration_parameter { [ TO | = ] value | FROM CURRENT } ][ ... ] { IS | AS } plsql_body /
  • 参数说明 name 要创建的文本搜索配置的名称。该名称可以有模式修饰。 parser_name 用于该配置的文本搜索分析器的名称。 source_config 要复制的现有文本搜索配置的名称。 configuration_option 文本搜索配置的配置参数,主要是针对parser_name执行的解析器,或者source_config隐含的解析器而言的。 取值范围:目前共支持default、ngram两种类型的解析器,其中default类型的解析器没有对应的configuration_option,ngram类型解析器对应的configuration_option如表1所示。 表1 ngram类型解析器对应的配置参数 解析器 配置参数 参数描述 取值范围 ngram gram_size 分词长度。 正整数,1~4 默认值:2 punctuation_ignore 是否忽略标点符号。 true(默认值):忽略标点符号。 false:不忽略标点符号。 grapsymbol_ignore 是否忽略图形化字符。 true:忽略图形化字符。 false(默认值):不忽略图形化字符。
  • 示例 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 --创建文本搜索配置。 postgres=# CREATE TEXT SEARCH CONFIGURATION ngram2 (parser=ngram) WITH (gram_size = 2, grapsymbol_ignore = false); --创建文本搜索配置。 postgres=# CREATE TEXT SEARCH CONFIGURATION ngram3 (copy=ngram2) WITH (gram_size = 2, grapsymbol_ignore = false); --添加类型映射。 postgres=# ALTER TEXT SEARCH CONFIGURATION ngram2 ADD MAPPING FOR multisymbol WITH simple; --创建用户joe。 postgres=# CREATE USER joe IDENTIFIED BY 'xxxxxxxxxxx'; --修改文本搜索配置的所有者。 postgres=# ALTER TEXT SEARCH CONFIGURATION ngram2 OWNER TO joe; --修改文本搜索配置的schema。 postgres=# ALTER TEXT SEARCH CONFIGURATION ngram2 SET SCHEMA joe; --重命名文本搜索配置。 postgres=# ALTER TEXT SEARCH CONFIGURATION joe.ngram2 RENAME TO ngram_2; --删除类型映射。 postgres=# ALTER TEXT SEARCH CONFIGURATION joe.ngram_2 DROP MAPPING IF EXISTS FOR multisymbol; --删除文本搜索配置。 postgres=# DROP TEXT SEARCH CONFIGURATION joe.ngram_2; postgres=# DROP TEXT SEARCH CONFIGURATION ngram3; --删除Schema及用户joe。 postgres=# DROP SCHEMA IF EXISTS joe CASCADE; postgres=# DROP ROLE IF EXISTS joe;
  • 注意事项 若仅声明分析器,那么新的文本搜索配置初始没有从符号类型到词典的映射, 因此会忽略所有的单词。后面必须调用ALTER TEXT SEARCH CONFIGURATION命令创建映射使配置生效。如果声明了COPY选项,那么会自动拷贝指定的文本搜索配置的解析器、映射、配置选项等信息。 若模式名称已给出,那么文本搜索配置会在声明的模式中创建。否则会在当前模式创建。 定义文本搜索配置的用户成为其所有者。 PARSER和COPY选项是互相排斥的,因为当一个现有配置被复制,其分析器配置也被复制了。 若仅声明分析器,那么新的文本搜索配置初始没有从符号类型到词典的映射, 因此会忽略所有的单词。
  • 参数说明 CHECK 仅在节点列表为TO ALL时可以指定。如果指定该参数,会在清理连接之前检查数据库是否被其他会话连接访问。此参数主要用于DROP DATABASE之前的连接访问检查,如果发现有其他会话连接,则将报错并停止删除数据库。 FORCE 仅在节点列表为TO ALL时可以指定,如果指定该参数,当前CN中所有和指定dbname和username相关的线程都会收到SIGTERM信号,相应的会话被强制关闭,事务会中止,网络连接被清理。 COORDINATOR ( nodename ,nodename ... } ) | NODE ( nodename , nodename ... ) | ALL 删除当前CN节点与指定节点的空闲/无效连接。有三种场景: COORDINATOR:删除当前CN到指定CN节点上的空闲/无效连接。 NODE:删除当前CN到指定DN节点上的空闲/无效连接。 ALL:删除当前CN到所有节点上的空闲/无效连接,包括CN和DN。 取值范围:可替换其中的nodename为已存在的节点名。 dbname 删除当前CN节点中指定数据库相关的连接。如果不指定该属性,则删除所有数据库相关的连接。 取值范围:系统中已存在数据库名称。 username 删除当前CN节点中指定用户相关连接。如果不指定,则删除所有用户相关的连接。 取值范围:已存在的用户。
  • 语法格式 CLEAN CONNECTION TO { COORDINATOR ( nodename [, ... ] ) | NODE ( nodename [, ... ] )| ALL [ CHECK ] [ FORCE ] } { FOR DATABASE dbname | TO USER username | FOR DATABASE dbname TO USER username };
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 --创建jack用户。 postgres=# CREATE USER jack PASSWORD 'xxxxxxxxxx'; --删除与数据库template1相关的当前CN节点与dn1和dn2节点的空闲/无效连接。 postgres=# CLEAN CONNECTION TO NODE (dn_6001_6002,dn_6003_6004) FOR DATABASE template1; --删除与用户jack相关的当前CN节点与dn1节点的空闲/无效连接。 postgres=# CLEAN CONNECTION TO NODE (dn_6001_6002) TO USER jack; --删除与数据库postgres相关的当前CN节点与所有节点的连接。 postgres=# CLEAN CONNECTION TO ALL FORCE FOR DATABASE postgres; --删除用户jack。 postgres=# DROP USER jack;
  • 返回值 SQL_SUC CES S:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_NO_DATA:表示SQL语句不返回结果集。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 SQL_STILL_EXECUTING:表示语句正在执行。
  • 操作步骤 使用CREATE TABLE AS语句创建表customer_t的临时表副本customer_t_temp。 1 postgres=# CREATE TEMP TABLE customer_t_temp AS SELECT * FROM customer_t; 与使用永久表相比,使用临时表可以提高性能,但存在丢失数据的风险。临时表只在当前会话可见,本会话结束后将自动删除。如果数据丢失是不可接受的,请使用永久表。 截断当前表customer_t。 1 postgres=# TRUNCATE customer_t; 使用INSERT INTO…SELECT语句从副本中向原始表中填充数据。 1 postgres=# INSERT INTO customer_t (SELECT * FROM customer_t_temp); 删除临时表副本customer_t_temp。 1 postgres=# DROP TABLE customer_t_temp;
  • 词典测试 函数ts_lexize用于进行词典测试。 ts_lexize(dict regdictionary, token text) returns text[]如果输入的token可以被词典识别,那么ts_lexize返回词素的数组;如果token可以被词典识别到它是一个停用词,则返回空数组;如果是一个不可识别的词则返回NULL。 比如: 1 2 3 4 5 6 7 8 9 postgres=# SELECT ts_lexize('english_stem', 'stars'); ts_lexize ----------- {star} postgres=# SELECT ts_lexize('english_stem', 'a'); ts_lexize ----------- {} ts_lexize函数支持单一token,不支持文本。 父主题: 测试和调试文本搜索
  • 选择分布列 Hash分布表的分布列选取至关重要,需要满足以下原则: 列值应比较离散,以便数据能够均匀分布到各个DN。例如,考虑选择表的主键为分布列,如在人员信息表中选择身份证号码为分布列。 在满足上述条件的情况下,考虑选择查询中的连接条件为分布列,以便Join任务能够下推到DN中执行,且减少DN之间的通信数据量。 对于Hash分表策略,如果分布列选择不当,可能导致数据倾斜,查询时出现部分DN的I/O短板,从而影响整体查询性能。因此在采用Hash分表策略之后需对表的数据进行数据倾斜性检查,以确保数据在各个DN上是均匀分布的。可以使用以下SQL检查数据倾斜性 1 2 3 4 5 select xc_node_id, count(1) from tablename group by xc_node_id order by xc_node_id desc; 其中xc_node_id对应DN,一般来说,不同DN的数据量相差5%以上即可视为倾斜,如果相差10%以上就必须要调整分布列。 GaussDB支持多分布列特性,可以更好地满足数据分布的均匀性要求。 Range/List分布表的分布列由用户根据实际需要进行选择。 父主题: 表设计最佳实践
  • 参数说明 SESSION 声明的参数只对当前会话起作用。如果SESSION和LOCAL都没出现,则SESSION为缺省值。 如果在事务中执行了此命令,命令的产生影响将在事务回滚之后消失。如果该事务已提交,影响将持续到会话的结束,除非被另外一个SET命令重置参数。 LOCAL 声明的参数只在当前事务中有效。在COMMIT或ROLLBACK之后,会话级别的设置将再次生效。 不论事务是否提交,此命令的影响只持续到当前事务结束。一个特例是:在一个事务里面,即有SET命令,又有SET LOCAL命令,且SET LOCAL在SET后面,则在事务结束之前,SET LOCAL命令会起作用,但事务提交之后,则是SET命令会生效。 TIME ZONE timezone 用于指定当前会话的本地时区。 取值范围:有效的本地时区。该选项对应的运行时参数名称为TimeZone,DEFAULT缺省值为PRC。 CURRENT_SCHEMA schema CURRENT_SCHEMA用于指定当前的模式。 取值范围:已存在模式名称。 SCHEMA schema 同CURRENT_SCHEMA。此处的schema是个字符串。 例如:set schema 'public'; NAMES encoding_name 用于设置客户端的字符编码。等价于set client_encoding to encoding_name。 取值范围:有效的字符编码。该选项对应的运行时参数名称为client_encoding,默认编码为UTF8。 XML OPTION option 用于设置XML的解析方式。 取值范围:CONTENT(缺省)、DOCUMENT config_parameter 可设置的运行时参数的名称。可用的运行时参数可以使用SHOW ALL命令查看。 部分通过SHOW ALL查看的参数不能通过SET设置。如max_datanodes。 value config_parameter的新值。可以声明为字符串常量、标识符、数字,或者逗号分隔的列表。DEFAULT用于把这些参数设置为它们的缺省值。
  • 语法格式 设置所处的时区。 1 SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }; 设置所属的模式。 1 2 3 SET [ SESSION | LOCAL ] {CURRENT_SCHEMA { TO | = } { schema | DEFAULT } | SCHEMA 'schema'}; 设置客户端编码集。 1 SET [ SESSION | LOCAL ] NAMES encoding_name; 设置XML的解析方式。 1 SET [ SESSION | LOCAL ] XML OPTION { DOCUMENT | CONTENT }; 设置其他运行时参数。 1 2 3 SET [ LOCAL | SESSION ] { {config_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }}};
  • 参数说明 statement 指定要分析的SQL语句。 ANALYZE boolean | ANALYSE boolean 显示实际运行时间和其他统计数据。 取值范围: TRUE(缺省值):显示实际运行时间和其他统计数据。 FALSE:不显示。 VERBOSE boolean 显示有关计划的额外信息。 取值范围: TRUE(缺省值):显示额外信息。 FALSE:不显示。 COSTS boolean 包括每个规划节点的估计总成本,以及估计的行数和每行的宽度。 取值范围: TRUE(缺省值):显示估计总成本和宽度。 FALSE:不显示。 CPU boolean 打印CPU的使用情况的信息。 取值范围: TRUE(缺省值):显示CPU的使用情况。 FALSE:不显示。 DETAIL boolean 打印DN上的信息。 取值范围: TRUE(缺省值):打印DN的信息。 FALSE:不打印。 NODES boolean 打印query执行的节点信息。 取值范围: TRUE(缺省值):打印执行的节点的信息。 FALSE:不打印。 NUM_NODES boolean 打印执行中的节点的个数信息。 取值范围: TRUE(缺省值):打印DN个数的信息。 FALSE:不打印。 BUFFERS boolean 包括缓冲区的使用情况的信息。 取值范围: TRUE:显示缓冲区的使用情况。 FALSE(缺省值):不显示。 TIMING boolean 包括实际的启动时间和花费在输出节点上的时间信息。 取值范围: TRUE(缺省值):显示启动时间和花费在输出节点上的时间信息。 FALSE:不显示。 PLAN boolean 是否将执行计划存储在plan_table中。当该选项开启时,会将执行计划存储在PLAN_TABLE中,不打印到当前屏幕,因此该选项为on时,不能与其他选项同时使用。 取值范围: TRUE(缺省值):将执行计划存储在plan_table中,不打印到当前屏幕。执行成功返回EXPLAIN SUCCESS。 FALSE:不存储执行计划,将执行计划打印到当前屏幕。 FORMAT 指定输出格式。 取值范围:TEXT,XML,JSON和YAML。 默认值:TEXT。 PERFORMANCE 使用此选项时,即打印执行中的所有相关信息。
  • 功能描述 显示SQL语句的执行计划。 执行计划将显示SQL语句所引用的表会采用什么样的扫描方式,如:简单的顺序扫描、索引扫描等。如果引用了多个表,执行计划还会显示用到的JOIN算法。 执行计划的最关键的部分是语句的预计执行开销,这是计划生成器估算执行该语句将花费多长的时间。 若指定了ANALYZE选项,则该语句会被执行,然后根据实际的运行结果显示统计数据,包括每个计划节点内时间总开销(毫秒为单位)和实际返回的总行数。这对于判断计划生成器的估计是否接近现实非常有用。
  • 语法格式 显示SQL语句的执行计划,支持多种选项,对选项顺序无要求。 1 EXPLAIN [ ( option [, ...] ) ] statement; 其中选项option子句的语法为。 1 2 3 4 5 6 7 8 9 10 11 12 ANALYZE [ boolean ] | ANALYSE [ boolean ] | VERBOSE [ boolean ] | COSTS [ boolean ] | CPU [ boolean ] | DETAIL [ boolean ] | NODES [ boolean ] | NUM_NODES [ boolean ] | BUFFERS [ boolean ] | TIMING [ boolean ] | PLAN [ boolean ] | FORMAT { TEXT | XML | JSON | YAML } 显示SQL语句的执行计划,且要按顺序给出选项。 1 EXPLAIN { [ { ANALYZE | ANALYSE } ] [ VERBOSE ] | PERFORMANCE } statement;
共100000条