华为云用户手册

  • 参数说明 database_name 数据库名称。 取值范围:字符串,要符合标识符命名规范。 OWNER [ = ] user_name 数据库所有者。缺省时,新数据库的所有者是当前用户。 取值范围:已存在的用户名。 TEMPLATE [ = ] template 模板名。即从哪个模板创建新数据库。GaussDB采用从模板数据库复制的方式来创建新的数据库。初始时,GaussDB包含两个模板数据库template0、template1,以及一个默认的用户数据库postgres。 取值范围:仅template0。 ENCODING [ = ] 'encoding' 指定数据库使用的字符编码,可以是字符串(如'SQL_ASCII')、整数编号。 不指定时,默认使用模版数据库的编码。模板数据库template0和template1的编码默认与操作系统环境相关。template1不允许修改字符编码,因此若要变更编码,请使用template0创建数据库。 常用取值:GBK、UTF8、Latin1、GB18030等,具体支持的字符集如下。 表1 GaussDB字符集 名称 描述 语言 是否服务器端? ICU(International Components for Unicode)? 字节/字符 别名 BIG5 Big Five 繁体中文 否 否 1-2 WIN950, Windows950 EUC_CN 扩展UNIX编码-中国 简体中文 是 是 1-3 - EUC_JP 扩展UNIX编码-日本 日文 是 是 1-3 - EUC_JIS_2004 扩展UNIX编码-日本, JIS X 0213 日文 是 否 1-3 - EUC_KR 扩展UNIX编码-韩国 韩文 是 是 1-3 - EUC_TW 扩展UNIX编码-中国台湾 繁体中文 是 是 1-3 - GB18030 国家标准 中文 是 否 1-4 - GB18030_2022 国家标准 中文 是 否 1-4 - GBK 扩展国家标准 简体中文 是 否 1-2 WIN936, Windows936 ISO_8859_5 ISO 8859-5, ECMA 113 拉丁语/西里尔语 是 是 1 - ISO_8859_6 ISO 8859-6, ECMA 114 拉丁语/阿拉伯语 是 是 1 - ISO_8859_7 ISO 8859-7, ECMA 118 拉丁语/希腊语 是 是 1 - ISO_8859_8 ISO 8859-8, ECMA 121 拉丁语/希伯来语 是 是 1 - JOHAB JOHAB 韩语 否 否 1-3 - KOI8R KOI8-R 西里尔语(俄语) 是 是 1 KOI8 KOI8U KOI8-U 西里尔语(乌克兰语) 是 是 1 - LATIN1 ISO 8859-1, ECMA 94 西欧 是 是 1 ISO88591 LATIN2 ISO 8859-2, ECMA 94 中欧 是 是 1 ISO88592 LATIN3 ISO 8859-3, ECMA 94 南欧 是 是 1 ISO88593 LATIN4 ISO 8859-4, ECMA 94 北欧 是 是 1 ISO88594 LATIN5 ISO 8859-9, ECMA 128 土耳其语 是 是 1 ISO88599 LATIN6 ISO 8859-10, ECMA 144 日耳曼语 是 是 1 ISO885910 LATIN7 ISO 8859-13 波罗的海 是 是 1 ISO885913 LATIN8 ISO 8859-14 凯尔特语 是 是 1 ISO885914 LATIN9 ISO 8859-15 带欧罗巴和口音的LATIN1 是 是 1 ISO885915 LATIN10 ISO 8859-16, ASRO SR 14111 罗马尼亚语 是 否 1 ISO885916 MULE_INTERNAL Mule内部编码 多语种编辑器 是 否 1-4 - SJIS Shift JIS 日语 否 否 1-2 Mskanji, ShiftJIS, WIN932, Windows932 SHIFT_JIS_2004 Shift JIS, JIS X 0213 日语 否 否 1-2 - SQL_ASCII 未指定(见文本) 任意 是 否 1 - UHC 统一韩语编码 韩语 否 否 1-2 WIN949, Windows949 UTF8 Unicode, 8-bit 所有 是 是 1-4 Unicode WIN866 Windows CP866 西里尔语 是 是 1 ALT WIN874 Windows CP874 泰语 是 否 1 - WIN1250 Windows CP1250 中欧 是 是 1 - WIN1251 Windows CP1251 西里尔语 是 是 1 WIN WIN1252 Windows CP1252 西欧 是 是 1 - WIN1253 Windows CP1253 希腊语 是 是 1 - WIN1254 Windows CP1254 土耳其语 是 是 1 - WIN1255 Windows CP1255 希伯来语 是 是 1 - WIN1256 Windows CP1256 阿拉伯语 是 是 1 - WIN1257 Windows CP1257 波罗的海 是 是 1 - WIN1258 Windows CP1258 越南语 是 是 1 ABC, TCVN, TCVN5712, VSCII 需要注意并非所有的客户端API都支持上面列出的字符集。 SQL_ASCII设置与其他设置表现得相当不同。如果服务器字符集是SQL_ASCII,服务器把字节值0-127根据ASCII标准解释,而字节值128-255则当作无法解析的字符。如果设置为SQL_ASCII,就不会有编码转换。因此,这个设置基本不是用来声明所使用的指定编码,因为这个声明会忽略编码。在大多数情况下,如果你使用了任何非ASCII数据,那么使用SQL_ASCII设置都是不明智的,因为数据库将无法帮助你转换或者校验非ASCII字符。 指定新的数据库字符集编码必须与所选择的本地环境中(LC_COLLATE和LC_CTYPE)的设置兼容。 当指定的字符编码集为GBK时,部分中文生僻字无法直接作为对象名。这是因为GBK第二个字节的编码范围在0x40-0x7E之间时,字节编码与ASCII字符@A-Z[\]^_`a-z{|}重叠。其中@[\]^_'{|}是数据库中的操作符,直接作为对象名时,会语法报错。例如“侤”字,GBK16进制编码为0x8240,第二个字节为0x40,与ASCII“@”符号编码相同,因此无法直接作为对象名使用。如果确实要使用,可以在创建和访问对象时,通过增加双引号来规避这个问题。 若客户端编码为A,服务器端编码为B,则需要满足数据库中存在编码格式A与B的转换。数据库能够支持的所有的编码格式转换详见系统表PG_CONVERSION(若无法转换,则建议客户端编码与服务器端编码保持一致,客户端编码可通过GUC参数client_encoding修改)。 若要指定数据库字符集编码为GB18030_2022,且客户端编码也要设置为GB18030时,必须确保客户端操作系统支持的GB18030字符集为2022版本,否则由于GB18030字符集自身的各版本间存在不完全兼容,可能导致数据的不一致性。同时,涉及到历史数据切换为GB18030_2022数据库时应当遵循切库流程,进行数据迁移操作。 LC_COLLATE [ = ] 'lc_collate' 指定新数据库使用的字符集。例如,通过lc_collate = 'zh_CN.gbk'设定该参数。 该参数的使用会影响到对字符串的排序顺序(如使用ORDER BY执行,以及在文本列上使用索引的顺序)。默认是使用模板数据库的排序顺序。 取值范围:操作系统支持的字符集。 LC_CTYPE [ = ] 'lc_ctype' 指定新数据库使用的字符分类。例如,通过lc_ctype = 'zh_CN.gbk'设定该参数。该参数的使用会影响到字符的分类,如大写、小写和数字。默认是使用模板数据库的字符分类。 取值范围:操作系统支持的字符分类。 对于lc_collate和lc_ctype参数的取值范围,取决于本地环境支持的字符集。例如:在Linux操作系统上,可通过locale -a命令获取操作系统支持的字符集列表,在应用lc_collate和lc_ctype参数时可从中选择用户需要的字符集和字符分类。 当指定的字符编码集为GB18030_2022时,其LC_COLLATE和LC_CTYPE的取值范围与GB18030保持一致。 DBCOMPATIBILITY [ = ] 'compatibility_type' 指定兼容的数据库的类型,默认兼容O。 取值范围:A、B、C、PG。分别表示兼容O、MY、TD和POSTGRES。 A兼容性下,数据库将空字符串作为NULL处理,数据类型DATE会被替换为TIMESTAMP(0) WITHOUT TIME ZONE。 将字符串转换成整数类型时,如果输入不合法,B兼容性会将输入转换为0,而其它兼容性则会报错。 PG兼容性下,CHAR和VARCHAR以字符为计数单位,其它兼容性以字节为计数单位。例如,对于UTF-8字符集,CHAR(3)在PG兼容性下能存放3个中文字符,而在其它兼容性下只能存放1个中文字符。 TABLESPACE [ = ] tablespace_name 指定数据库对应的表空间。 取值范围:已存在表空间名。 CONNECTION LIMIT [ = ] connlimit 数据库可以接受的并发连接数。 系统管理员不受此参数的限制。 connlimit数据库主节点单独统计,数据库整体的连接数 = connlimit * 当前正常数据库主节点个数。 取值范围:[-1, 2^31-1]的整数。默认值为-1,表示没有限制。 有关字符编码的一些限制: 若区域设置为C(或POSIX),则允许所有的编码类型,但是对于其他的区域设置,字符编码必须和区域设置相同。 若字符编码方式是SQL_ASCII,并且修改者为管理员用户时,则字符编码可以和区域设置不相同。 编码和区域设置必须匹配模板数据库,除了将template0当作模板。 因为其他数据库可能会包含不匹配指定编码的数据,或者可能包含排序顺序受LC_COLLATE和LC_CTYPE影响的索引。复制这些数据会导致在新数据库中的索引失效。template0是不包含任何会受到影响的数据或者索引。 DBTIMEZONE [ = ] 'time_zone' 指定新数据库的时区。例如,通过DBTIMEZONE = '+00:00'设定该参数。该参数会影响新数据库的时区。默认设置为PRC时区。 取值范围:操作系统支持的时区名称和缩写或者-15:59到+15:00时间戳范围。
  • 语法格式 CREATE DATABASE database_name [ [ WITH ] { [ OWNER [=] user_name ] | [ TEMPLATE [=] template ] | [ ENCODING [=] 'encoding' ] | [ LC_COLLATE [=] 'lc_collate' ] | [ LC_CTYPE [=] 'lc_ctype' ] | [ DBCOMPATIBILITY [=] 'compatibilty_type' ] | [ TABLESPACE [=] tablespace_name ] | [ CONNECTION LIMIT [=] connlimit ] | [ DBTIMEZONE [=] 'time_zone']}[...] ];
  • 基于ecpg开发 ecpg(embedded SQL C preprocessor for GaussDB Kernel)是一种用于C语言程序的嵌入式SQL预处理器。一个嵌入式SQL程序由一种普通编程语言编写的代码(此处为C语言)和SQL命令共同组成。要构建该程序,源代码(*.pgc)首先通过嵌入式SQL预处理器,将源代码转换成一个普通C语言程序(*.c),然后再通过编译器处理。转换过的ecpg应用通过嵌入式SQL库(ecpglib)调用libpq库中的函数,与GaussDB Kernel服务器使用普通的前端/后端协议通信。 嵌入式SQL程序是插入了数据库相关动作的特殊代码的C语言程序。这种特殊代码形式通常如下: EXEC SQL ...; 这些语句在语法上取代了一个C语句,可以出现在全局或者是一个函数中。嵌入式SQL语句遵循普通SQL代码的大小写敏感规则,也允许嵌套的C语言代码风格注释(SQL标准的一部分)。不过,程序的C语言部分遵循C语言程序的标准,不支持嵌套注释。 开发流程 ecpg组件介绍 ecpg预处理以及编译执行 管理数据库连接 执行SQL命令 查询结果集 关闭数据库连接 宿主变量 执行动态SQL语句 错误处理 预处理指令 使用库函数 SQL描述符区域 常用示例 ecpg接口参考 父主题: 应用程序开发教程
  • ADM_AUDIT_TRAIL ADM_AUDIT_TRAIL显示所有标准审计跟踪条目,GaussDB审计信息主要通过pg_query_audit函数,该视图同时存在于PG_CATALOG和SYS schema下。仅拥有AUDITADMIN属性的用户才可以查看审计信息。GaussDB的action_name字段与A数据库审计动作不一致,transactionid字段与A数据库中transactionid数据的类型保持一致,GaussDB的sql_text字段为解析后sql描述语句,不完全与执行的sql语句相同。 表1 ADM_AUDIT_TRAIL字段 名称 类型 描述 os_username character varying(255) 暂不支持,值为NULL。 username character varying(128) 操作被审计的用户的名称,不是用户ID。 userhost character varying(128) 暂不支持,值为NULL。 terminal character varying(255) 暂不支持,值为NULL。 timestamp timestamp(0) without time zone 在本地数据库会话时区中创建审计跟踪条目的日期和时间(审计会话创建的条目的用户登录日期和时间)。 owner character varying(128) 受操作影响的对象的创建者。 obj_name character varying(128) 受操作影响的对象的名称。 action numeric 暂不支持,值为NULL。 action_name character varying(28) action列中的数字代码对应的action类型名称。 说明: GaussDB的action_name字段与A数据库审计动作不一致。 new_owner character varying(128) 暂不支持,值为NULL。 new_name character varying(128) 暂不支持,值为NULL。 obj_privilege character varying(32) 暂不支持,值为NULL。 sys_privilege character varying(40) 暂不支持,值为NULL。 admin_option character varying(1) 暂不支持,值为NULL。 grantee character varying(128) 暂不支持,值为NULL。 audit_option character varying(40) 暂不支持,值为NULL。 ses_actions character varying(19) 暂不支持,值为NULL。 logoff_time timestamp(0) without time zone 暂不支持,值为NULL。 logoff_lread numeric 暂不支持,值为NULL。 logoff_pread numeric 暂不支持,值为NULL。 logoff_lwrite numeric 暂不支持,值为NULL。 logoff_dlock character varying(40) 暂不支持,值为NULL。 comment_text character varying(4000) 暂不支持,值为NULL。 sessionid numeric 暂不支持,值为NULL。 entryid numeric 暂不支持,值为NULL。 statementid numeric 暂不支持,值为NULL。 returncode numeric 暂不支持,值为NULL。 priv_used character varying(40) 暂不支持,值为NULL。 client_id character varying(128) 暂不支持,值为NULL。 econtext_id character varying(64) 暂不支持,值为NULL。 session_cpu numeric 暂不支持,值为NULL。 extended_timestamp timestamp(6) with time zone 创建审计跟踪条目的时间戳(创建条目的用户登录时间戳UTC(协调通用)中的审计会话时间)时区。 proxy_sessionid numeric 暂不支持,值为NULL。 global_uid character varying(32) 暂不支持,值为NULL。 instance_number numeric 暂不支持,值为NULL。 os_process character varying(16) 暂不支持,值为NULL。 transactionid text 访问或修改对象的事务的事务标识符。 说明: GaussDB的transactionid字段与A数据库中transactionid数据的类型保持一致。 scn numeric 暂不支持,值为NULL。 sql_bind nvarchar2(2000) 暂不支持,值为NULL。 sql_text nvarchar2 查询的SQL文本。 说明: GaussDB的sql_text字段为解析后的SQL描述语句,不完全与执行的SQL语句相同。 obj_edition_name character varying(128) 暂不支持,值为NULL。 dbid numeric 暂不支持,值为NULL。 rls_info clob 暂不支持,值为NULL。 current_user character varying(128) 暂不支持,值为NULL。 父主题: 系统视图
  • OS_THREADS 提供当前节点下所有线程的状态信息。 表1 OS_THREADS字段 名称 类型 描述 node_name text 当前节点的名称。 pid bigint 当前节点进程中正在运行的线程号。 lwpid integer 与pid对应的轻量级线程号。 thread_name text 与pid对应的线程名称。 creation_time timestamp with time zone 与pid对应的线程创建的时间。 父主题: OS
  • GS_SLOW_QUERY_INFO GS_SLOW_QUERY_INFO视图显示当前节点上已经转储的慢查询信息。此数据是从内核中转储到系统表中的数据。当设置GUC参数enable_resource_record为on时,系统会定时(周期为3分钟)将内核中query信息导入GS_WLM_SESSION_QUERY_INFO_ALL系统表,开启此功能会占用系统存储空间并对性能有一定影响。用户通过查询GS_SLOW_QUERY_INFO视图,可以查看已经转储的慢查询信息,本版本中已废弃。 表1 GS_SLOW_QUERY_INFO字段 名称 类型 描述 dbname text 数据库名称。 schemaname text schema名称。 nodename text 节点名称。 username text 用户名。 queryid bigint 归一化ID。 query text query语句。 start_time timestamp with time zone 开始执行时间。 finish_time timestamp with time zone 结束执行时间。 duration bigint 执行持续时间(毫秒)。 query_plan text 计划信息。 n_returned_rows bigint Select返回的结果集行数。 n_tuples_fetched bigint 随机扫描行数。 n_tuples_returned bigint 顺序扫描行数。 n_tuples_inserted bigint 插入行数。 n_tuples_updated bigint 更新行数。 n_tuples_deleted bigint 删除行数。 n_blocks_fetched bigint Cache加载次数。 n_blocks_hit bigint Cache命中数。 db_time bigint 有效的DB时间花费,多线程将累加(单位:微秒)。 cpu_time bigint CPU时间(单位:微秒)。 execution_time bigint 执行器内执行时间(单位:微秒)。 parse_time bigint SQL解析时间(单位:微秒)。 plan_time bigint SQL生成计划时间(单位:微秒)。 rewrite_time bigint SQL重写时间(单位:微秒)。 pl_execution_time bigint plpgsql上的执行时间(单位:微秒)。 pl_compilation_time bigint plpgsql上的编译时间(单位:微秒)。 net_send_time bigint 网络上的时间花费(单位:微秒)。 data_io_time bigint IO上的时间花费(单位:微秒)。 父主题: Query
  • _PG_FOREIGN_SERVERS 显示外部服务器的信息。该视图只有sysadmin权限可以查看。 表1 _PG_FOREIGN_SERVERS字段 名称 类型 描述 oid oid 外部服务器的oid。 srvoptions text[] 外部服务器指定选项,使用“keyword=value”格式的字符串。 foreign_server_catalog information_schema.sql_identifier 外部服务器所在database名称(永远为当前数据库)。 foreign_server_name information_schema.sql_identifier 外部服务器名称。 foreign_data_wrapper_catalog information_schema.sql_identifier 外部数据封装器所在database名称(永远为当前数据库)。 foreign_data_wrapper_name information_schema.sql_identifier 外部数据封装器名称。 foreign_server_type information_schema.character_data 外部服务器的类型。 foreign_server_version information_schema.character_data 外部服务器的版本。 authorization_identifier information_schema.sql_identifier 外部服务器的所有者的角色名称。 父主题: Information Schema
  • 原型 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);
  • 参数 表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 输出参数:指向缓冲区的指针,在此缓冲区中返回长度或标识符的值。
  • SNAPSHOT.SNAPSHOT SNAPSHOT表记录当前系统中存储的WDR 快照数据的索引信息,开始,结束时间。只能在系统库中查询到结果,用户库中无法查询,WDR Snapshot在启动后(打开GUC参数enable_wdr_snapshot)会触发创建该表。 表1 SNAPSHOT表属性 名称 类型 描述 示例 snapshot_id bigint WDR快照序号。 1 start_ts timestamp WDR快照的开始时间。 2019-12-28 17:11:27.423742+08 end_ts timestamp WDR快照的结束时间。 2019-12-28 17:11:43.67726+08 version int WDR快照的版本信息。 1 父主题: WDR Snapshot原信息
  • ADM_ROLES ADM_ROLES视图显示数据库角色的相关信息。默认只有系统管理员权限才可以访问此系统视图。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_ROLES字段 名称 类型 描述 role character varying(128) 角色名称。 role_id oid 角色ID号。 authentication_type text 角色的身份验证机制。 password:需要密码验证。 NULL:不需要验证。 common character varying(3) 暂不支持,值为NULL。 oracle_maintained character varying(1) 暂不支持,值为NULL。 inherited character varying(3) 暂不支持,值为NULL。 implicit character varying(3) 暂不支持,值为NULL。 external_name character varying(4000) 暂不支持,值为NULL。 父主题: 系统视图
  • PG_TS_CONFIG PG_TS_CONFIG系统表包含表示文本搜索配置的记录。一个配置指定一个特定的文本搜索解析器和一个为了每个解析器的输出类型使用的字典的列表。 解析器在PG_TS_CONFIG记录中显示,但是字典映射的标记是由PG_TS_CONFIG_MAP里面的辅助记录定义的。 表1 PG_TS_CONFIG字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 cfgname name - 文本搜索配置名。 cfgnamespace oid PG_NAMESPACE.oid 包含这个配置的名称空间的OID。 cfgowner oid PG_AUTHID.oid 配置的所有者。 cfgparser oid PG_TS_PARSER.oid 这个配置的文本搜索解析器的OID。 cfoptions text[] - 分词相关配置选项。 父主题: 系统表
  • 注意事项 如果数据库的编码为SQL_ASCII(可以通过“show server_encoding;”命令查看当前数据库存储编码),则在创建数据库对象时,如果对象名中含有多字节字符(例如中文),超过数据库对象名长度限制(63字节)的时候,数据库将会将最后一个字节(而不是字符)截断,可能造成出现半个字符的情况。 针对这种情况,请遵循以下条件: 保证数据对象的名称不超过限定长度。 修改数据库的默认存储编码集(server_encoding)为utf-8编码集。 不要使用多字节字符做为对象名。 因为误操作导致在多字节字符的中间截断,从而导致无法删除数据库对象,如果出现这种现象,请使用截断前的数据库对象名进行删除操作,或将该对象从各个数据库节点的相应系统表中依次删除。
  • 背景信息 初始时,GaussDB包含两个模板数据库template0、template1以及一个默认的用户数据库postgres。postgres默认的兼容数据库类型为O(即DBCOMPATIBILITY = A ),该兼容类型下将空字符串作为NULL处理。 CREATE DATABASE实际上通过拷贝模板数据库来创建新数据库。默认情况下,拷贝template0。请避免使用客户端或其他方式连接及操作两个模板数据库。 模板数据库中没有用户表,可通过系统表PG_DATABASE查看模板数据库属性。 模板template0不允许用户连接,模板template1只允许数据库初始用户和系统管理员连接,普通用户无法连接。 数据库系统中会有多个数据库,但是客户端程序一次只能连接一个数据库。也不能在不同的数据库之间相互查询。GaussDB中存在多个数据库时,需要通过-d参数指定相应的数据库实例进行连接。
  • 示例 char *stmt = "SELECT * FROM test1 WHERE a = ? AND b = ?"; EXEC SQL ALLOCATE DESCRIPTOR outdesc; EXEC SQL PREPARE foo FROM :stmt; EXEC SQL EXECUTE foo USING SQL DESCRIPTOR indesc INTO SQL DESCRIPTOR outdesc;
  • 功能描述 CREATE INCREMENTAL MATERIALIZED VIEW会创建一个增量物化视图,后续可以使用REFRESH MATERIALIZED VIEW(全量刷新)和REFRESH INCREMENTAL MATERIALIZED VIEW(增量刷新)刷新物化视图的数据。 CREATE INCREMENTAL MATERIALIZED VIEW类似于CREATE TABLE AS,不过它会记住被用来初始化该视图的查询, 因此它可以在后续中进行数据刷新。一个物化视图有很多和表相同的属性,但是不支持临时物化视图。
  • 参数说明 mv_name 要创建的物化视图的名称(可以被模式限定)。 取值范围:字符串,要符合标识符命名规范。 column_name 新物化视图中的一个列名。物化视图支持指定列,指定列需要和后面的查询语句结果的列数量保持一致;如果没有提供列名,会从查询的输出列名中获取列名。 取值范围:字符串,要符合标识符命名规范。 TABLESPACE tablespace_name 指定新建物化视图所属表空间。如果没有声明,将使用默认表空间。 AS query 一个SELECT或者TABLE命令。这个查询将在一个安全受限的操作中运行。
  • 示例 --创建一个普通表。 gaussdb=# CREATE TABLE my_table (c1 int, c2 int) WITH(STORAGE_TYPE=ASTORE); --创建增量物化视图。 gaussdb=# CREATE INCREMENTAL MATERIALIZED VIEW my_imv AS SELECT * FROM my_table; --基表写入数据。 gaussdb=# INSERT INTO my_table VALUES(1,1),(2,2); --对增量物化视图my_imv进行增量刷新。 gaussdb=# REFRESH INCREMENTAL MATERIALIZED VIEW my_imv; --删除增量物化视图。 gaussdb=# DROP MATERIALIZED VIEW my_imv; --删除普通表my_table。 gaussdb=# DROP TABLE my_table;
  • 注意事项 增量物化视图不可以在DATABASE LINK表、临时表或全局临时表上创建。 增量物化视图仅支持简单过滤查询和基表UNION ALL查询。 创建增量物化视图不可指定分布列。 创建增量物化视图后,基表中的绝大多数DDL操作不再支持。 不支持对增量物化视图进行IUD操作。 增量物化视图创建后,当基表数据发生变化时,需要使用刷新(REFRESH)命令保持物化视图与基表同步。 Ustore引擎不支持物化视图的创建和使用。
  • DB_TABLES DB_TABLES视图显示当前用户可访问的所有表。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_TABLES字段 名称 类型 描述 owner character varying(64) 表的所有者。 table_name character varying(64) 表名。 tablespace_name character varying(64) 存储表的表空间名称。 num_rows numeric 表的估计行数。 status character varying(8) 当前表是否有效。 VALID:表示当前表有效。 UNUSABLE:表示当前表不可用。 sample_size numeric 分析表使用的样本数量。 temporary character(1) 表是否为临时表: Y:表示是临时表。 N:表示不是临时表。 dropped character varying 当前表是否已删除: YES:表示已删除。 NO:表示未删除。 pct_free numeric 块中空闲空间的最小比例。 ini_trans numeric 事务的初始数量。 max_trans numeric 事务数量的最大值。 avg_row_len integer 平均每行的字节数。 partitioned character varying(3) 表是否为分区表。 YES:是分区表。 NO:不是分区表。 last_analyzed timestamp with time zone 上次分析表的时间。 row_movement character varying(8) 是否允许分区行移动。 ENABLED:允许分区行移动。 DISABLED:不允许分区行移动。 compression character varying(8) 是否启用表压缩。 ENABLED:启用表压缩。 DISABLED:不启用表压缩。 duration character varying(15) 临时表的期限。 NULL:表示非临时表。 sys$session:表示会话临时表。 sys$transaction:表示事务临时表。 logical_replication character varying(8) 表是否启用逻辑复制。 ENABLED:启用逻辑复制。 DISABLED:不启用逻辑复制。 external character varying(3) 表是否为外表。 YES:是外表。 NO:不是外表。 logging character varying(3) 表的更改是否记入日志。 YES:表的更改记录日志。 NO:表的更改不记录日志。 default_collation character varying(100) 表的默认排序规则。 default degree character varying(10) 扫描表的实例数量。 table_lock character varying(8) 是否启用表级锁。 ENABLED:启用表级锁。 DISABLED:不启用表级锁。 nested character varying(3) 是否为嵌套表。 YES:是嵌套表。 NO:不是嵌套表。 buffer_pool character varying(7) 表的默认缓冲池。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 skip_corrupt character varying(8) 扫描表是否跳过损坏的块。 ENABLED:跳过损坏的块。 DISABLED:不跳过损坏的块。 has_identity character varying(3) 表是否具有标识列。 YES:有标识列。 NO:没有标识列。 segment_created character varying(3) 表段是否已被创建。 YES:表段已被创建。 NO:表段未被创建。 monitoring character varying(3) 是否跟踪表的修改。 YES:跟踪表的修改。 NO:不跟踪表的修改。 cluster_name character varying(128) 暂不支持,值为NULL。 iot_name character varying(128) 暂不支持,值为NULL。 pct_used numeric 暂不支持,值为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extents numeric 暂不支持,值为NULL。 max_extents numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 backed_up character varying(1) 暂不支持,值为NULL。 blocks numeric 暂不支持,值为NULL。 empty_blocks numeric 暂不支持,值为NULL。 avg_space numeric 暂不支持,值为NULL。 chain_cnt numeric 暂不支持,值为NULL。 avg_space_freelist_blocks numeric 暂不支持,值为NULL。 num_freelist_blocks numeric 暂不支持,值为NULL。 instances character varying(10) 暂不支持,值为NULL。 cache character varying(5) 暂不支持,值为NULL。 iot_type character varying(12) 暂不支持,值为NULL。 secondary character varying(1) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 cluster_owner character varying(30) 暂不支持,值为NULL。 dependencies character varying(8) 暂不支持,值为NULL。 compression_for character varying(30) 暂不支持,值为NULL。 read_only character varying(3) 暂不支持,值为NULL。 result_cache character varying(7) 暂不支持,值为NULL。 clustering character varying(3) 暂不支持,值为NULL。 activity_tracking character varying(23) 暂不支持,值为NULL。 dml_timestamp character varying(25) 暂不支持,值为NULL。 container_data character varying(3) 暂不支持,值为NULL。 inmemory_priority character varying(8) 暂不支持,值为NULL。 inmemory_distribute character varying(15) 暂不支持,值为NULL。 inmemory_compression character varying(17) 暂不支持,值为NULL。 inmemory_duplicate character varying(13) 暂不支持,值为NULL。 duplicated character varying(1) 暂不支持,值为NULL。 sharded character varying(1) 暂不支持,值为NULL。 hybrid character varying(3) 暂不支持,值为NULL。 cellmemory character varying(24) 暂不支持,值为NULL。 containers_default character varying(3) 暂不支持,值为NULL。 container_map character varying(3) 暂不支持,值为NULL。 extended_data_link character varying(3) 暂不支持,值为NULL。 extended_data_link_map character varying(3) 暂不支持,值为NULL。 inmemory_service character varying(12) 暂不支持,值为NULL。 inmemory_service_name character varying(1000) 暂不支持,值为NULL。 container_map_object character varying(3) 暂不支持,值为NULL。 memoptimize_read character varying(8) 暂不支持,值为NULL。 memoptimize_write character varying(8) 暂不支持,值为NULL。 has_sensitive_column character varying(3) 暂不支持,值为NULL。 admit_null character varying(3) 暂不支持,值为NULL。 data_link_dml_enabled character varying(3) 暂不支持,值为NULL。 object_id_type character varying(16) 暂不支持,值为NULL。 table_type_owner character varying(128) 暂不支持,值为NULL。 table_type character varying(128) 暂不支持,值为NULL。 compress_for character varying(30) 暂不支持,值为NULL。 父主题: 系统视图
  • 操作步骤 方法一:声明字段类型为序列整型来定义标识符字段。例如: 1 2 3 4 5 gaussdb=# CREATE TABLE T1 ( id serial, name text ); 当结果显示为如下信息,则表示创建成功。 1 CREATE TABLE 方法二:创建序列,并通过nextval('sequence_name')函数指定为某一字段的默认值。 创建序列 1 gaussdb=# CREATE SEQUENCE seq1 cache 100; 当结果显示为如下信息,则表示创建成功。 1 CREATE SEQUENCE 指定为某一字段的默认值,使该字段具有唯一标识属性。 1 2 3 4 5 gaussdb=# CREATE TABLE T2 ( id int not null default nextval('seq1'), name text ); 当结果显示为如下信息,则表示默认值指定成功。 1 CREATE TABLE 指定序列与列的归属关系。 将序列和一个表的指定字段进行关联。这样,在删除该字段或其所在表的时候会自动删除已关联的序列。 1 gaussdb=# ALTER SEQUENCE seq1 OWNED BY T2.id; 当结果显示为如下信息,则表示指定成功。 1 ALTER SEQUENCE 除了为序列指定cache,方法二所实现的功能基本与方法一类似。但是一旦定义cache,序列将会产生空洞(序列值为不连贯的数值,如:1.4.5),并且不能保序。另外为某序列指定从属列后,该列删除,对应的sequence也会被删除。虽然数据库并不限制序列只能为一列产生默认值,但最好不要多列共用同一个序列。 当前版本只支持在定义表的时候指定自增列,或者指定某列的默认值为nextval('seqname'),不支持在已有表中增加自增列或者增加默认值为nextval('seqname')的列。
  • 背景信息 序列Sequence是用来产生唯一整数的数据库对象。序列的值是按照一定规则自增的整数。因为自增所以不重复,因此Sequence具有唯一标识性。这也是Sequence常被用作主键的原因。 通过序列使某字段成为唯一标识符的方法有两种: 一种是声明字段的类型为序列整型,由数据库在后台自动创建一个对应的Sequence。 另一种是使用CREATE SEQUENCE自定义一个新的Sequence,然后将nextval('sequence_name')函数读取的序列值,指定为某一字段的默认值,这样该字段就可以作为唯一标识符。
  • MY_SUBPART_KEY_COLUMNS MY_SUBPART_KEY_COLUMNS视图显示了当前用户所拥有的二级分区表或分区索引的分区键列的相关信息。该视图所有用户可访问,仅可查看当前用户所属信息。该视图同时存在于PG_CATALOG和SYS schema下。 表1 MY_SUBPART_KEY_COLUMNS字段 名称 类型 描述 name character varying(128) 二级分区表名或索引名。 object_type character varying(128) 对象类型。 若分区为分区表,此列为table。 若分区为分区索引,此列为index。 column_name character varying(4000) 二级分区表或索引的键列名。 column_position numeric 列在分区中的位置。 collated_column_id numeric 暂不支持,值为NULL。 父主题: 系统视图
  • 常用方法 表1 LogicalCreateSlotBuilder常用方法 返回值 方法 描述 throws T withSlotName(String slotName) 指定复制槽名。 - ChainedLogicalCreateSlotBuilder withOutputPlugin(String outputPlugin) 插件名称,当前支持mppdb_decoding。 - void make() 在数据库中创建具有指定参数的插槽。 SQLException ChainedLogicalCreateSlotBuilder self() 返回ChainedLogicalCreateSlotBuilder的实现。 -
  • PG_GTT_ATTACHED_PIDS PG_GTT_ATTACHED_PIDS视图可用来查看哪些会话正在使用全局临时表,调用pg_get_attached_pid()函数。 表1 PG_GTT_ATTACHED_PIDS字段 名称 类型 描述 schemaname name schema名称。 tablename name 全局临时表名称。 relid oid 全局临时表的oid。 pids bigint[] 线程pid列表。 sessionids bigint[] 会话id列表。 父主题: 系统视图
  • PG_SHDESCRIPTION PG_SHDESCRIPTION系统表为共享数据库对象存储可选的注释。可以使用COMMENT命令操作注释的内容,使用\d命令查看注释内容。 PG_DESCRIPTION提供了类似的功能,它记录了单个数据库中对象的注释。 PG_SHDESCRIPTION是在数据库实例的所有数据库之间共享的,即每个实例只有一个,而不是每个数据库一个。 表1 PG_SHDESCRIPTION字段 名称 类型 引用 描述 objoid oid 任意OID属性 这条描述所描述的对象的OID。 classoid oid PG_CLASS.oid 这个对象出现的系统表的OID。 description text - 作为对该对象的描述的任意文本。 父主题: 系统表
  • MY_SUBPART_COL_STATISTICS MY_SUBPART_COL_STATISTICS视图存储了当前用户拥有的分区对象的子分区的列统计信息和直方图信息。所有用户都可以访问该视图。该视图同时存在于pg_catalog和sys schema下。 名称 类型 描述 table_name character varying(128) 表名。 subpartition_name character varying(128) 表子分区名称。 column_name character varying(4000) 列名。 num_distinct numeric 暂不支持,值为NULL。 low_value raw 暂不支持,值为NULL。 high_value raw 暂不支持,值为NULL。 density numeric 暂不支持,值为NULL。 num_nulls numeric 暂不支持,值为NULL。 num_buckets numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed date 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 notes character varying(41) 暂不支持,值为NULL。 avg_col_len numeric 暂不支持,值为NULL。 histogram character varying(15) 暂不支持,值为NULL。 schema character varying(64) 列所属的名称空间的名称。 父主题: 系统视图
  • LOCKS LOCKS视图用于查看各打开事务所持有的锁信息。 表1 LOCKS字段 名称 类型 描述 locktype text 被锁定对象的类型:relation,extend,page,tuple,transactionid,virtualxid,object,userlock,advisory。 database oid 被锁定对象所在数据库的OID: 如果被锁定的对象是共享对象,则OID为0。 如果是一个事务ID,则为NULL。 relation oid 关系的OID,如果锁定的对象不是关系,也不是关系的一部分,则为NULL。 page integer 关系内部的页面编号,如果对象不是关系页或者不是行页,则为NULL。 tuple smallint 页面里边的行编号,如果对象不是行,则为NULL。 bucket integer 哈希桶号。 virtualxid text 事务的虚拟ID,如果对象不是一个虚拟事务ID,则为NULL。 transactionid xid 事务的ID,如果对象不是一个事务ID,则为NULL。 classid oid 包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。 objid oid 对象在其系统表内的OID,如果对象不是普通数据库对象,则为NULL。 objsubid smallint 对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是0;如果这个对象不是普通数据库对象,则为NULL。 virtualtransaction text 持有此锁或者在等待此锁的事务的虚拟ID。 pid bigint 持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。 sessionid bigint 持有或者等待这个锁的会话ID。如果锁是被一个预备事务持有的,则为NULL。 mode text 这个线程持有的或者是期望的锁模式。 granted boolean 如果锁是持有锁,则为TRUE。 如果锁是等待锁,则为FALSE。 fastpath boolean 如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。 locktag text 会话等待锁信息,可通过locktag_decode()函数解析。 global_sessionid text 全局会话ID。 父主题: Lock
  • PG_CAST PG_CAST系统表存储数据类型之间的转化关系。 表1 PG_CAST字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 castsource oid 源数据类型的OID。 casttarget oid 目标数据类型的OID。 castfunc oid 转化函数的OID。如果为零表明不需要转化函数。 castcontext "char" 源数据类型和目标数据类型间的转化方式: 'e':表示只能进行显式转化(使用CAST或::语法)。 'i':表示能进行隐式转化。 'a':表示类型间同时支持隐式和显式转化。 castmethod "char" 转化方法: 'f':使用castfunc字段中指定的函数进行转化。 'b':类型间是二进制强制转化,不使用castfunc。 父主题: 系统表
  • DB_TAB_COL_STATISTICS DB_TAB_COL_STATISTICS视图显示从DB_TAB_COLUMNS中提取的列统计信息和直方图信息。所有用户都可以访问该视图。该视图同时存在于PG_CATALOG和SYS Schema下。该视图在LOW_VALUE、HIGH_VALUE字段,由于底层表结构不同原因,与A数据库取值有差异,当LOW_VALUE为高频值时,GaussDB的LOW_VALUE为次小值。当HIGH_VALUE为高频值时,GaussDB的HIGH_VALUE为次高值。HISTOGRAM字段,由于统计方式不同原因,与A数据库取值有差异,GaussDB只支持两种类型直方图frequency,equi-width。SCOPE字段,由于GaussDB不支持全局临时表统计原因,与A数据库取值有差异,GaussDB只支持本地临时表信息统计,默认置SHARED。 表1 DB_TAB_COL_STATISTICS字段 名称 类型 描述 owner character varying(128) 表的所有者。 table_name character varying(128) 表名。 column_name character varying(128) 列名。 num_distinct numeric 列中不同值的数量。 low_value raw 列中的低值。 high_value raw 列中的高值。 density numeric 如果COLUMN_NAME上有直方图,则此列将显示直方图中跨越少于2个端点的值的选择性。它不代表跨越2个或更多端点的值的选择性。 如果COLUMN_NAME上没有可用的直方图,则该列的值为1/NUM_DISTINCT。 num_nulls numeric 列中空值数。 num_buckets numeric 列的直方图中的桶数。 sample_size numeric 用于分析此列的样本量。 last_analyzed timestamp(0) without time zone 最近分析此列的日期。数据库重启后,数据会丢失。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 notes character varying(99) 暂不支持,值为NULL。 avg_col_len numeric 列的平均长度(以字节为单位)。 histogram character varying(15) 表示直方图是否存在以及存在的类型: NONE:表示不存在直方图。 FREQUENCY:表示频率直方图。 EQUI-WIDTH:表示等宽直方图。 scope character varying(7) 该值SHARED用于在除全局临时表之外的任何表上收集的统计信息,值为SHARED。 schema character varying(64) 列所属的名称空间的名称。 父主题: 系统视图
共100000条