华为云用户手册

  • 语法格式 CREATE USER user_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} | { LOG IN | 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_cluster_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
  • PG_TIMEZONE_ABBREVS PG_TIMEZONE_ABBREVS视图显示所有可用时区的信息。具体字段信息如表1所示。 表1 PG_TIMEZONE_ABBREVS字段 名称 类型 描述 abbrev text 时区名缩写。 utc_offset interval 相对于UTC的偏移量。 is_dst boolean 如果当前正实行夏令时则为TRUE,否则为FALSE。 父主题: 其他系统视图
  • macaddr函数 函数trunc(macaddr)返回一个MAC地址,该地址的最后三个字节设置为零。 trunc(macaddr) 描述:把后三个字节置为零。 返回类型:macaddr 示例: 1 2 3 4 5 gaussdb=# SELECT trunc(macaddr '12:34:56:78:90:ab') AS RESULT; result ------------------- 12:34:56:00:00:00 (1 row)
  • cidr和inet函数 函数abbrev,host,text主要是为了提供可选的显示格式。 abbrev(inet) 描述:缩写显示格式文本。 返回类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT abbrev(inet '10.1.0.0/16') AS RESULT; result ------------- 10.1.0.0/16 (1 row) abbrev(cidr) 描述:缩写显示格式文本。 返回类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT abbrev(cidr '10.1.0.0/16') AS RESULT; result --------- 10.1/16 (1 row) broadcast(inet) 描述:网络广播地址。 返回类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT broadcast('192.168.1.5/24') AS RESULT; result ------------------ 192.168.1.255/24 (1 row) family(inet) 描述:抽取地址族,4为IPv4,6为IPv6。 返回类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT family('127.0.0.1') AS RESULT; result -------- 4 (1 row) host(inet) 描述:将主机地址类型抽出为文本。 返回类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT host('192.168.1.5/24') AS RESULT; result ------------- 192.168.1.5 (1 row) hostmask(inet) 描述:为网络构造主机掩码。 返回类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT hostmask('192.168.23.20/30') AS RESULT; result --------- 0.0.0.3 (1 row) masklen(inet) 描述:抽取子网掩码长度。 返回类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT masklen('192.168.1.5/24') AS RESULT; result -------- 24 (1 row) netmask(inet) 描述:为网络构造子网掩码。 返回类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT netmask('192.168.1.5/24') AS RESULT; result --------------- 255.255.255.0 (1 row) network(inet) 描述:抽取地址的网络部分。 返回类型:cidr 示例: 1 2 3 4 5 gaussdb=# SELECT network('192.168.1.5/24') AS RESULT; result ---------------- 192.168.1.0/24 (1 row) set_masklen(inet, int) 描述:为inet数值设置子网掩码长度。 返回类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT set_masklen('192.168.1.5/24', 16) AS RESULT; result ---------------- 192.168.1.5/16 (1 row) set_masklen(cidr, int) 描述:为cidr数值设置子网掩码长度。 返回类型:cidr 示例: 1 2 3 4 5 gaussdb=# SELECT set_masklen('192.168.1.0/24'::cidr, 16) AS RESULT; result ---------------- 192.168.0.0/16 (1 row) text(inet) 描述:把IP地址和掩码长度抽取为文本。 返回类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT text(inet '192.168.1.5') AS RESULT; result ---------------- 192.168.1.5/32 (1 row)
  • 数据库级字符集和字符序 创建一个新的数据库时,可以指定数据库的字符集字符序,创建数据库操作请参见CREATE DATABASE。 CREATE DATABASE [IF NOT EXISTS] database_name [ ENCODING [=] encoding ] | [ LC_COLLATE [=] lc_collate ] | [ LC_CTYPE [=] lc_ctype ] |; 参数说明: database_name 数据库名称。 取值范围:字符串,要符合标识符的命名规范。 ENCODING [ = ] encoding 指定数据库使用的字符编码,可以是字符串(如'SQL_ASCII')、整数编号。 LC_COLLATE [ = ] lc_collate 指定新数据库使用的字符集。例如,通过lc_collate = 'zh_CN.gbk'设定该参数。 该参数的使用会影响到对字符串的排序(如使用ORDER BY执行,以及在文本列上使用索引的顺序)。默认是使用模板数据库的排序。 取值范围:操作系统支持的字符集。 LC_CTYPE [ = ] lc_ctype 指定新数据库使用的字符分类。例如,通过lc_ctype = 'zh_CN.gbk'设定该参数。该参数的使用会影响到字符的分类,如大写、小写和数字。默认是使用模板数据库的字符分类。 取值范围:操作系统支持的字符分类。 数据库级字符集、字符序语法所有模式均可使用,详细语法参考CREATE DATABASE 。 LC_COLLATE/LC_CTYPE语法不支持指定MYSQL模式特有的字符序,参数的取值范围取决于本地环境支持的字符集,可通过locale -a查看。 父主题: 字符集与字符序
  • GS_LABELS GS_LABELS视图显示所有已配置的资源标签信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 表1 GS_LABELS字段 名称 类型 描述 labelname name 资源标签的名称。 labeltype name 资源标签的类型。对应系统表GS_POLICY_LABEL中的labeltype字段。 fqdntype name 数据库资源的类型。如table、schema、index等。 schemaname name 数据库资源所属的schema名称。 fqdnname name 数据库资源名称。 columnname name 数据库资源列名称,若标记的数据库资源不为表的列则该项为空。 父主题: 用户和权限管理
  • 如何并行创建索引? 答:参考如下方法: --设置maintenance_work_mem参数根据实际情况调整该大小。 gaussdb=# SET maintenance_work_mem = '8GB'; --建表。 gaussdb=# CREATE TABLE table_name (col1 int, col2 int); --修改表创建索引的线程数量,需根据实际情况修改线程数。 gaussdb=# ALTER TABLE table_name SET (parallel_workers=4); --创建索引。 gaussdb=# CREATE INDEX index_name ON table_name(col1); --重置该表的parallel_workers参数。 gaussdb=# ALTER TABLE table_name RESET (parallel_workers); --删除索引。 DROP INDEX index_name; --删除表。 gaussdb=# DROP TABLE table_name; 父主题: FAQ
  • DB_SEQUEN CES DB_SEQUENCES视图显示当前用户能够访问的所有序列的信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_SEQUENCES字段 名称 类型 描述 sequence_owner name 序列所有者。 sequence_name name 序列的名称。 min_value int16 序列最小值。 max_value int16 序列最大值。 increment_by int16 序列的增量。 cycle_flag character(1) 序列是否是循环序列。取值范围: Y:循环序列。 N:不是循环序列。 order_flag character varying(1) 标志序列是否按照请求顺序发生,暂不支持,值为NULL。 cache_size int16 序列磁盘缓存大小。 last_number int16 上一序列的值。 scale_flag character varying(1) 标志是否为可扩展序列,暂不支持,值为NULL。 extend_flag character varying(1) 标志可扩展序列生成的值是否超出序列最大值、最小值范围。暂不支持,值为NULL。 sharded_flag character varying(1) 标志是否是分片序列,暂不支持,值为NULL。 session_flag character varying(1) 标志序列是否是会话私有,暂不支持,值为NULL。 keep_value character varying(1) 标志在失败后的replay期间是否保留序列值,暂不支持,值为NULL。 父主题: 其他系统视图
  • GS_SESSION_STAT GS_SESSION_STAT视图以会话线程或AutoVacuum线程为单位,显示会话状态信息。 表1 GS_SESSION_STAT字段 名称 类型 描述 sessid text 线程标识+线程启动时间。 statid integer 统计会话编号。 statname text 统计会话名称。 statunit text 统计会话单位。 value bigint 统计会话值。 父主题: 其他系统视图
  • ADM_DATA_FILES ADM_DATA_FILES视图显示关于数据库文件的描述。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_DATA_FILES字段 名称 类型 描述 tablespace_name name 文件所属的表空间的名称。 bytes double precision 文件的字节长度。 父主题: 其他系统视图
  • GLOBAL_INSTANCE_TIME 提供数据库中所有正常节点下的各种时间消耗信息,如表1所示。 表1 GLOBAL_INSTANCE_TIME字段 名称 类型 描述 node_name name 节点名称。 stat_id integer 统计编号。 stat_name text 类型名称。见INSTANCE_TIME视图。 value bigint 时间值(单位:微秒)。 父主题: Instance
  • 参数 表1 SQLGetData参数 关键字 参数说明 StatementHandle 语句句柄,通过SQLAllocHandle获得。 Col_or_Param_Num 要返回数据的列号。结果集的列按增序从1开始编号。书签列的列号为0。 TargetType TargetValuePtr缓冲中的C数据类型的类型标识符。若TargetType为SQL_ARD_TYPE,驱动使用ARD中SQL_DESC_CONCISE_TYPE字段的类型标识符。若为SQL_C_DEFAULT,驱动根据源的SQL数据类型选择缺省的数据类型。 TargetValuePtr 输出参数:指向返回数据所在缓冲区的指针。 BufferLength TargetValuePtr所指向缓冲区的长度。 StrLen_or_IndPtr 输出参数:指向缓冲区的指针,在此缓冲区中返回长度或标识符的值。
  • 原型 1 2 3 4 5 6 SQLRETURN SQLGetData(SQLHSTMT StatementHandle, SQLUSMALLINT Col_or_Param_Num, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, SQLLEN BufferLength, SQLLEN *StrLen_or_IndPtr);
  • 示例 创建一个对数据库执行CREATE的审计策略。 --创建adt1策略。 gaussdb=# CREATE AUDIT POLICY adt1 PRIVILEGES CREATE; --查看adt1策略。 gaussdb=# SELECT * FROM GS_AUDITING_POLICY; polname | polcomments | modifydate | polenabled ---------+-------------+----------------------------+------------ adt1 | | 2023-11-06 16:41:40.947417 | t --查看审计策略的存放位置。 gaussdb=# SHOW audit_directory; --删除审计策略adt1。 gaussdb=# DROP AUDIT POLICY adt1; 创建一个审计策略,仅审计用户dev_audit进行CREATE操作 。 --创建dev_audit用户。 gaussdb=# CREATE USER dev_audit PASSWORD '********'; --创建一个表tb_for_audit。 gaussdb=# CREATE TABLE tb_for_audit(col1 text, col2 text, col3 text); --创建基于tb_for_audit表的adt_lb0资源标签。 gaussdb=# CREATE RESOURCE LABEL adt_lb0 add TABLE(public.tb_for_audit); --创建针对adt_lb0资源进行create操作的adt2审计策略。 gaussdb=# CREATE AUDIT POLICY adt2 PRIVILEGES CREATE ON LABEL(adt_lb0) FILTER ON ROLES(dev_audit); --删除审计策略adt2。 gaussdb=# DROP AUDIT POLICY adt2; --删除表tb_for_audit。 gaussdb=# DROP TABLE tb_for_audit; --删除dev_audit用户。 gaussdb=# DROP USER dev_audit; 创建一个仅审计记录用户dev_audit,客户端工具为gsql,IP地址为'10.20.30.40', '127.0.0.0/24',在执行针对adt_lb0资源进行的SELECT、INSERT、DELETE操作数据库的审计策略。 --创建dev_audit用户。 gaussdb=# CREATE USER dev_audit PASSWORD '********'; --创建审计策略adt3。 gaussdb=# CREATE AUDIT POLICY adt3 ACCESS SELECT ON LABEL(adt_lb0), INSERT ON LABEL(adt_lb0), DELETE FILTER ON ROLES(dev_audit), APP(gsql), IP('10.20.30.40', '127.0.0.0/24'); --删除审计策略adt3。 gaussdb=# DROP AUDIT POLICY adt3; --删除dev_audit用户。 gaussdb=# DROP USER dev_audit;
  • 注意事项 审计策略的创建与维护有权限限制,只有poladmin、sysadmin或初始用户有权限进行此操作。 在创建审计策略之前,需要确保已经开启安全策略开关,即设置GUC参数“enable_security_policy=on”后,脱敏策略才会生效。 系统管理员或安全策略管理员可以访问GS_AUDITING_POLICY、GS_AUDITING_POLICY_ACCESS、GS_AUDITING_POLICY_PRIVILEGES和GS_AUDITING_POLICY_FILTERS系统表,查询已创建的审计策略。 审计策略名称应具有唯一性,避免与现有策略产生冲突。可以使用IF NOT EXISTS来检查指定的审计策略是否存在,以避免重复创建。 在使用DATABASE LINK功能的场景下,客户端发起的DATABASE LINK请求,实际的发送方是服务端,发送端IP地址等相关的属性将是服务端的值。详情见DATABASE LINK。
  • 语法格式 CREATE AUDIT POLICY [ IF NOT EXISTS ] policy_name { { privilege_audit_clause | access_audit_clause } [, ... ] [ filter_group_clause ] [ ENABLE | DISABLE ] }; privilege_audit_clause: 1 PRIVILEGES { DDL | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ] access_audit_clause: ACCESS { DML | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]
  • 参数说明 policy_name 审计策略名称,需要唯一,不可重复。 取值范围:字符串,要符合标识符命名规范,且最大长度不超过63个字符。若超过63个字符,数据库会截断并保留前63个字符当作审计策略名称。当审计策略名称中包含大写字母时,数据库会自动转换为小写字母,如果需要创建包含大写字母的审计策略名称则需要使用双引号括起来。 标识符需要为小写字母(a-z)、大写字母(A-Z)、下划线(_)、数字(0~9)或美元符号($),且必须以字母或下划线开头。 resource_label_name 资源标签名称。 DDL 指的是针对数据库执行如下操作时进行审计,目前支持:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、SET、SHOW。 取值为ANALYZE时,ANALYZE和VACCUM操作都会被审计。 DML 指的是针对数据库执行如下操作时进行审计,目前支持:SELECT、COPY、DEALLOCATE、DELETE、EXECUTE、INSERT、PREPARE、REINDEX、TRUNCATE、UPDATE。 ALL 指的是上述DDL或DML中支持的所有对数据库的操作。当形式为{ DDL | ALL }时,ALL指所有DDL操作;当形式为{ DML | ALL }时,ALL指所有DML操作。 FILTER_TYPE 描述策略过滤的条件类型,包括APP、ROLES、IP。 filter_value 指具体过滤信息内容。 ENABLE|DISABLE 可以打开或关闭统一审计策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。
  • gs_bm25_distance_text 功能说明:返回bm25文档相似分数,只在使用BM25索引检索时有效。 入参类型:text, text 出参类型:double precision 代码示例: -- 建表及BM25索引 gaussdb=# CREATE TABLE t1(_id TEXT UNIQUE, title TEXT, texts TEXT, metadata TEXT) WITH (storage_type=astore); gaussdb=# CREATE INDEX "bm25_idx1" ON "t1" USING bm25 ("texts"); -- 执行检索 gaussdb=# SELECT /*+ indexscan(t1, bm25_idx1) */ _id, gs_bm25_distance_text(texts, 'drop table t1;') AS SCORE FROM t1 ORDER BY texts ### 'drop table t1;' desc LIMIT 10;
  • gs_bm25_inspect 功能说明:显示索引磁盘使用和内部词倒排信息等数据。 入参类型:text 出参类型:record 代码示例: -- 建表及BM25索引 gaussdb=# CREATE TABLE st_information (st_id SERIAL PRIMARY KEY, st_name TEXT[], st_email TEXT[]); gaussdb=# CREATE INDEX st_information_st_email_bm25_index ON st_information USING bm25(st_email); -- 执行检索 gaussdb=# SELECT * FROM gs_bm25_inspect('st_information_st_email_bm25_index');
  • ### 场景1: 功能说明:基于BM25算法族计算两个文本间的相似度,只对使用BM25索引的查询有效。 左参数类型:text 右参数类型:text 返回值类型:double precision 代码示例: -- 建表及BM25索引 gaussdb=# CREATE TABLE t1(_id TEXT UNIQUE, title TEXT, texts TEXT, metadata TEXT) WITH (storage_type=astore); gaussdb=# CREATE INDEX "bm25_idx1" ON "t1" USING bm25 ("texts"); -- 执行检索 gaussdb=# SELECT /*+ indexscan(t1, bm25_idx1) */ _id, texts ### 'drop table t1;' AS SCORE FROM t1 ORDER BY SCORE desc LIMIT 10; 场景2: 功能说明:基于BM25算法族计算两个分词文本数组间的相似度,只对使用BM25索引的查询有效。 左参数类型:text[] 右参数类型:text[] 返回值类型:double precision 代码示例: -- 建表及BM25索引 gaussdb=# CREATE TABLE st_information (st_id SERIAL PRIMARY KEY, st_name TEXT[], st_email TEXT[]); gaussdb=# CREATE INDEX st_information_st_email_bm25_index ON st_information USING bm25(st_email); -- 执行检索 gaussdb=# SELECT /*+ indexscan(st_information, st_information_st_email_bm25_index) */ st_id, st_email ### '{common-domain@xyz.com}' AS score FROM st_information ORDER BY SCORE desc LIMIT 10;
  • gs_bm25_distance_textarr 功能说明:返回bm25文档相似分数,只在使用BM25索引检索时有效。 入参类型:text[], text[] 出参类型:double precision 代码示例: -- 建表及BM25索引 gaussdb=# CREATE TABLE st_information (st_id SERIAL PRIMARY KEY, st_name TEXT[], st_email TEXT[]); gaussdb=# CREATE INDEX st_information_st_email_bm25_index ON st_information USING bm25(st_email); -- 执行检索 gaussdb=# SELECT /*+ indexscan(st_information, st_information_st_email_bm25_index) */ *, gs_bm25_distance_textarr(st_email, '{common-domain@xyz.com}') AS score FROM st_information ORDER BY st_email ### '{common-domain@xyz.com}' desc LIMIT 10;
  • gs_bm25_tokenize 功能说明:使用指定词典对输入文本进行分词操作,返回被分割的单词文本数组。 入参类型:text, cstring(默认值"pg_catalog.simple_cn_segmentation") 出参类型:text[] 代码示例: gaussdb=# SELECT gs_bm25_tokenize('高斯数据库'); gaussdb=# SELECT gs_bm25_tokenize('高斯数据库', 'pg_catalog.simple_cn_segmentation');
  • PG_USER_STATUS PG_USER_STATUS系统表存储访问数据库用户的状态信息。需要有系统管理员权限才可以访问此系统表。 表1 PG_USER_STATUS字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 roloid oid 角色的标识。 failcount integer 尝试失败次数。 locktime timestamp with time zone 默认显示角色的创建日期,如果角色被管理员锁定,或者登录失败次数超过阈值被锁定,则显示角色被锁定的日期。 rolstatus smallint 角色的状态。 0:正常状态。 1:由于登录失败次数超过阈值被锁定了一定的时间。 2:被管理员锁定。 3:登录失败次数超过阈值,但不锁定账户。 permspace bigint 角色已经使用的永久表存储空间大小。 tempspace bigint 角色已经使用的临时表存储空间大小。 passwordexpired smallint 密码是否失效。 0:密码有效。 1:密码失效。 父主题: 用户和权限管理
  • PG_EXTENSION PG_EXTENSION系统表存储关于所安装扩展的信息。 GaussDB 默认扩展是plpgsql、DIST_FDW、FILE_FDW、LOG_FDW、DBLINK_FDW、PACKAGES、SECURITY_PLUGIN、GSSTAT_PLUGIN、NUMERIC_ENHANCE、PKG_DBE_RAW、PKG_DBE_OUTPUT、PKG_DBE_UTILITY、PKG_ILM、PKG_DBE_XMLGEN、PKG_DBE_STATS、PKG_DBE_XML、PKG_DBE_DESCRIBE和PKG_PL_PROFILER。该系统表为内部使用,不建议用户使用。 表1 PG_EXTENSION 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 extname name 扩展名。 extowner oid 扩展的所有者。 extnamespace oid 扩展导出对象的名称空间。 extrelocatable boolean 标识此扩展是否可迁移到其他名称空间,true表示允许。 extversion text 扩展的版本号。 extconfig oid[] 扩展的配置信息。 extcondition text[] 扩展配置信息的过滤条件。 父主题: 其他系统表
  • 查看和停止正在运行的查询语句 通过视图PG_STAT_ACTIVITY可以查看正在运行的查询语句。方法如下: 设置参数track_activities为on。 1 SET track_activities = on; 当此参数为on时,数据库系统才会获取当前活动查询的运行信息。 查看正在运行的查询语句。以查看正在运行的查询语句所连接的数据库名、执行查询的用户、查询状态及查询对应的PID为例: 1 SELECT datname, usename, state,pid FROM pg_stat_activity; 1 2 3 4 5 6 7 8 datname | usename | state | pid ----------+---------+--------+----------------- testdb | Ruby | active | 140298793514752 testdb | Ruby | active | 140298718004992 testdb | Ruby | idle | 140298650908416 testdb | Ruby | idle | 140298625742592 testdb | omm | active | 140298575406848 (5 rows) 如果state字段显示为idle,则表明此连接处于空闲,等待用户输入命令。 如果仅需要查看非空闲的查询语句,则执行如下命令查看: 1 SELECT datname, usename, state, pid FROM pg_stat_activity WHERE state != 'idle'; 若需要取消运行时间过长的查询,通过pg_terminate_backend(pid...函数,根据线程ID(即2中查询结果的pid字段)结束会话。 1 SELECT PG_TERMINATE_BACKEND(140298793514752); 显示类似如下信息,表示结束会话成功。 1 2 3 4 PG_TERMINATE_BACKEND ---------------------- t (1 row) 显示类似如下信息,表示用户执行了结束当前会话的操作。 1 2 FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command gsql客户端使用pg_terminate_backend(pid...函数结束当前正在执行会话的后台线程时,如果当前的用户是初始用户,客户端不会退出而是自动重连,即还会返回“The connection to the server was lost. Attempting reset: Succeeded.”;否则客户端会重连失败,即返回。“The connection to the server was lost. Attempting reset: Failed.”。这是因为只有初始用户可以免密登录,普通用户不能免密登录,从而重连失败。 对于使用pg_terminate_backend(pid...函数结束非活跃的后台线程时,如果打开了线程池,此时空闲的会话没有线程ID,无法结束会话。非线程池模式下,结束的会话不会自动重连。
  • 查看数据库用户 通过GS_USER可以查看数据库中所有用户的列表,还可以查看用户ID(USESYSID)和用户权限。 1 2 3 4 5 6 7 8 SELECT * FROM gs_user; usename | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valbegin | valuntil | respool | parent | spacelimit | useconfig | nodegroup | tempspacelimit | spillsp acelimit | usemonitoradmin | useoperatoradmin | usepolicyadmin ---------+----------+-------------+----------+-----------+---------+----------+----------+----------+--------------+--------+------------+-----------+-----------+----------------+-------- ---------+-----------------+------------------+---------------- omm | 10 | t | t | t | t | ******** | | | default_pool | 0 | | | | | | t | t | t (1 row)
  • 查看数据库中包含的表 在public Schema下新建五张表: gaussdb=# CREATE TABLE public.search_table_t1(a int) distribute by hash(a); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t2(b int) distribute by hash(b); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t3(c int) distribute by hash(c); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t4(d int) distribute by hash(d); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t5(e int) distribute by hash(e); CREATE TABLE 在PG_TABLES系统表中查看public Schema中包含的前缀为search_table的表: 1 gaussdb=# SELECT distinct(tablename) FROM pg_tables WHERE SCHEMANAME = 'public' AND TABLENAME LIKE 'search_table%'; 结果如下: 1 2 3 4 5 6 7 8 tablename ----------------- search_table_t1 search_table_t2 search_table_t3 search_table_t4 search_table_t5 (5 rows)
  • 优化建议 create index 约束限制: 普通表的索引支持最大列数为32列;分区表的GLOBAL索引支持最大列数为31列。 单个索引大小不能超过索引页面大小(8k),其中B-tree、UBtree不能超过页面大小的三分之一。 分区表创建GLOBAL索引时,存在以下约束条件: 不支持表达式索引、部分索引。 仅支持Btree索引。 在相同属性列上,分区LOCAL索引与GLOBAL索引不能共存。 如果ALTER语句不带有UPDATE GLOBAL INDEX,那么原有的GLOBAL索引将失效,查询时将使用其他索引进行查询;如果ALTER语句带有UPDATE GLOBAL INDEX,原有的GLOBAL索引仍然有效,并且索引功能正确。
  • 功能描述 在指定的表上创建索引。 索引可以用来提高数据库查询性能,但是不恰当的使用将导致数据库性能下降。建议仅在匹配如下某条原则时创建索引: 经常执行查询的字段。 在连接条件上创建索引,对于存在多字段连接的查询,建议在这些字段上建立组合索引。例如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索引,包含非分区键时创建GLOBAL索引,包含全部分区键则创建LOCAL索引;否则默认创建GLOBAL索引。
  • 语法格式 在表上创建索引。 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 ]; 在分区表上创建索引。 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 } ];
共100000条