diff --git a/content/en/menu/index.md b/content/en/menu/index.md index b1a4b56ef50593e85ba617dc1be45314c4f614b8..48c111cc88784e4df685ce55ae5f8178c5ba036d 100644 --- a/content/en/menu/index.md +++ b/content/en/menu/index.md @@ -1,7 +1,7 @@ --- headless: true --- -- [Installation Guide]({{< relref "./docs/installation/installation.md" >}}) - - [Starting Installation]({{< relref "./docs/installation/starting-installation.md" >}}) - - [Configurations During Installation]({{< relref "./docs/installation/configurations-during-installation.md" >}}) - - [Completing the Installation]({{< relref "./docs/installation/completing-the-installation.md" >}}) +- [Installation Guide]({{< relref "./docs/Installation/Installation.md" >}}) + - [Starting Installation]({{< relref "./docs/Installation/starting-installation.md" >}}) + - [Configurations During Installation]({{< relref "./docs/Installation/configurations-during-installation.md" >}}) + - [Completing the Installation]({{< relref "./docs/Installation/completing-the-installation.md" >}}) diff --git a/content/zh/docs/Administratorguide/Administratorguide.md b/content/zh/docs/Administratorguide/Administratorguide.md new file mode 100644 index 0000000000000000000000000000000000000000..f78958062dc348afde0360b6bb4fe846afdf095e --- /dev/null +++ b/content/zh/docs/Administratorguide/Administratorguide.md @@ -0,0 +1,4 @@ +# 管理员指南 + +本文档提供了openGauss数据库常用的管理员操作,方便管理员更好地使用openGauss。 本文档适用于所有使用openGauss数据库的管理员。 + diff --git "a/content/zh/docs/Administratorguide/WAL\346\227\245\345\277\227.md" "b/content/zh/docs/Administratorguide/WAL\346\227\245\345\277\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..d86948ea6007cc9b0b3a68c2a4a24bc02007c6a0 --- /dev/null +++ "b/content/zh/docs/Administratorguide/WAL\346\227\245\345\277\227.md" @@ -0,0 +1,29 @@ +# WAL日志 + +预写式日志WAL(Write Ahead Log,也称为Xlog)是指如果要修改数据文件,必须是在这些修改操作已经记录到日志文件之后才能进行修改,即在描述这些变化的日志记录刷新到永久存储器之后。在系统崩溃时,可以使用WAL日志对openGauss进行恢复操作。 + +## 日志文件存储路径 + +以一个数据库节点为例,默认在“/gaussdb/data/data\_dn/pg\_xlog”目录下。 + +其中“/gaussdb/data/data\_dn”代表openGauss节点的数据目录。 + +## 日志文件命名格式 + +日志文件以段文件的形式存储的,每个段为16MB,并分割成若干页,每页8KB。对WAL日志的命名说明如下:一个段文件的名称由24个十六进制组成,分为三个部分,每个部分由8个十六进制字符组成。第一部分表示时间线,第二部分表示日志文件标号,第三部分表示日志文件的段标号。时间线由1开始,日志文件标号和日志文件的段标号由0开始。 + +例如,系统中的第一个事务日志文件是000000010000000000000000。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>这些数字一般情况下是顺序增长使用的(要把所有可用数字都用光也需要非常长的时间),但也存在循环使用的情况。 + +## 日志内容说明 + +WAL日志的内容取决于记录事务的类型,在系统崩溃时可以利用WAL日志进行恢复。 + +默认配置下,openGauss每次启动时会先读取WAL日志进行恢复。 + +## 维护建议 + +WAL日志对数据库异常恢复有重要的作用,建议定期对WAL日志进行备份。 + diff --git a/content/zh/docs/Administratorguide/gs_backup.md b/content/zh/docs/Administratorguide/gs_backup.md new file mode 100644 index 0000000000000000000000000000000000000000..349bd0ed1e5aaf2b3db176b1271583889750a455 --- /dev/null +++ b/content/zh/docs/Administratorguide/gs_backup.md @@ -0,0 +1,141 @@ +# gs\_backup + +## 背景信息 + +openGauss部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。openGauss提供了gs\_backup工具帮助openGauss备份、恢复重要数据、显示帮助信息和版本号信息。 + +## 前提条件 + +- 可以正常连接openGauss数据库。 +- 在进行还原时,需要保证各节点备份目录中存在备份文件,若备份文件丢失,则需要从其他节点进行拷贝(二进制文件需修改文件名中的节点名)。 +- 需以操作系统用户omm执行gs\_backup命令。 + +## 语法 + +- 备份数据库主机 + + ``` + gs_backup -t backup --backup-dir=BACKUPDIR [-h HOSTNAME] [--parameter] [--binary] [--all] [-l LOGFILE] + ``` + +- 恢复数据库主机 + + ``` + gs_backup -t restore --backup-dir=BACKUPDIR [-h HOSTNAME] [--parameter] [--binary] [--all] [-l LOGFILE] + ``` + +- 显示帮助信息 + + ``` + gs_backup -? | --help + ``` + +- 显示版本号信息 + + ``` + gs_backup -V | --version + ``` + + +## 参数说明 + +gs\_backup参数可以分为如下几类: + +- 备份数据库主机参数: + - -h + + 指定存储备份文件的主机名称。 + + 取值范围:主机名称。如果不指定主机名称,则分发到openGauss。 + + - --backup-dir=BACKUPDIR + + 备份文件保存路径。 + + - --parameter + + 备份参数文件,不指定--parameter、--binary、--all参数时默认只备份参数文件。 + + - --binary + + 备份二进制文件。 + + - --all + + 备份二进制和参数文件。 + + - -l + + 指定日志文件及存放路径。 + + 默认值:$GAUSSLOG/om/gs\_backup-YYYY-MM-DD\_hhmmss.log + + +- 恢复数据库主机参数: + - -h + + 指定需要恢复主机的名称。 + + 取值范围:主机名称。如果不指定主机,则恢复openGauss。 + + - --backup-dir=BACKUPDIR + + 恢复文件提取路径。 + + - --parameter + + 恢复参数文件,不指定--parameter、--binary、--all参数时默认只恢复参数文件。 + + - --binary + + 恢复二进制文件。 + + - --all + + 恢复二进制和参数文件。 + + - -l + + 指定日志文件及存放路径。 + + 默认值:$GAUSSLOG/om/gs\_backup-YYYY-MM-DD\_hhmmss.log + + +- 其他参数: + - -?, --help + + 显示帮助信息。 + + - -V, --version + + 显示版本号信息。 + + + +## 示例 + +- 使用gs\_backup脚本备份数据库主机。 + + ``` + gs_backup -t backup --backup-dir=/opt/software/gaussdb/backup_dir -h plat1 --parameter + Backing up openGauss. + Parsing configuration files. + Successfully parsed the configuration file. + Performing remote backup. + Remote backup succeeded. + Successfully backed up openGauss. + ``` + +- 使用gs\_backup脚本恢复数据库主机。 + + ``` + gs_backup -t restore --backup-dir=/opt/software/gaussdb/backup_dir -h plat1 --parameter + Restoring openGauss. + Parsing the configuration file. + Successfully parsed configuration files. + Performing remote restoration. + Remote restoration succeeded. + Successfully restored openGauss. + ``` + + diff --git a/content/zh/docs/Administratorguide/gs_basebackup.md b/content/zh/docs/Administratorguide/gs_basebackup.md new file mode 100644 index 0000000000000000000000000000000000000000..0dcdbfe826a0252d51805d763f86c74ac5ce0283 --- /dev/null +++ b/content/zh/docs/Administratorguide/gs_basebackup.md @@ -0,0 +1,125 @@ +# gs\_basebackup + +## 背景信息 + +openGauss部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。openGauss提供了gs\_basebackup工具做基础的物理备份。gs\_basebackup的实现目标是对服务器数据库文件的二进制进行拷贝,其实现原理使用了复制协议。远程执行gs\_basebackup时,需要使用系统管理员账户。gs\_basebackup当前仅支持热备份模式,不支持压缩格式备份。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- gs\_basebackup仅支持全量备份,不支持增量。 +>- gs\_basebackup当前仅支持热备份模式,不支持压缩格式备份。 +>- gs\_basebackup在备份包含绝对路径的表空间时,不能在同一台机器上进行备份。对于同一台机器,绝对路径是唯一的,因此会产生冲突。可以在不同的机器上备份含绝对路径的表空间。 +>- 若打开增量检测点功能且打开双写, gs\_basebackup也会备份双写文件。 +>- 若pg\_xlog目录为软链接,备份时将不会建立软链接,会直接将数据备份到目的路径的pg\_xlog目录下。 + +## 前提条件 + +- 可以正常连接openGauss数据库,pg\_hba.conf中需要配置允许复制链接, 需要配置max\_wal\_senders的数量, 至少有一个可用。 +- 在进行还原时,需要保证各节点备份目录中存在备份文件,若备份文件丢失,则需要从其他节点进行拷贝。 + +## 语法 + +- 显示帮助信息 + + ``` + gs_basebackup -? | --help + ``` + +- 显示版本号信息 + + ``` + gs_basebackup -V | --version + ``` + + +## 参数说明 + +gs\_basebackup参数可以分为如下几类: + +- -D directory + + 备份文件输出的目录,必选项。 + + +- 常用参数: + - -c,--checkpoint=fast|spread + + 设置检查点模式为fast或者spread\(默认\) + + - -l,--label=LABEL + + 为备份设置标签 + + - -P,--progress + + 启用进展报告 + + - -v, --verbose + + 启用冗长模式 + + - -V, --version + + 打印版本后退出 + + - -?,--help + + 显示gs\_basebackup命令行参数 + + +- 连接参数 + - -h, --host=HOSTNAME + + 指定正在运行服务器的主机名或者Unix域套接字的路径。 + + - -p,--port=PORT + + 指定数据库服务器的端口号。 + + 可以通过port参数修改默认端口号。 + + - -U,--username=USERNAME + + 指定连接数据库的用户。 + + - -s, --status-interval=INTERVAL + + 发送到服务器的状态包的时间\(以秒为单位\) + + - -w,--no-password + + 不出现输入密码提示。 + + - -W, --password + + 当使用-U参数连接本地数据库或者连接远端数据库时,可通过指定该选项出现输入密码提示。 + + + +## 示例 + +``` +gs_basebackup -D /home/test/trunk/install/data/backup -h 127.0.0.1 -p 21233 +INFO: The starting position of the xlog copy of the full build is: 0/1B800000. The slot minimum LSN is: 0/1B800000. +``` + +## 从备份文件恢复数据 + +当数据库发生故障需要从备份文件进行恢复。因为gs\_basebackup是对数据库按二进制进行备份,因此恢复时可以直接拷贝替换原有的文件, 或者直接在备份的库上启动数据库。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 若当前数据库实例正在运行,直接从备份文件启动数据库可能会存在端口冲突,这是需要修配置文件的port参数,或者在启动数据库时指定一下端口。 +>- 若当前备份文件为主备数据库,可能需要修改一下主备之间的复制连接。即配置文件中的postgre.conf中的replconninfo1, replconninfo2等 + +若要在原库的地方恢复数据库,参考步骤如下: + +1. 停止数据库服务器, 具体操作请参见<管理员指南\> +2. 将原数据库库和所有表空间复制到另外一个位置, 以备后面需要 +3. 清理原库中的所有或部分文件 +4. 使用数据库系统用户权限从备份中还原需要的数据库文件 +5. 若数据库中存在链接文件, 需要修改使其链接到正确的文件. +6. 重启数据库服务器, 并检查数据库内容,确保数据库已经恢复到所需的状态。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 暂不支持备份文件增量恢复 +>- 恢复后需要检查数据库中的链接文件是否链接到正确的文件 + diff --git a/content/zh/docs/Administratorguide/gs_dump.md b/content/zh/docs/Administratorguide/gs_dump.md new file mode 100644 index 0000000000000000000000000000000000000000..ad2a4bc20fab11e607fad7ecaa5fc15a81a6d4e7 --- /dev/null +++ b/content/zh/docs/Administratorguide/gs_dump.md @@ -0,0 +1,561 @@ +# gs\_dump + +## 背景信息 + +gs\_dump是openGauss用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等)。支持导出的数据库可以是默认数据库postgres,也可以是自定义数据库。 + +gs\_dump工具由操作系统用户omm执行。 + +gs\_dump工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。 + +gs\_dump工具支持导出完整一致的数据。例如,T1时刻启动gs\_dump导出A数据库,那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。 + +gs\_dump支持将数据库信息导出至纯文本格式的SQL脚本文件或其他归档文件中。 + +- 纯文本格式的SQL脚本文件:包含将数据库恢复为其保存时的状态所需的SQL语句。通过[gsql](zh-cn_topic_0249632261.md)运行该SQL脚本文件,可以恢复数据库。即使在其他主机和其他数据库产品上,只要对SQL脚本文件稍作修改,也可以用来重建数据库。 +- 归档格式文件:包含将数据库恢复为其保存时的状态所需的数据,可以是tar格式、目录归档格式或自定义归档格式,详见[表1](#zh-cn_topic_0249632271_zh-cn_topic_0237152335_zh-cn_topic_0058967678_t17db29a12e7342cfbf02b2f6e50ff1a5)。该导出结果必须与[gs\_restore](gs_restore.md#ZH-CN_TOPIC_0256377138)配合使用来恢复数据库,gs\_restore工具在导入时,系统允许用户选择需要导入的内容,甚至可以在导入之前对等待导入的内容进行排序。 + +## 主要功能 + +gs\_dump可以创建四种不同的导出文件格式,通过**\[**-F或者--format=**\]**选项指定,具体如[表1](#zh-cn_topic_0249632271_zh-cn_topic_0237152335_zh-cn_topic_0058967678_t17db29a12e7342cfbf02b2f6e50ff1a5)所示。 + +**表 1** 导出文件格式 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

格式名称

+

-F的参数值

+

说明

+

建议

+

对应导入工具

+

纯文本格式

+

p

+

纯文本脚本文件包含SQL语句和命令。命令可以由gsql命令行终端程序执行,用于重新创建数据库对象并加载表数据。

+

小型数据库,一般推荐纯文本格式。

+

使用gsql工具恢复数据库对象前,可根据需要使用文本编辑器编辑纯文本导出文件。

+

自定义归档格式

+

c

+

一种二进制文件。支持从导出文件中恢复所有或所选数据库对象。

+

中型或大型数据库,推荐自定义归档格式。

+

使用gs_restore可以选择要从自定义归档导出文件中导入相应的数据库对象。

+

目录归档格式

+

d

+

该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。

+

-

+

tar归档格式

+

t

+

tar归档文件支持从导出文件中恢复所有或所选数据库对象。tar归档格式不支持压缩且对于单独表大小应小于8GB。

+

-

+
+ +>![](public_sys-resources/icon-note.gif) **说明:** +>可以使用gs\_dump程序将文件压缩为纯文本或自定义归档导出文件,减少导出文件的大小。生成纯文本导出文件时,默认不压缩。生成自定义归档导出文件时,默认进行中等级别的压缩。gs\_dump程序无法压缩已归档导出文件。通过压缩方式导出纯文本格式文件,gsql无法成功导入数据对象。 + +## 注意事项 + +禁止修改导出的文件和内容,否则可能无法恢复成功。 + +为了保证数据一致性和完整性,gs\_dump会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs\_dump会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。 + +## 语法 + +``` +gs_dump [OPTION]... [DBNAME] +``` + +>![](public_sys-resources/icon-note.gif) **说明:** +>“dbname”前面不需要加短或长选项。“dbname”指定要连接的数据库。 +>例如: +>不需要-d,直接指定“dbname”。 +>``` +>gs_dump -p port_number postgres -f dump1.sql +>``` +>或者 +>``` +>export PGDATABASE=postgres +>``` +>``` +> gs_dump -p port_number -f dump1.sql +>``` +>环境变量: PGDATABASE + +## 参数说明 + +通用参数: + +- -f, --file=FILENAME + + 将输出发送至指定文件或目录。如果省略该参数,则使用标准输出。如果输出格式为\(-F c/-F d/-F t\)时,必须指定-f参数。如果-f的参数值含有目录,要求当前用户对该目录具有读写权限,并且不能指定已有目录。 + +- -F, --format=c|d|t|p + + 选择输出格式。格式如下: + + - p|plain:输出一个文本SQL脚本文件(默认)。 + - c|custom:输出一个自定义格式的归档,并且以目录形式输出,作为gs\_restore输入信息。该格式是最灵活的输出格式,因为能手动选择,而且能在恢复过程中将归档项重新排序。该格式默认状态下会被压缩。 + - d|directory:该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。 + - t|tar:输出一个tar格式的归档形式,作为gs\_restore输入信息。tar格式与目录格式兼容;tar格式归档形式在提取过程中会生成一个有效的目录格式归档形式。但是,tar格式不支持压缩且对于单独表有8GB的大小限制。此外,表数据项的相应排序在恢复过程中不能更改。 + + 输出一个tar格式的归档形式,也可以作为gsql输入信息。 + + +- -v, --verbose + + 指定verbose模式。该选项将导致gs\_dump向转储文件输出详细的对象注解和启动/停止次数,向标准错误流输出处理信息。 + +- -V, --version + + 打印gs\_dump版本,然后退出。 + +- -Z, --compress=0-9 + + 指定使用的压缩比级别。 + + 取值范围:0\~9 + + - 0表示无压缩。 + - 1表示压缩比最小,处理速度最快。 + - 9表示压缩比最大,处理速度最慢。 + + 针对自定义归档格式,该选项指定单个表数据片段的压缩,默认方式是以中等级别进行压缩。p、tar归档格式目前不支持压缩。 + +- --lock-wait-timeout=TIMEOUT + + 请勿在转储刚开始时一直等待以获取共享表锁。如果无法在指定时间内锁定某个表,就选择失败。可以以任何符合SET statement\_timeout的格式指定超时时间。 + +- -?, --help + + 显示gs\_dump命令行参数帮助,然后退出。 + + +转储参数: + +- -a, --data-only + + 只输出数据,不输出模式\(数据定义\)。转储表数据、大对象和序列值。 + +- -b, --blobs + + 该参数为扩展预留接口,不建议使用。 + +- -c, --clean + + 在将创建数据库对象的指令输出到备份文件之前,先将清理(删除)数据库对象的指令输出到备份文件中。(如果目标数据库中没有任何对象,gs\_restore工具可能会输出一些提示性的错误信息) + + 该选项只对文本格式有意义。针对归档格式,可以调用gs\_restore时指定选项。 + +- -C, --create + + 备份文件以创建数据库和连接到创建的数据库的命令开始。(如果命令脚本是这种方式执行,无所谓在运行脚本之前连接的是哪个数据库。) + + 该选项只对文本格式有意义。针对归档格式,可以在调用gs\_restore时指定选项。 + +- -E, --encoding=ENCODING + + 以指定的字符集编码创建转储。默认情况下,以数据库编码创建转储。(得到相同结果的另一个办法是将环境变量“PGCLIENTENCODING”设置为所需的转储编码。) + +- -n, --schema=SCHEMA + + 只转储与模式名称匹配的模式,此选项包括模式本身和所有它包含的对象。如果该选项没有指定,所有在目标数据库中的非系统模式将会被转储。写入多个-n选项来选择多个模式。此外,根据gsql的\\d命令所使用的相同规则,模式参数可被理解成一个pattern,所以多个模式也可以通过在该pattern中写入通配符来选择。使用通配符时,注意给pattern打引号,防止shell扩展通配符。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 当-n已指定时,gs\_dump不会转储已选模式所附着的任何其他数据库对象。因此,无法保证某个指定模式的转储结果能够自行成功地储存到一个空数据库中。 + >- 当-n指定时,非模式对象不会被转储。 + + 转储支持多个模式的转储。多次输入-n schemaname转储多个模式。 + + 例如: + + ``` + gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -n sch1 -n sch2 + ``` + + 在上面这个例子中,sch1和sch2会被转储。 + +- -N, --exclude-schema=SCHEMA + + 不转储任何与模式pattern匹配的模式。Pattern将参照针对-n的相同规则来理解。可以通过输入多次-N,不转储与任何pattern匹配的模式。 + + 当同时输入-n和-N时,会转储与至少一个-n选项匹配、与-N选项不匹配的模式。如果有-N没有-n,则不转储常规转储中与-N匹配的模式。 + + 转储过程支持排除多个模式。 + + 在转储过程中,输入-N exclude schema name排除多个模式。 + + 例如: + + ``` + gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -N sch1 -N sch2 + ``` + + 在上面这个例子中,sch1和sch2在转储过程中会被排除。 + +- -o, --oids + + 转储每个表的对象标识符(OIDs),作为表的一部分数据。该选项用于应用以某种方式参照了OID列的情况。如果不是以上这种情况,请勿使用该选项。 + +- -O, --no-owner + + 不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs\_dump会发出ALTER OWNER或SET SESSION AUTHORIZATION语句设置所创建的数据库对象的归属。如果脚本正在运行,该语句不会执行成功,除非是由系统管理员触发(或是拥有脚本中所有对象的同一个用户)。通过指定-O,编写一个任何用户都能存储的脚本,且该脚本会授予该用户拥有所有对象的权限。 + + 该选项只对文本格式有意义。针对归档格式,可以在调用gs\_restore时指定选项。 + +- -s, --schema-only + + 只转储对象定义(模式),而非数据。 + +- -S, --sysadmin=NAME + + 该参数为扩展预留接口,不建议使用。 + +- -t, --table=TABLE + + 指定转储的表(或视图、或序列、或外表)对象列表,可以使用多个-t选项来选择多个表,也可以使用通配符指定多个表对象。 + + 当使用通配符指定多个表对象时,注意给pattern打引号,防止shell扩展通配符。 + + 当使用-t时,-n和-N没有任何效应,这是因为由-t选择的表的转储不受那些选项的影响。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- -t参数选项个数必须小于等于100。 + >- 如果-t参数选项个数大于100,建议使用参数--include-table-file来替换。 + >- 当-t已指定时,gs\_dump不会转储已选表所附着的任何其他数据库对象。因此,无法保证某个指定表的转储结果能够自行成功地储存到一个空数据库中。 + >- -t tablename只转储在默认搜索路径中可见的表。-t '\*.tablename'转储数据库下所有模式下的tablename表。-t schema.table转储特定模式中的表。 + >- -t tablename不会导出表上的触发器信息。 + + 例如: + + ``` + gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -t schema1.table1 -t schema2.table2 + ``` + + 在上面这个例子中,schema1.table1和schema2.table2会被转储。 + +- --include-table-file=FILENAME + + 指定需要dump的表文件。 + +- -T, --exclude-table=TABLE + + 不转储的表(或视图、或序列、或外表)对象列表,可以使用多个-t选项来选择多个表,也可以使用通配符指定多个表对象。 + + 当同时输入-t和-T时,会转储在-t列表中,而不在-T列表中的表对象。 + + 例如: + + ``` + gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -T table1 -T table2 + ``` + + 在上面这个例子中,table1和table2在转储过程中会被排除。 + +- --exclude-table-file=FILENAME + + 指定不需要dump的表文件。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >同--include-table-file,其内容格式如下: + >schema1.table1 + >schema2.table2 + >...... + +- -x, --no-privileges|--no-acl + + 防止转储访问权限(授权/撤销命令)。 + +- --binary-upgrade + + 该参数为扩展预留接口,不建议使用。 + +- --binary-upgrade-usermap="USER1=USER2" + + 该参数为扩展预留接口,不建议使用。 + +- --column-inserts|--attribute-inserts + + 以INSERT命令带列名(INSERT INTO表(列、…)值…)方式导出数据。这会导致恢复缓慢。但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。 + +- --disable-dollar-quoting + + 该选项将禁止在函数体前使用美元符号$,并强制使用SQL标准字符串语法对其进行引用。 + +- --disable-triggers + + 该参数为扩展预留接口,不建议使用。 + +- --exclude-table-data=TABLE + + 指定不转储任何匹配表pattern的表这方面的数据。依照针对-t的相同规则理解该pattern。 + + 可多次输入--exclude-table-data来排除匹配任何pattern的表。当用户需要特定表的定义但不需要其中的数据时,这个选项很有帮助。 + + 排除数据库中所有表的数据,参见[--schema-only](#zh-cn_topic_0249632271_zh-cn_topic_0237152335_zh-cn_topic_0059777770_l35ed3d5a093e42ab8fc945dd3ca80ecd)。 + +- --inserts + + 发出INSERT命令(而非COPY命令)时转储数据。这会导致恢复缓慢。 + + 但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。注意如果重排列顺序,可能会导致恢复整个失败。列顺序改变时,--column-inserts选项不受影响,虽然会更慢。 + +- --no-security-labels + + 该参数为扩展预留接口,不建议使用。 + +- --no-tablespaces + + 不输出选择表空间的命令。使用该选项,无论默认表空间是哪个,在恢复过程中所有对象都会被创建。 + + 该选项只对文本格式有意义。针对归档格式,可以在调用gs\_restore时指定选项。 + +- --no-unlogged-table-data + + 该参数为扩展预留接口,不建议使用。 + +- --non-lock-table + + 该参数为扩展预留接口,不建议使用。 + +- --include-alter-table + + 转储表删除列。该选项会记录列的删除。 + +- --quote-all-identifiers + + 强制对所有标识符加引号。为了向后续版本迁移,且其中可能涉及引入额外关键词,在转储相应数据库时该选项会有帮助。 + +- --section=SECTION + + 指定已转储的名称区段(pre-data、data、和post-data)。 + +- --serializable-deferrable + + 转储过程中使用可串行化事务,以确保所使用的快照与之后的数据库状态一致;要实现该操作需要在无异常状况的事务流中等待某个点,因为这样才能保证转储成功,避免引起其他事务出现serialization\_failure要重新再做。 + + 但是该选项对于灾难恢复没有益处。对于在原始数据库进行升级的时候,加载一个数据库的拷贝作为报告或其他只读加载共享的转储是有帮助的。没有这个选项,转储会反映一个与任何事务最终提交的序列化执行不一致的状态。 + + 如果当gs\_dump启动时,读写事务仍处于非活动状态,即便使用该选项也不会对其产生影响。如果读写事务处于活动状态,转储的开始时间可能会延迟一段不确定的时间。 + +- --use-set-session-authorization + + 输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。 + +- --with-encryption=AES128 + + 指定转储数据需用AES128进行加密。 + +- --with-key=KEY + + AES128密钥长度必须是16字节。 + +- --include-depend-objs + + 备份结果包含依赖于指定对象的对象信息。该参数需要同-t/--include-table-file参数关联使用才会生效。 + +- --exclude-self + + 备份结果不包含指定对象自身的信息。该参数需要同-t/--include-table-file参数关联使用才会生效。 + +- --dont-overwrite-file + + 文本、tar、以及自定义格式情况下会重写现有文件。这对目录格式不适用。 + + 例如: + + 设想这样一种情景,即当前目录下backup.sql已存在。如果在输入命令中输入-f backup.sql选项时,当前目录恰好也生成backup.sql,文件就会被重写。 + + 如果备份文件已存在,且输入--dont-overwrite-file选项,则会报告附带‘转储文件已经存在’信息的错误。 + + ``` + gs_dump -p port_number postgres -f backup.sql -F plain --dont-overwrite-file + ``` + + +>![](public_sys-resources/icon-note.gif) **说明:** +>- -s/--schema-only和-a/--data-only不能同时使用。 +>- -c/--clean和-a/--data-only不能同时使用。 +>- --inserts/--column-inserts和-o/--oids不能同时使用,因为INSERT命令不能设置OIDS。 +>- --role和--rolepassword必须一起使用。 +>- --binary-upgrade-usermap和--binary-upgrade必须一起使用。 +>- --include-depend-objs/--exclude-self需要同-t/--include-table-file参数关联使用才会生效 +>- --exclude-self必须同--include-depend-objs一起使用。 + +连接参数: + +- -h, --host=HOSTNAME + + 指定主机名称。如果数值以斜杠开头,则被用作到Unix域套接字的路径。缺省从PGHOST环境变量中获取(如果已设置),否则,尝试一个Unix域套接字连接。 + + 该参数只针对openGauss外,对openGauss内本机只能用127.0.0.1。 + + 例如:主机名 + + 环境变量:PGHOST + +- -p, --port=PORT + + 指定主机端口。在开启线程池情况下,建议使用 pooler port,即主机端口+1。 + + 环境变量:PGPORT + +- -U, --username=NAME + + 指定所连接主机的用户名。 + + 不指定连接主机的用户名时,用户默认系统管理员。 + + 环境变量:PGUSER + +- -w, --no-password + + 不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 + +- -W, --password=PASSWORD + + 指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W选项;如果没有-W选项,并且不是系统管理员,“Dump Restore工具”会提示用户输入密码。 + +- --role=ROLENAME + + 指定创建转储使用的角色名。选择该选项,会使gs\_dump连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有gs\_dump要求的权限时,该选项会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以超系统管理员身份登录,而使用该选项能够在不违反该规定的情况下完成转储。 + +- --rolepassword=ROLEPASSWORD + + 指定角色名的密码。 + + +## 说明 + +如果openGauss有任何本地数据要添加到template1数据库,请谨慎将gs\_dump的输出恢复到一个真正的空数据库中,否则可能会因为被添加对象的定义被复制,出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如: + +``` +CREATE DATABASE foo WITH TEMPLATE template0; +``` + +tar归档形式的文件大小不得超过8GB(tar文件格式的固有限制)。tar文档整体大小和任何其他输出格式没有限制,操作系统可能对此有要求。 + +由gs\_dump生成的转储文件不包含优化程序用来做执行计划决定的统计数据。因此,最好从某转储文件恢复之后运行ANALYZE以确保最佳效果。转储文件不包含任何ALTER DATABASE…SET命令,这些设置由gs\_dumpall转储,还有数据库用户和其他完成安装设置。 + +## 示例 + +使用gs\_dump转储数据库为SQL文本文件或其它格式的操作,如下所示。 + +示例中“Bigdata@123”表示数据库用户密码;“backup/MPPDB\_backup.sql”表示导出的文件,其中backup表示相对于当前目录的相对目录;“37300”表示数据库服务器端口;“postgres”表示要访问的数据库名。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>导出操作时,请确保该目录存在并且当前的操作系统用户对其具有读写权限。 + +示例1:执行gs\_dump,导出postgres数据库全量信息,导出的MPPDB\_backup.sql文件格式为纯文本格式。 + +``` +gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.sql -p 37300 postgres -F p +gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: The total objects number is 356. +gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: [100.00%] 356 objects have been dumped. +gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: dump database postgres successfully +gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: total time: 1274 ms +``` + +使用gsql程序从纯文本导出文件中导入数据。 + +示例2:执行gs\_dump,导出postgres数据库全量信息,导出的MPPDB\_backup.tar文件格式为tar格式。 + +``` +gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.tar -p 37300 postgres -F t +gs_dump[port='37300'][postgres][2018-06-27 10:02:24]: The total objects number is 1369. +gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: [100.00%] 1369 objects have been dumped. +gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: dump database postgres successfully +gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: total time: 50086 ms +``` + +示例3:执行gs\_dump,导出postgres数据库全量信息,导出的MPPDB\_backup.dmp文件格式为自定义归档格式。 + +``` +gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.dmp -p 37300 postgres -F c +gs_dump[port='37300'][postgres][2018-06-27 10:05:40]: The total objects number is 1369. +gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: [100.00%] 1369 objects have been dumped. +gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: dump database postgres successfully +gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: total time: 36620 ms +``` + +示例4:执行gs\_dump,导出postgres数据库全量信息,导出的MPPDB\_backup文件格式为目录格式。 + +``` +gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup -p 37300 postgres -F d +gs_dump[port='37300'][postgres][2018-06-27 10:16:04]: The total objects number is 1369. +gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: [100.00%] 1369 objects have been dumped. +gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: dump database postgres successfully +gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: total time: 33977 ms +``` + +示例5:执行gs\_dump,导出postgres数据库信息,但不导出/home/MPPDB\_temp.sql中指定的表信息。导出的MPPDB\_backup.sql文件格式为纯文本格式。 + +``` +gs_dump -U omm -W Bigdata@123 -p 37300 postgres --exclude-table-file=/home/MPPDB_temp.sql -f backup/MPPDB_backup.sql +gs_dump[port='37300'][postgres][2018-06-27 10:37:01]: The total objects number is 1367. +gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: [100.00%] 1367 objects have been dumped. +gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: dump database postgres successfully +gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: total time: 37017 ms +``` + +示例6:执行gs\_dump,仅导出依赖于指定表testtable的视图信息。然后创建新的testtable表,再恢复依赖其上的视图。 + +- 备份仅依赖于testtable的视图。 + + ``` + gs_dump -s -p 37300 postgres -t PUBLIC.testtable --include-depend-objs --exclude-self -f backup/MPPDB_backup.sql -F p + gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: The total objects number is 331. + gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: [100.00%] 331 objects have been dumped. + gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: dump database postgres successfully + gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: total time: 327 ms + ``` + +- 修改testtable名称。 + + ``` + gsql -p 37300 postgres -r -c "ALTER TABLE PUBLIC.testtable RENAME TO testtable_bak;" + ``` + +- 创建新的testtable表。 + + ``` + CREATE TABLE PUBLIC.testtable(a int, b int, c int); + ``` + +- 还原依赖于testtable的视图。 + + ``` + gsql -p 37300 postgres -r -f backup/MPPDB_backup.sql + ``` + + +## 相关命令 + +[gs\_dumpall](gs_dumpall.md#ZH-CN_TOPIC_0256377137),[gs\_restore](gs_restore.md#ZH-CN_TOPIC_0256377138) + diff --git a/content/zh/docs/Administratorguide/gs_dumpall.md b/content/zh/docs/Administratorguide/gs_dumpall.md new file mode 100644 index 0000000000000000000000000000000000000000..63b771baac4de272e2bde2004cff0f3671b8e543 --- /dev/null +++ b/content/zh/docs/Administratorguide/gs_dumpall.md @@ -0,0 +1,253 @@ +# gs\_dumpall + +## 背景信息 + +gs\_dumpall是openGauss用于导出所有数据库相关信息工具,它可以导出openGauss数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据、以及openGauss所有数据库公共的全局对象。 + +gs\_dumpall工具由操作系统用户omm执行。 + +gs\_dumpall工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。 + +gs\_dumpall工具支持导出完整一致的数据。例如,T1时刻启动gs\_dumpall导出openGauss数据库,那么导出数据结果将会是T1时刻该openGauss数据库的数据状态,T1时刻之后对openGauss的修改不会被导出。 + +gs\_dumpall在导出openGauss所有数据库时分为两部分: + +- gs\_dumpall自身对所有数据库公共的全局对象进行导出,包括有关数据库用户和组,表空间以及属性(例如,适用于数据库整体的访问权限)信息。 +- gs\_dumpall通过调用gs\_dump来完成openGauss中各数据库的SQL脚本文件导出,该脚本文件包含将数据库恢复为其保存时的状态所需要的全部SQL语句。 + +以上两部分导出的结果为纯文本格式的SQL脚本文件,使用[gsql](zh-cn_topic_0249632261.md)运行该脚本文件可以恢复openGauss数据库。 + +## 注意事项 + +- 禁止修改导出的文件和内容,否则可能无法恢复成功。 +- 为了保证数据一致性和完整性,gs\_dumpall会对需要转储的表设置共享锁。如果某张表在别的事务中设置了共享锁,gs\_dumpall会等待此表的锁释放后锁定此表。如果无法在指定时间内锁定某张表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。 +- 由于gs\_dumpall读取所有数据库中的表,因此必须以openGauss管理员身份进行连接,才能导出完整文件。在使用gsql执行脚本文件导入时,同样需要管理员权限,以便添加用户和组,以及创建数据库。 + +## 语法 + +``` +gs_dumpall [OPTION]... +``` + +## 参数说明 + +通用参数: + +- -f, --filename=FILENAME + + 将输出发送至指定文件。如果这里省略,则使用标准输出。 + +- -v, --verbose + + 指定verbose模式。该选项将导致gs\_dumpall向转储文件输出详细的对象注解和启动/停止次数,向标准错误流输出处理信息。 + +- -V, --version + + 打印gs\_dumpall版本,然后退出。 + +- --lock-wait-timeout=TIMEOUT + + 请勿在转储刚开始时一直等待以获取共享表锁。如果无法在指定时间内锁定某个表,就选择失败。可以以任何符合SET statement\_timeout的格式指定超时时间。 + +- -?, --help + + 显示gs\_dumpall命令行参数帮助,然后退出。 + + +转储参数: + +- -a, --data-only + + 只转储数据,不转储模式(数据定义)。 + +- -c, --clean + + 在重新创建数据库之前,执行SQL语句清理(删除)这些数据库。针对角色和表空间的转储命令已添加。 + +- -g, --globals-only + + 只转储全局对象(角色和表空间),无数据库。 + +- -o, --oids + + 转储每个表的对象标识符(OIDs),作为表的一部分数据。该选项用于应用以某种方式参照了OID列的情况。如果不是以上这种情况,请勿使用该选项。 + +- -O, --no-owner + + 不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs\_dumpall会发出ALTER OWNER或SET SESSION AUTHORIZATION语句设置所创建的模式元素的所属。如果脚本正在运行,该语句不会执行成功,除非是由系统管理员触发(或是拥有脚本中所有对象的同一个用户)。通过指定-O,编写一个任何用户都能存储的脚本,且该脚本会授予该用户拥有所有对象的权限。 + +- -r, --roles-only + + 只转储角色,不转储数据库或表空间。 + +- -s, --schema-only + + 只转储对象定义(模式),而非数据。 + +- -S, --sysadmin=NAME + + 在转储过程中使用的系统管理员名称。 + +- -t, --tablespaces-only + + 只转储表空间,不转储数据库或角色。 + +- -x, --no-privileges + + 防止转储访问权限(授权/撤销命令)。 + +- --column-inserts|--attribute-inserts + + 以INSERT命令带列名(INSERT INTO表(列、…)值…)方式导出数据。这会导致恢复缓慢。但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。 + +- --disable-dollar-quoting + + 该选项将禁止在函数体前使用美元符号$,并强制使用SQL标准字符串语法对其进行引用。 + +- --disable-triggers + + 该参数为扩展预留接口,不建议使用。 + +- --inserts + + 发出INSERT命令(而非COPY命令)时转储数据。这会导致恢复缓慢。注意如果重排列顺序,可能会导致恢复整个失败。--column-inserts选项更加安全,虽然可能更慢些。 + +- --no-security-labels + + 该参数为扩展预留接口,不建议使用。 + +- --no-tablespaces + + 请勿输出创建表空间的命令,也请勿针对对象选择表空间。使用该选项,无论默认表空间是哪个,在恢复过程中所有对象都会被创建。 + +- --no-unlogged-table-data + + 该参数为扩展预留接口,不建议使用。 + +- --quote-all-identifiers + + 强制对所有标识符加引号。为了向后续版本迁移,且其中可能涉及引入额外关键词,在转储相应数据库时该选项会有帮助。 + +- --dont-overwrite-file + + 不重写当前文件。 + +- --use-set-session-authorization + + 输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。 + +- --with-encryption=AES128 + + 指定转储数据需用AES128进行加密。 + +- --with-key=KEY + + AES128密钥长度必须是16字节。 + +- --include-templatedb + + 转储过程中包含模板库。 + +- --binary-upgrade + + 该参数为扩展预留接口,不建议使用。 + +- --binary-upgrade-usermap="USER1=USER2" + + 该参数为扩展预留接口,不建议使用。 + +- --tablespaces-postfix + + 该参数为扩展预留接口,不建议使用。 + +- --parallel-jobs + + 指定备份进程并发数,取值范围为1\~1000。 + + +>![](public_sys-resources/icon-note.gif) **说明:** +>- -g/--globals-only和-r/--roles-only不能同时使用。 +>- -g/--globals-only和-t/--tablespaces-only不能同时使用。 +>- -r/--roles-only和-t/--tablespaces-only不能同时使用。 +>- -s/--schema-only和-a/--data-only不能同时使用。 +>- -r/--roles-only和-a/--data-only不能同时使用。 +>- -t/--tablespaces-only和-a/--data-only不能同时使用。 +>- -g/--globals-only和-a/--data-only不能同时使用。 +>- --tablespaces-postfix和--binary-upgrade必须一起使用。 +>- --binary-upgrade-usermap和--binary-upgrade必须一起使用。 +>- --parallel-jobs和-f/--file必须一起使用。 + +连接参数: + +- -h, --host + + 指定主机的名称。如果取值是以斜线开头,它将用作Unix域套接字的目录。默认值取自PGHOST环境变量;如果没有设置,将启动某个Unix域套接字建立连接。 + + 该参数只针对openGauss外,对openGauss内本机只能用127.0.0.1。 + + 环境变量:PGHOST + +- -l, --database + + 指定所连接的转储全局对象的数据库名称,并去寻找还有其他哪些数据库需要被转储。如果没有指定,会使用postgres数据库,如果postgres数据库不存在,会使用template1。 + +- -p, --port + + 指定服务器所监听的TCP端口或本地Unix域套接字后缀,以确保连接。默认值设置为PGPORT环境变量。 + + 在开启线程池情况下,建议使用 pooler port,即监听端口+1。 + + 环境变量:PGPORT + +- -U, --username + + 所连接的用户名。 + + 环境变量:PGUSER + +- -w, --no-password + + 不出现输入密码提示。如果服务器要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 + +- -W, --password + + 指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W选项;如果没有-W选项,并且不是系统管理员,“Dump Restore工具”会提示用户输入密码。 + +- --role + + 指定创建转储使用的角色名。选择该选项,会使gs\_dumpall连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有gs\_dumpall要求的权限时,该选项会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以系统管理员身份登录,而使用该选项能够在不违反该规定的情况下完成转储。 + +- --rolepassword + + 指定具体角色用户的角色密码。 + + +## 说明 + +由于gs\_dumpall内部调用gs\_dump,所以一些诊断信息参见[gs\_dump](gs_dump.md#ZH-CN_TOPIC_0256377136)。 + +一旦恢复,最好在每个数据库上运行ANALYZE,优化程序提供有用的统计数据。 + +gs\_dumpall恢复前需要所有必要的表空间目录才能退出;否则,对于处在非默认位置的数据库,数据库创建会失败。 + +## 示例 + +使用gs\_dumpall一次导出openGauss的所有数据库。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>gs\_dumpall仅支持纯文本格式导出。所以只能使用gsql恢复gs\_dumpall导出的转储内容。 + +``` +gs_dumpall -f backup/bkp2.sql -p 37300 +gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:09]: The total objects number is 2371. +gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:35]: [100.00%] 2371 objects have been dumped. +gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:46]: dump database dbname='postgres' successfully +gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:46]: total time: 55567 ms +gs_dumpall[port='37300'][2018-06-27 09:55:46]: dumpall operation successful +gs_dumpall[port='37300'][2018-06-27 09:55:46]: total time: 56088 ms +``` + +## 相关命令 + +[gs\_dump](gs_dump.md#ZH-CN_TOPIC_0256377136),[gs\_restore](gs_restore.md#ZH-CN_TOPIC_0256377138) + diff --git a/content/zh/docs/Administratorguide/gs_restore.md b/content/zh/docs/Administratorguide/gs_restore.md new file mode 100644 index 0000000000000000000000000000000000000000..9a6b724955ab22818ccaca44e12f74ec4b0145aa --- /dev/null +++ b/content/zh/docs/Administratorguide/gs_restore.md @@ -0,0 +1,387 @@ +# gs\_restore + +## 背景信息 + +gs\_restore是openGauss提供的针对gs\_dump导出数据的导入工具。通过此工具可由gs\_dump生成的导出文件进行导入。 + +gs\_restore工具由操作系统用户omm执行。 + +主要功能包含: + +- 导入到数据库 + + 如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接的密码。 + +- 导入到脚本文件 + + 如果未指定导入数据库,则创建包含重建数据库所必须的SQL语句脚本并写入到文件或者标准输出。等效于直接使用gs\_dump导出为纯文本格式。 + + +## 命令格式 + +``` +gs_restore [OPTION]... FILE +``` + +>![](public_sys-resources/icon-note.gif) **说明:** +>- FILE没有短选项或长选项。用来指定归档文件所处的位置。 +>- 作为前提条件,需输入dbname或-l选项。不允许用户同时输入dbname和-l选项。 +>- gs\_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议使用"-c" 参数,在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。 +>- 日志打印无开关,若需隐藏日志,请将日志重定向到日志文件。 + +## 参数说明 + +通用参数: + +- -d, --dbname=NAME + + 连接数据库dbname并直接导入到该数据库中。 + +- -f, --file=FILENAME + + 指定生成脚本的输出文件,或使用-l时列表的输出文件。 + + 默认是标准输出。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >-f不能同-d一起使用。 + +- -F, --format=c|d|t + + 指定归档格式。由于gs\_restore会自动决定格式,因此不需要指定格式。 + + 取值范围: + + - c/custom:该归档形式为[gs\_dump](gs_dump.md#ZH-CN_TOPIC_0256377136)的自定义格式。 + - d/directory:该归档形式是一个目录归档形式。 + - t/tar:该归档形式是一个tar归档形式。 + +- -l, --list + + 列出归档形式内容。这一操作的输出可用作-L选项的输入。注意如果像-n或-t的过滤选项与-l使用,过滤选项将会限制列举的项目(即归档形式内容)。 + +- -v, --verbose + + 指定verbose模式。 + +- -V, --version + + 打印gs\_restore版本,然后退出。 + +- -?, --help + + 显示gs\_restore命令行参数帮助,然后退出。 + + +导入参数: + +- -a, -data-only + + 只导入数据,不导入模式(数据定义)。gs\_restore的导入是以追加方式进行的。 + +- -c, --clean + + 在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象 + +- -C, --create + + 导入到数据库之前请创建数据库。(选择该选项后,以-d打头的数据库将被用作发布首个CREATE DATABASE命令。所有数据将被导入到出现在归档文件的数据库中。) + +- -e, --exit-on-error + + 当发送SQL语句到数据库时如果出现错误,请退出。默认状态下会继续,且在导入后会显示一系列错误信息。 + +- -I, --index=NAME + + 只导入已列举的index的定义。允许导入多个index。如果多次输入-I index导入多个index。 + + 例如: + + ``` + gs_restore -h host_name -p port_number -d postgres -I Index1 -I Index2 backup/MPPDB_backup.tar + ``` + + 在上面这个例子中,Index1和Index2会被导入。 + +- -j, --jobs=NUM + + 运行gs\_restore最耗时的部分(如加载数据、创建index、或创建约束)使用并发任务。该选项能大幅缩短导入时间,即将一个大型数据库导入到某一多处理器的服务器上。 + + 每个任务可能是一个进程或一个线程,这由操作系统决定;每个任务与服务器进行单独连接。 + + 该选项的最优值取决于服务器的硬件设置、客户端、以及网络。还包括这些因素,如CPU核数量、硬盘设置。建议是从增加服务器上的CPU核数量入手,更大的值(服务器上CPU核数量)在很多情况下也能导致数据文件更快的被导入。当然,过高的值会由于超负荷反而导致性能降低。 + + 该选项只支持自定义归档格式。输入文件必须是常规文件(不能是像pipe的文件)。如果是通过脚本文件,而非直接连接数据库服务器,该选项可忽略。而且,多任务不能与--single-transaction选项一起使用。 + +- -L, --use-list=FILENAME + + 只导入列举在list-file中的那些归档形式元素,导入顺序以它们在文件中的顺序为准。注意如果像-n或-t的过滤选项与-L使用,它们将会进一步限制导入的项目。 + + 一般情况下,list-file是通过编辑前面提到的某个-l参数的输出创建的。文件行的位置可更改或直接删除行,也可使用分号(;)在行的开始注出。见下文的举例。 + +- -n, --schema=NAME + + 只导入已列举的模式中的对象。 + + 该选项可与-t选项一起用以导入某个指定的表。 + + 多次输入-n _schemaname_可以导入多个模式。 + + 例如: + + ``` + gs_restore -h host_name -p port_number -d postgres -n sch1 -n sch2 backup/MPPDB_backup.tar + ``` + + 在上面这个例子中,sch1和sch2会被导入。 + +- -O, --no-owner + + 不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs\_restore会发出ALTER OWNER或SET SESSION AUTHORIZATION语句设置所创建的模式元素的所属。除非是由系统管理员(或是拥有脚本中所有对象的同一个用户)进行数据库首次连接的操作,否则语句会失败。使用-O选项,任何用户名都可用于首次连接,且该用户拥有所有已创建的对象。 + +- -P, --function=NAME\(args\) + + 只导入已列举的函数。请按照函数所在转储文件中的目录,准确拼写函数名称和参数。 + + 当-P单独使用时,表示导入文件中所有'function-name\(args\)'函数;当-P同-n一起使用时,表示导入指定模式下的'function-name\(args\)'函数;多次输入-P,而仅指定一次-n,表示所有导入的函数默认都是位于-n模式下的。 + + 可以多次输入-n schema-name -P 'function-name\(args\)'同时导入多个指定模式下的函数。 + + 例如: + + ``` + ./gs_restore -h host_name -p port_number -d postgres -n test1 -P 'Func1(integer)' -n test2 -P 'Func2(integer)' backup/MPPDB_backup.tar + ``` + + 在上面这个例子中,test1模式下的函数Func1\(i integer\)和test2模式下的函数Func2\(j integer\)会被一起导入。 + +- -s, --schema-only + + 只导入模式(数据定义),不导入数据(表内容)。当前的序列值也不会导入。 + +- -S, --sysadmin=NAME + + 该参数为扩展预留接口,不建议使用。 + +- -t, --table=NAME + + 只导入已列举的表定义、数据或定义和数据。该选项与-n选项同时使用时,用来指定某个模式下的表对象。-n参数不输入时,默认为PUBLIC模式。多次输入-n -t 可以导入指定模式下的多个表。 + + 例如: + + 导入PUBLIC模式下的table1 + + ``` + gs_restore -h host_name -p port_number -d postgres -t table1 backup/MPPDB_backup.tar + ``` + + 导入test1模式下的test1和test2模式下test2 + + ``` + gs_restore -h host_name -p port_number -d postgres -n test1 -t test1 -n test2 -t test2 backup/MPPDB_backup.tar + ``` + + 导入PUBLIC模式下的table1和test1 模式下test1 + + ``` + gs_restore -h host_name -p port_number -d postgres -n PUBLIC -t table1 -n test1 -t table1 backup/MPPDB_backup.tar + ``` + + >![](public_sys-resources/icon-notice.gif) **须知:** + >-t不支持schema\_name.table\_name的输入格式。 + +- -T, --trigger=NAME + + 该参数为扩展预留接口。 + +- -x, --no-privileges/--no-acl + + 防止导入访问权限(grant/revoke命令)。 + +- -1, --single-transaction + + 执行导入作为一个单独事务(即把命令包围在BEGIN/COMMIT中)。 + + 该选项确保要么所有命令成功完成,要么没有改变应用。该选项意为--exit-on-error。 + +- --disable-triggers + + 该参数为扩展预留接口,不建议使用。 + +- --no-data-for-failed-tables + + 默认状态下,即使创建表的命令失败(如表已经存在),表数据仍会被导入。使用该选项,像这种表的数据会被跳过。如果目标数据库已包含想要的表内容,这种行为会有帮助。 + + 该选项只有在直接导入到某数据库中时有效,不针对生成SQL脚本文件输出。 + +- --no-security-labels + + 该参数为扩展预留接口,不建议使用。 + +- --no-tablespaces + + 不输出选择表空间的命令。使用该选项,无论默认表空间是哪个,在导入过程中所有对象都会被创建。 + +- --section=SECTION + + 导入已列举的区段(如pre-data、data、或post-data)。 + +- --use-set-session-authorization + + 该选项用来进行文本格式的备份。 + + 输出SET SESSION AUTHORIZATION命令,而非ALTER OWNER命令,用以决定对象归属。该选项使转储更加兼容标准,但通过参考转储中对象的记录,导入过程可能会有问题。使用SET SESSION AUTHORIZATION的转储要求必须是系统管理员,同时在导入前还需参考"SET SESSION AUTHORIZATION",手工对导出文件的密码进行修改验证,只有这样才能进行正确的导入操作,相比之下,ALTER OWNER对权限要求较低。 + +- --with-key=KEY + + AES128密钥长度必须是16字节。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >如果转储被加密,则必须在gs\_restore命令中输入--with-key 选项。如果未输入,用户会收到错误信息。 + >应该输入转储时所输入的相同的key。 + >转储格式为c或t时,转储内容已被处理,因此转储格式为c或t是输入不受加密限制。 + + +>![](public_sys-resources/icon-notice.gif) **须知:** +>- 如果安装过程中有任何本地数据要添加到template1数据库,请谨慎将gs\_restore的输出载入到一个真正的空数据库中;否则可能会因为被添加对象的定义被复制,而出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如: +>``` +>CREATE DATABASE foo WITH TEMPLATE template0; +>``` +>- gs\_restore不能选择性地导入大对象;例如只能导入那些指定表的对象。如果某个归档形式包含大对象,那所有大对象都会被导入,或一个都不会被导入,如果它们通过-L、-t或其他选项被排除。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>1.-d/--dbname 和 -f/--file 不能同时使用; +>2. -s/--schema-only 和 -a/--data-only不能同时使用; +>3. -c/--clean 和 -a/--data-only不能同时使用; +>4. 使用--single-transaction时,-j/--jobs必须为单任务; +>5. --role 和 --rolepassword必须一起使用。 + +连接参数: + +- -h, --host=HOSTNAME + + 指定的主机名称。如果取值是以斜线开头,他将用作Unix域套接字的目录。默认值取自PGHOST环境变量;如果没有设置,将启动某个Unix域套接字建立连接。 + + 该参数只针对openGauss外,对openGauss内本机只能用127.0.0.1。 + +- -p, --port=PORT + + 指定服务器所监听的TCP端口或本地Unix域套接字后缀,以确保连接。默认值设置为PGPORT环境变量。 + + 在开启线程池情况下,建议使用 pooler port,即监听端口+1。 + +- -U, --username=NAME + + 所连接的用户名。 + +- -w, --no-password + + 不出现输入密码提示。如果服务器要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。 + +- -W, --password=PASSWORD + + 指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W参数;如果没有-W参数,并且不是系统管理员,“gs\_restore”会提示用户输入密码。 + +- --role=ROLENAME + + 指定导入操作使用的角色名。选择该参数,会使gs\_restore连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有gs\_restore要求的权限时,该参数会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以初始用户身份登录,而使用该参数能够在不违反该规定的情况下完成导入。 + +- --rolepassword=ROLEPASSWORD + + 指定具体角色用户的角色密码。 + + +## 示例 + +特例:执行gsql程序,使用如下选项导入由gs\_dump/gs\_dumpall生成导出文件夹(纯文本格式)的MPPDB\_backup.sql文件到postgres数据库。 + +``` +gsql -d postgres -p 5432 -W Bigdata@123 -f /home/omm/test/MPPDB_backup.sql +SET +SET +SET +SET +SET +ALTER TABLE +ALTER TABLE +ALTER TABLE +ALTER TABLE +ALTER TABLE +CREATE INDEX +CREATE INDEX +CREATE INDEX +SET +CREATE INDEX +REVOKE +REVOKE +GRANT +GRANT +total time: 30476 ms +``` + +gs\_restore用来导入由gs\_dump生成的导出文件。 + +示例1:执行gs\_restore,将导出的MPPDB\_backup.dmp文件(自定义归档格式)导入到postgres数据库。 + +``` +gs_restore -W Bigdata@123 backup/MPPDB_backup.dmp -p 5432 -d postgres +gs_restore: restore operation successful +gs_restore: total time: 13053 ms +``` + +示例2:执行gs\_restore,将导出的MPPDB\_backup.tar文件(tar格式)导入到postgres数据库。 + +``` +gs_restore backup/MPPDB_backup.tar -p 5432 -d postgres +gs_restore[2017-07-21 19:16:26]: restore operation successful +gs_restore[2017-07-21 19:16:26]: total time: 21203 ms +``` + +示例3:执行gs\_restore,将导出的MPPDB\_backup文件(目录格式)导入到postgres数据库。 + +``` +gs_restore backup/MPPDB_backup -p 5432 -d postgres +gs_restore[2017-07-21 19:16:26]: restore operation successful +gs_restore[2017-07-21 19:16:26]: total time: 21003 ms +``` + +示例4:执行gs\_restore,使用自定义归档格式的MPPDB\_backup.dmp文件来进行如下导入操作。 导入PUBLIC模式下所有对象的定义和数据。在导入时会先删除已经存在的对象,如果原对象存在跨模式的依赖则需手工强制干预。 + +``` +gs_restore backup/MPPDB_backup.dmp -p 5432 -d postgres -e -c -n PUBLIC +gs_restore: [archiver (db)] Error while PROCESSING TOC: +gs_restore: [archiver (db)] Error from TOC entry 313; 1259 337399 TABLE table1 gaussdba +gs_restore: [archiver (db)] could not execute query: ERROR: cannot drop table table1 because other objects depend on it +DETAIL: view t1.v1 depends on table table1 +HINT: Use DROP ... CASCADE to drop the dependent objects too. + Command was: DROP TABLE public.table1; +``` + +手工删除依赖,导入完成后再重新创建。 + +``` +gs_restore backup/MPPDB_backup.dmp -p 5432 -d postgres -e -c -n PUBLIC +gs_restore[2017-07-21 19:16:26]: restore operation successful +gs_restore[2017-07-21 19:16:26]: total time: 2203 ms +``` + +示例5:执行gs\_restore,使用自定义归档格式的MPPDB\_backup.dmp文件来进行如下导入操作。只导入PUBLIC模式下表table1的定义。 + +``` +gs_restore backup/MPPDB_backup.dmp -p 5432 -d postgres -e -c -s -n PUBLIC -t table1 +gs_restore[2017-07-21 19:16:26]: restore operation successful +gs_restore[2017-07-21 19:16:26]: total time: 21000 ms +``` + +示例6:执行gs\_restore,使用自定义归档格式的MPPDB\_backup.dmp文件来进行如下导入操作。只导入PUBLIC模式下表table1的数据。 + +``` +gs_restore backup/MPPDB_backup.dmp -p 5432 -d postgres -e -a -n PUBLIC -t table1 +gs_restore[2017-07-21 19:16:26]: restore operation successful +gs_restore[2017-07-21 19:16:26]: total time: 20203 ms +``` + +## 相关命令 + +[gs\_dump](gs_dump.md#ZH-CN_TOPIC_0256377136),[gs\_dumpall](gs_dumpall.md#ZH-CN_TOPIC_0256377137) + diff --git a/content/zh/docs/Administratorguide/public_sys-resources/icon-caution.gif b/content/zh/docs/Administratorguide/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/content/zh/docs/Administratorguide/public_sys-resources/icon-caution.gif differ diff --git a/content/zh/docs/Administratorguide/public_sys-resources/icon-danger.gif b/content/zh/docs/Administratorguide/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/content/zh/docs/Administratorguide/public_sys-resources/icon-danger.gif differ diff --git a/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif b/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and b/content/zh/docs/Administratorguide/public_sys-resources/icon-note.gif differ diff --git a/content/zh/docs/Administratorguide/public_sys-resources/icon-notice.gif b/content/zh/docs/Administratorguide/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and b/content/zh/docs/Administratorguide/public_sys-resources/icon-notice.gif differ diff --git a/content/zh/docs/Administratorguide/public_sys-resources/icon-tip.gif b/content/zh/docs/Administratorguide/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and b/content/zh/docs/Administratorguide/public_sys-resources/icon-tip.gif differ diff --git a/content/zh/docs/Administratorguide/public_sys-resources/icon-warning.gif b/content/zh/docs/Administratorguide/public_sys-resources/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/content/zh/docs/Administratorguide/public_sys-resources/icon-warning.gif differ diff --git "a/content/zh/docs/Administratorguide/\344\276\213\350\241\214\347\273\264\346\212\244.md" "b/content/zh/docs/Administratorguide/\344\276\213\350\241\214\347\273\264\346\212\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..2eadbd4d700d993fb751373eccad2b4677fe3b30 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\344\276\213\350\241\214\347\273\264\346\212\244.md" @@ -0,0 +1,23 @@ +# 例行维护 + +- **[日维护检查项](日维护检查项.md)** + +- **[检查操作系统参数](检查操作系统参数.md)** + +- **[检查openGauss健康状态](检查openGauss健康状态.md)** + +- **[检查数据库性能](检查数据库性能.md)** + +- **[检查和清理日志](检查和清理日志.md)** + +- **[检查时间一致性](检查时间一致性.md)** + +- **[检查应用连接数](检查应用连接数.md)** + +- **[例行维护表](例行维护表.md)** + +- **[例行重建索引](例行重建索引.md)** + +- **[数据安全维护建议](数据安全维护建议.md)** +为保证openGauss数据库中的数据安全,避免丢失数据,非法访问数据等事故发生,请仔细阅读以下内容。 + diff --git "a/content/zh/docs/Administratorguide/\344\276\213\350\241\214\347\273\264\346\212\244\350\241\250.md" "b/content/zh/docs/Administratorguide/\344\276\213\350\241\214\347\273\264\346\212\244\350\241\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..9a286fbc182709803ad0e225de0a6d0fd4e71268 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\344\276\213\350\241\214\347\273\264\346\212\244\350\241\250.md" @@ -0,0 +1,106 @@ +# 例行维护表 + +为了保证数据库的有效运行,数据库必须在插入/删除操作后,基于客户场景,定期做VACUUM FULL和ANALYZE,更新统计信息,以便获得更优的性能。 + +## 相关概念 + +使用VACUUM、VACUUM FULL和ANALYZE命令定期对每个表进行维护,主要有以下原因: + +- VACUUM FULL可回收已更新或已删除的数据所占据的磁盘空间,同时将小数据文件合并。 +- VACUUM对每个表维护了一个可视化映射来跟踪包含对别的活动事务可见的数组的页。一个普通的索引扫描首先通过可视化映射来获取对应的数组,来检查是否对当前事务可见。若无法获取,再通过堆数组抓取的方式来检查。因此更新表的可视化映射,可加速唯一索引扫描。 +- VACUUM可避免执行的事务数超过数据库阈值时,事务ID重叠造成的原有数据丢失。 +- ANALYZE可收集与数据库中表内容相关的统计信息。统计结果存储在系统表PG\_STATISTIC中。查询优化器会使用这些统计数据,生成最有效的执行计划。 + +## 操作步骤 + +1. 使用VACUUM或VACUUM FULL命令,进行磁盘空间回收。 + - **VACUUM**: + + 对表执行VACUUM操作 + + ``` + postgres=# VACUUM customer; + ``` + + ``` + VACUUM + ``` + + 可以与数据库操作命令并行运行。(执行期间,可正常使用的语句:SELECT、INSERT、UPDATE和DELETE。不可正常使用的语句:ALTER TABLE)。 + + 对表分区执行VACUUM操作 + + ``` + postgres=# VACUUM customer_par PARTITION ( P1 ); + ``` + + ``` + VACUUM + ``` + + - **VACUUM FULL**: + + ``` + postgres=# VACUUM FULL customer; + ``` + + ``` + VACUUM + ``` + + 需要向正在执行的表增加排他锁,且需要停止其他所有数据库操作。 + +2. 使用ANALYZE语句更新统计信息。 + + ``` + postgres=# ANALYZE customer; + ``` + + ``` + ANALYZE + ``` + + 使用ANALYZE VERBOSE语句更新统计信息,并输出表的相关信息。 + + ``` + postgres=# ANALYZE VERBOSE customer; + ``` + + ``` + ANALYZE + ``` + + 也可以同时执行VACUUM ANALYZE命令进行查询优化。 + + ``` + postgres=# VACUUM ANALYZE customer; + ``` + + ``` + VACUUM + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >VACUUM和ANALYZE会导致I/O流量的大幅增加,这可能会影响其他活动会话的性能。因此,建议通过“vacuum\_cost\_delay”参数设置《开发者指南》中“GUC参数说明 \> 资源消耗 \> 基于开销的清理延迟”。 + +3. 删除表 + + ``` + postgres=# DROP TABLE customer; + postgres=# DROP TABLE customer_par; + postgres=# DROP TABLE part; + ``` + + 当结果显示为如下信息,则表示删除成功。 + + ``` + DROP TABLE + ``` + + +## 维护建议 + +- 定期对部分大表做VACUUM FULL,在性能下降后为全库做VACUUM FULL,目前暂定每月做一次VACUUM FULL。 +- 定期对系统表做VACUUM FULL,主要是PG\_ATTRIBUTE。 +- 启用系统自动清理进程(AUTOVACUUM)自动执行VACUUM和ANALYZE,回收被标识为删除状态的记录空间,并更新表的统计数据。 + diff --git "a/content/zh/docs/Administratorguide/\344\276\213\350\241\214\351\207\215\345\273\272\347\264\242\345\274\225.md" "b/content/zh/docs/Administratorguide/\344\276\213\350\241\214\351\207\215\345\273\272\347\264\242\345\274\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..b1085694c095e5713fd612a113507945e725f91b --- /dev/null +++ "b/content/zh/docs/Administratorguide/\344\276\213\350\241\214\351\207\215\345\273\272\347\264\242\345\274\225.md" @@ -0,0 +1,64 @@ +# 例行重建索引 + +## 背景信息 + +数据库经过多次删除操作后,索引页面上的索引键将被删除,造成索引膨胀。例行重建索引,可有效的提高查询效率。 + +数据库支持的索引类型为B-tree索引,例行重建索引可有效的提高查询效率。 + +- 如果数据发生大量删除后,索引页面上的索引键将被删除,导致索引页面数量的减少,造成索引膨胀。重建索引可回收浪费的空间。 +- 新建的索引中逻辑结构相邻的页面,通常在物理结构中也是相邻的,所以一个新建的索引比更新了多次的索引访问速度要快。 + +## 重建索引 + +重建索引有以下两种方式: + +- 先删除索引(DROP INDEX),再创建索引(CREATE INDEX)。 + + 在删除索引过程中,会在父表上增加一个短暂的排他锁,阻止相关读写操作。在创建索引过程中,会锁住写操作但是不会锁住读操作,此时读操作只能使用顺序扫描。 + +- 使用REINDEX语句重建索引。 + - 使用REINDEX TABLE语句重建索引,会在重建过程中增加排他锁,阻止相关读写操作。 + - 使用REINDEX INTERNAL TABLE语句重建desc表(包括列存表的cudesc表)的索引,会在重建过程中增加排他锁,阻止相关读写操作。 + + +## 操作步骤 + +假定在导入表“areaS”上的“area\_id”字段上存在普通索引“areaS\_idx”。重建索引有以下两种方式: + +- 先删除索引(DROP INDEX),再创建索引(CREATE INDEX) + 1. 删除索引。 + + ``` + postgres=# DROP INDEX areaS_idx; + DROP INDEX + ``` + + 2. 创建索引。 + + ``` + postgres=# CREATE INDEX areaS_idx ON areaS (area_id); + CREATE INDEX + ``` + + +- 使用REINDEX重建索引。 + - 使用REINDEX TABLE语句重建索引。 + + ``` + postgres=# REINDEX TABLE areaS; + REINDEX + ``` + + - 使用REINDEX INTERNAL TABLE重建desc表(包括列存表的cudesc表)的索引。 + + ``` + postgres=# REINDEX INTERNAL TABLE areaS; + REINDEX + ``` + + + +>![](public_sys-resources/icon-note.gif) **说明:** +>在重建索引前,用户可以通过临时增大maintenance\_work\_mem和psort\_work\_mem的取值来加快索引的重建。 + diff --git "a/content/zh/docs/Administratorguide/\345\220\257\345\201\234openGauss.md" "b/content/zh/docs/Administratorguide/\345\220\257\345\201\234openGauss.md" new file mode 100644 index 0000000000000000000000000000000000000000..3d47f20234e06cc5706f078bc8a1d0020d6cbdd2 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\345\220\257\345\201\234openGauss.md" @@ -0,0 +1,62 @@ +# 启停openGauss + +## 启动openGauss + +1. 以操作系统用户omm登录数据库主节点。 +2. 使用以下命令启动openGauss。 + + ``` + gs_om -t start + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >双机启动必须以双机模式启动, 若中间过程以单机模式启动, 则必须修复才能恢复双机关系, 用gs\_ctl build进行修复,gs\_ctl的使用方法请参见《openGauss 工具参考》。 + + +## 停止openGauss + +1. 以操作系统用户omm登录数据库主节点。 +2. 使用以下命令停止openGauss。 + + ``` + gs_om -t stop + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >启停节点及AZ的操作请参见《openGauss 工具参考》中“服务端工具 \> gs\_om”章节。 + + +## 示例 + +启动openGauss: + +``` +gs_om -t start +Starting cluster. +========================================= +========================================= +Successfully started. + +``` + +停止openGauss: + +``` +gs_om -t stop +Stopping cluster. +========================================= +Successfully stopped cluster. +========================================= +End stop cluster. +``` + +## 错误排查 + +如果启动openGauss或者停止openGauss服务失败,请根据日志文件中的日志信息排查错误,参见[日志参考](日志参考.md)。 + +如果是超时导致启动失败,可以执行如下命令,设置启动超时时间,默认超时时间为300s。 + +``` +gs_om -t start --time-out=300 +``` + diff --git "a/content/zh/docs/Administratorguide/\345\244\207\344\273\275\344\270\216\346\201\242\345\244\215.md" "b/content/zh/docs/Administratorguide/\345\244\207\344\273\275\344\270\216\346\201\242\345\244\215.md" new file mode 100644 index 0000000000000000000000000000000000000000..ec12e72a51b0b2575eb2f632333b9537fd7db9a8 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\345\244\207\344\273\275\344\270\216\346\201\242\345\244\215.md" @@ -0,0 +1,9 @@ +# 备份与恢复 + +- **[概述](概述.md)** + +- **[物理备份恢复](物理备份恢复.md)** + +- **[逻辑备份恢复](逻辑备份恢复.md)** + + diff --git "a/content/zh/docs/Administratorguide/\345\256\236\344\276\213\344\270\273\345\244\207\345\210\207\346\215\242.md" "b/content/zh/docs/Administratorguide/\345\256\236\344\276\213\344\270\273\345\244\207\345\210\207\346\215\242.md" new file mode 100644 index 0000000000000000000000000000000000000000..b749e97ebb287711312b218256848c2e033155f2 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\345\256\236\344\276\213\344\270\273\345\244\207\345\210\207\346\215\242.md" @@ -0,0 +1,119 @@ +# 实例主备切换 + +## 操作场景 + +openGauss在运行过程中,数据库管理员可能需要手工对数据库节点做主备切换。例如发现数据库节点主备failover后需要恢复原有的主备角色,或怀疑硬件故障需要手动进行主备切换。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>主备切换为维护操作,确保openGauss状态正常,所有业务结束后,再进行切换操作。 + +## 操作步骤 + +1. 以操作系统用户omm登录数据库任意节点,执行如下命令,查看主备情况。 + + ``` + gs_om -t status --detail + ``` + +2. 以操作系统用户omm登录准备切换为主节点的备节点,执行如下命令。 + + ``` + gs_ctl switchover -D /home/omm/cluster/dn1/ + ``` + + /home/omm/cluster/dn1/为备数据库节点的数据目录。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >对于同一集群,上一次主备切换未完成,不能执行下一次切换。对于业务正在操作时,发起switchover,可能主机的线程无法停止导致switchover显示超时,实际后台仍然在运行,等主机线程停止后,switchover即可完成。比如在主机删除一个大的分区表时,可能无法响应switchover发起的信号。 + +3. switchover成功后,执行如下命令记录当前主备机器信息。 + + ``` + gs_om -t refreshconf + ``` + + +## 示例 + +将数据库节点备实例切换为主实例。 + +1.查询集群状态。 + +``` +gs_om -t status --detail +[ Cluster State ] + +cluster_state : Normal +redistributing : No +current_az : AZ_ALL + +[ Datanode State ] + +node node_ip instance state | node node_ip instance state +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +1 pekpopgsci00234 10.244.60.70 6001 /home/wuqw/cluster/dn1 P Primary Normal | 2 pekpopgsci00238 10.244.61.81 6002 /home/wuqw/cluster/dn1 S Standby Normal +``` + +2.登录备节点,进行主备切换。 + +``` +gs_ctl switchover -D /home/wuqw/cluster/dn1/ +[2020-06-17 14:28:01.730][24438][][gs_ctl]: gs_ctl switchover ,datadir is -D "/home/wuqw/cluster/dn1" +[2020-06-17 14:28:01.730][24438][][gs_ctl]: switchover term (1) +[2020-06-17 14:28:01.768][24438][][gs_ctl]: waiting for server to switchover............ +[2020-06-17 14:28:11.175][24438][][gs_ctl]: done +[2020-06-17 14:28:11.175][24438][][gs_ctl]: switchover completed (/home/wuqw/cluster/dn1) +``` + +3.保存集群主备机器信息。 + +``` +gs_om -t refreshconf +Generating dynamic configuration file for all nodes. +Successfully generated dynamic configuration file. +``` + +## 错误排查 + +如果switchover过程中出现失败,请根据日志文件中的日志信息排查错误,参见[日志参考](日志参考.md)。 + +## 异常处理 + +异常判断标准如下: + +- 业务压力下,主备实例切换时间长,这种情况不需要处理。 +- 其他备机正在build的情况下,主机需要发送日志到备机后,才能降备,导致主备切换时间长。这种情况不需要处理,但应尽量避免build过程中进行主备切换。 +- 切换过程中,因网络故障、磁盘满等原因造成主备实例连接断开,出现双主现象时,此时请参考如下步骤修复。 + + >![](public_sys-resources/icon-warning.gif) **警告:** + >出现双主状态后,请按如下步骤恢复成正常的主备状态。否则可能会造成数据丢失。 + + +1. 执行以下命令查询数据库当前的实例状态。 + + ``` + gs_om -t status --detail + ``` + + 若查询结果显示两个实例的状态都为Primary,这种状态为异常状态。 + +2. 确定降为备机的节点,在节点上执行如下命令关闭服务。 + + ``` + gs_ctl stop -D /home/omm/cluster/dn1/ + ``` + +3. 执行以下命令,以standby模式启动备节点。 + + ``` + gs_ctl start -D /home/omm/cluster/dn1/ -M standby + ``` + +4. 保存集群主备机器信息。 + + ``` + gs_om -t refreshconf + ``` + +5. 查看集群状态,确认实例状态恢复。 + diff --git "a/content/zh/docs/Administratorguide/\345\256\241\350\256\241\346\227\245\345\277\227.md" "b/content/zh/docs/Administratorguide/\345\256\241\350\256\241\346\227\245\345\277\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..accfb1f91b31830b298e783e7992e36820a29228 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\345\256\241\350\256\241\346\227\245\345\277\227.md" @@ -0,0 +1,6 @@ +# 审计日志 + +审计功能开启时会不断产生大量的审计日志,占用磁盘空间。用户可以根据磁盘空间的大小设置审计日志维护策略。 + +关于如何设置审计日志维护策略请参见《开发者指南》中“管理数据库安全 \> 设置数据库审计 \> 维护审计日志”章节。 + diff --git "a/content/zh/docs/Administratorguide/\345\274\202\345\270\270\345\244\204\347\220\206-1.md" "b/content/zh/docs/Administratorguide/\345\274\202\345\270\270\345\244\204\347\220\206-1.md" new file mode 100644 index 0000000000000000000000000000000000000000..50e179e723ffb70be827b2d2bc6a98aae49f69a6 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\345\274\202\345\270\270\345\244\204\347\220\206-1.md" @@ -0,0 +1,363 @@ +# 异常处理 + +如果发现检查结果异常,可以根据以下内容进行修复。 + +**表 1** 检查openGauss运行状态 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

检查项

+

异常状态

+

处理方法

+

CheckClusterState(检查openGauss状态)

+

openGauss未启动或openGauss实例未启动

+

使用以下命令启动openGauss及实例。

+
gs_om -t start
+

openGauss状态异常或openGauss实例异常

+

检查各主机、实例状态,根据状态信息进行排查。

+
gs_check -i CheckClusterState
+

CheckDBParams(检查数据库参数)

+

数据库参数错误

+

通过gs_guc工具修改数据库参数为指定值。

+

CheckDebugSwitch(检查调试日志)

+

日志级别不正确

+

使用gs_guc工具将log_min_messages改为指定内容。

+

CheckDirPermissions(检查目录权限)

+

路径权限错误

+

修改对应目录权限为指定数值(750/700)。

+
chmod 750 DIR
+

CheckReadonlyMode(检查只读模式)

+

只读模式被打开

+

确认数据库节点所在磁盘使用率未超阈值(默认60%)且未在执行其他运维操作。

+
gs_check -i CheckDataDiskUsage
+ps ux
+

使用gs_guc工具关闭openGauss只读模式

+
gs_guc reload -N all -I all -c 'default_transaction_read_only = off' 
+gs_guc reload -N all -I all -c 'default_transaction_read_only = off' 
+

CheckEnvProfile(检查环境变量)

+

环境变量不一致

+

重新执行前置更新环境变量信息。

+

CheckBlockdev(检查磁盘预读块)

+

磁盘预读块大小不为16384

+

使用gs_checkos设置预读块大小为16384KB,并写入自启动文件。

+
gs_checkos -i B3
+

CheckCursorNum(检查游标数)

+

检查游标数失败

+

检查数据库能否正常连接,openGauss状态是否正常。

+

CheckPgxcgroup(检查重分布状态)

+

有未完成重分布的pgxc_group表

+

继续完成扩容或缩容的数据重分布操作。

+
gs_expand、gs_shrink
+

CheckDiskFormat(检查磁盘配置)

+

各节点磁盘配置不一致

+

将各节点的磁盘规格改为相同。

+

CheckSpaceUsage(检查磁盘空间使用率)

+

磁盘可用空间不足

+

清理或扩展对应目录所在的磁盘。

+

CheckInodeUsage(检查磁盘索引使用率)

+

磁盘可用索引不足

+

清理或扩展对应目录所在的磁盘。

+

CheckSwapMemory(检查交换内存)

+

交换内存大于物理内存

+

将交换内存调小或关闭。

+

CheckLogicalBlock(检查磁盘逻辑块)

+

磁盘逻辑块大小不为512

+

使用gs_checkos修改磁盘逻辑块大小为512KB,并写入开机自启动文件。

+
gs_checkos -i B4
+

CheckIOrequestqueue(检查IO请求)

+

IO请求值不为32768

+

使用gs_checkos设置IO请求值为32768,并写入开机自启动文件。

+
gs_checkos -i B4
+

CheckCurConnCount(检查当前连接数)111

+

当前连接数超过最大连接数的90%

+

断开未使用的数据库主节点连接。

+

CheckMaxAsyIOrequests(检查最大异步请求)

+

最大异步请求值小于104857600或当前节点数据库实例数)*1048576

+

使用gs_checkos设置最大异步请求值为104857600和当前节点数据库实例数*1048576中的最大值。

+
gs_checkos -i B4
+

CheckMTU(检查MTU值)

+

MTU值不一致

+

设置各节点的MTU一致为1500或8192。

+
ifconfig eth* MTU 1500
+

CheckIOConfigure(检查IO配置)

+

IO配置不是deadline

+

使用gs_checkos设置IO配置为deadline,并写入开机自启动文件。

+
gs_checkos -i B4
+

CheckRXTX(检查RXTX值)

+

网卡RX/TX值不是4096

+

使用checkos设置openGauss使用的物理网卡RX/TX值为4096

+
gs_checkos -i B5
+

CheckPing(检查网络通畅)

+

存在openGauss IP无法ping通

+

检查异常ip间网络设置和状态、防火墙状态。

+

CheckNetWorkDrop(检查网络丢包率)

+

网络通信丢包率高于1%

+

检查对应IP间网络负载、状态。

+

CheckMultiQueue(检查网卡多队列)

+

未开启网卡多队列并未将网卡中断绑定到不同CPU核心

+

开启网卡多队列并将网卡队列中断绑定到不同的CPU核心。

+

CheckEncoding(检查编码格式)

+

各节点编码格式不一致

+

在/etc/profile中写入一致的编码信息。

+
echo "export LANG=XXX" >> /etc/profile
+

CheckFirewall(检查防火墙)

+

防火墙未关闭

+

关闭防火墙服务。

+
redHat(CentOS)7.x:systemctl status firewalld.service
+redHat(CentOS)6.x:service iptables down
+SuSE:SuSEfirewall2 down
+

CheckKernelVer(检查内核版本)

+

内核版本不一致

+

使用gs_replace替换不一致的节点。

+
gs_replace
+

CheckMaxHandle(检查最大文件句柄数)

+

最大文件句柄数小于1000000

+

设置91-nofile.conf/90-nofile.conf最大文件句柄数软硬限制为1000000。

+
gs_checkos -i B2
+

CheckNTPD(检查时间同步服务)

+

NTPD服务未开启或时间误差超过一分钟

+

开启NTPD服务并设置时钟一致。

+

CheckOSVer(检查操作系统版本)

+

操作系统不被支持或不在同一混搭列表

+

使用gs_replace将异常节点替换为受支持系统或在同一混搭列表内的系统的节点。

+
gs_replace
+

CheckSysParams(检查操作系统参数)

+

操作系统参数设置不满足要求

+

使用gs_checkos进行参数设置或手动设置。

+
gs_checkos -i B1
+vim /etc/sysctl.conf
+

CheckTHP(检查THP服务)

+

THP服务未开启

+

使用gs_checkos设置THP服务

+
gs_checkos -i B6
+

CheckTimeZone(检查时区)

+

时区不一致

+

设置各节点为同一时区

+
cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime
+

CheckCPU(检查CPU)

+

CPU占用过高或IO等待过高

+

进行CPU配置升级或磁盘性能升级

+

CheckSshdService(检查SSHD服务)

+

未开启SSHD服务

+

启动SSHD服务并写入开机自启动文件

+
server sshd start
+echo "server sshd start" >> initFile
+

CheckSshdConfig(检查SSHD配置)

+

SSHD服务配置错误

+

设置SSHD服务,

+
PasswordAuthentication=no;
+MaxStartups=1000;
+UseDNS=yes;
+ClientAliveInterval=10800/ClientAliveInterval=0
+

并重启服务:

+
server sshd start
+

CheckCrondService(检查Crond服务)

+

Crond服务未启动

+

安装Crond服务并启用

+

CheckStack(检查堆栈大小)

+

堆栈大小小于3072

+

使用gs_checkos设置为3072并重启堆栈值过小进程。

+
gs_checkos -i B2
+

CheckNoCheckSum(检查NoCheckSum参数)

+

NoCheckSum设置错误或不一致

+

设置各节点的NoCheckSum值一致(存在redHat6.4/6.5且为bond0时全部设为Y,否则全部设为N)

+
echo Y > /sys/module/sctp/parameters/no_checksums
+

CheckSysPortRange(检查系统端口设置)

+

系统ip端口不在预期范围内或openGauss端口在系统ip端口内

+

设置系统ip端口范围参数到26000-65535之中;设置openGauss端口在系统ip端口范围外

+
vim /etc/sysctl.conf
+

CheckMemInfo(检查内存信息)

+

各节点内存大小不一致

+

使用相同规格的物理内存

+

CheckHyperThread(检查超线程)

+

未开启CPU超线程

+

开启CPU超线程

+

CheckTableSpace(检查表空间)

+

表空间路径和openGauss路径存在嵌套或表空间路径相互存在嵌套

+

将表空间数据迁移到路径合法的表空间中

+

CheckSctpService(检查SCTP服务)

+

未开启SCTP服务

+

部署并开启SCTP服务

+
modprobe sctp
+
+ diff --git "a/content/zh/docs/Administratorguide/\345\274\202\345\270\270\345\244\204\347\220\206-3.md" "b/content/zh/docs/Administratorguide/\345\274\202\345\270\270\345\244\204\347\220\206-3.md" new file mode 100644 index 0000000000000000000000000000000000000000..3947954941f0a7f2ff056e73b863ba203c89fcb7 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\345\274\202\345\270\270\345\244\204\347\220\206-3.md" @@ -0,0 +1,124 @@ +# 异常处理 + +使用gs\_checkperf工具检查openGauss性能状态后,如果发现检查结果发现异常,可以根据以下内容进行修复。 + +**表 1** 检查openGauss级别性能状态 + + + + + + + + + + + + + + + + + + + + + + + + + +

异常状态

+

处理方法

+

主机CPU占有率高

+

1、更换和增加高性能的CPU。

+

2、使用top命令查看系统哪些进程的CPU占有率高,然后使用kill命令关闭没有使用的进程。

+
top
+

openGauss CPU占有率高

+

1、更换和增加高性能的CPU。

+

2、使用top命令查看数据库哪些进程的CPU占有率高,然后使用kill命令关闭没有使用的进程。

+
top
+

3、使用gs_expand工具扩容,增加新的主机均衡CPU占有率。

+

共享内存命中率低

+

1、扩大内存。

+

2、使用如下命令查看操作系统配置文件/etc/sysctl.conf,调大共享内存kernel.shmmax值。

+
vim /etc/sysctl.conf
+

内存中排序比率低

+

扩大内存。

+

I/O、磁盘使用率高

+

1、更换高性能的磁盘。

+

2、调整数据布局,尽量将I/O请求较合理的分配到所有物理磁盘中。

+

3、全库进行VACUUM FULL操作。

+
vacuum full;
+

4、进行磁盘整理。

+

5、降低并发数。

+

事务统计

+

查询pg_stat_activity系统表,将不必要的连接断开。(登录数据库后查询:postgres=# \d+ pg_stat_activity;)

+
+ +**表 2** 检查节点级别性能状态 + + + + + + + + + + + + + + + + +

异常状态

+

处理方法

+

CPU占有率高

+

1、更换和增加高性能的CPU。

+

2、使用top命令查看系统哪些进程的CPU占有率高,然后使用kill命令关闭没有使用的进程。

+
top
+

内存使用率过高情况

+

扩大或清理内存。

+

I/O使用率过高情况

+

1、更换高性能的磁盘。

+

2、进行磁盘清理。

+

3、尽可能用内存的读写代替直接磁盘I/O,使频繁访问的文件或数据放入内存中进行操作处理。

+
+ +**表 3** 会话/进程级别性能状态 + + + + + + + + + + +

异常状态

+

处理方法

+

CPU、内存、I/O使用率过高情况

+

查看哪个进程占用CPU/内存高或I/O使用率高,若是无用的进程,则kill掉,否则排查具体原因。例如SQL执行占用内存大,查看是否SQL语句需要优化。

+
+ +**表 4** SSD性能状态 + + + + + + + + + + +

异常状态

+

处理方法

+

SSD读写性能故障

+

使用以下命令查看SSD是否有故障,排查具体故障原因。

+
gs_checkperf -i SSD -U omm
+
+ diff --git "a/content/zh/docs/Administratorguide/\345\274\202\345\270\270\345\244\204\347\220\206.md" "b/content/zh/docs/Administratorguide/\345\274\202\345\270\270\345\244\204\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..7996b92a71c5c1a7b2fbac7eb60a1008a52c30e9 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\345\274\202\345\270\270\345\244\204\347\220\206.md" @@ -0,0 +1,106 @@ +# 异常处理 + +使用gs\_checkos检查或设置状态为Abnormal,可以使用如下命令查看详细的错误信息。 + +``` +gs_checkos -i A --detail +``` + +其中,Abnormal为必须处理项,影响openGauss安装。Warning可以不处理,不会影响openGauss安装。 + +- 如果操作系统版本(A1)检查项检查结果为Abnormal,需要将不属于混编范围的操作系统版本替换为混编范围内的操作系统版本。 +- 如果内核版本(A2)检查项检查结果为Warning,则表示openGauss内平台的内核版本不一致。 +- 如果Unicode状态(A3)检查项检查结果为Abnormal,需要将各主机的字符集设置为相同的字符集,可以在/etc/profile文件中添加"export LANG=XXX"(XXX为Unicode编码)。 + + ``` + vim /etc/profile + ``` + +- 如果时区状态(A4)检查项检查结果为Abnormal,需要将各主机的时区设置为相同时区,可以将/usr/share/zoneinfo/目录下的时区文件拷贝为/etc/localtime文件。 + + ``` + cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime + ``` + +- 如果交换内存状态(A5)检查项检查结果为Abnormal,可能是因为swap空间大于mem空间,可减小Swap解决或者增大Mem空间解决。 +- 如果系统控制参数(A6)检查项检查结果为Abnormal,可以使用以下两种方法进行设置。 + - 可以使用如下命令进行设置。 + + ``` + gs_checkos -i B1 + ``` + + - 根据错误提示信息,在/etc/sysctl.conf文件中进行设置。然后执行sysctl -p使其生效。 + + ``` + vim /etc/sysctl.conf + ``` + + + +- 如果文件系统配置状态(A7)检查项检查结果为Abnormal,可以使用如下命令进行设置。 + + ``` + gs_checkos -i B2 + ``` + +- 如果磁盘配置状态(A8)检查项检查结果为Abnormal,需修改磁盘挂载格式为:“rw,noatime,inode64,allocsize=16m”。 + + 使用linux的man mount命令挂载XFS选项: + + ``` + rw,noatime,inode64,allocsize=16m + ``` + + 也可以在/etc/fstab文件中设定XFS选项。如下示例: + + ``` + /dev/data /data xfs rw,noatime,inode64,allocsize=16m 0 0 + ``` + +- 如果预读块大小(A9)检查项检查结果为Abnormal,可以使用如下命令进行设置。 + + ``` + gs_checkos -i B3 + ``` + +- 如果IO调度状态(A10)检查项检查结果为Abnormal,可以使用如下命令进行设置。 + + ``` + gs_checkos -i B4 + ``` + +- 如果网卡配置状态(A11)检查项检查结果为Warning,可以使用如下命令进行设置。 + + ``` + gs_checkos -i B5 + ``` + +- 如果时间一致性(A12)检查项检查结果为Abnormal,需检查是否安装ntp服务,以及ntp服务是否启动;并与ntp时钟源同步。 +- 如果防火墙状态(A13)检查项检查结果为Abnormal,需关闭防火墙服务。使用如下命令进行设置。 + - SuSE: + + ``` + SuSEfirewall2 stop + ``` + + - RedHat7: + + ``` + systemctl disable firewalld + ``` + + - RedHat6: + + ``` + service iptables stop + ``` + + +- 如果THP服务(A14)检查项检查结果为Abnormal,可以使用如下命令进行设置。 + + ``` + gs_checkos -i B6 + ``` + + diff --git "a/content/zh/docs/Administratorguide/\346\200\247\350\203\275\346\227\245\345\277\227.md" "b/content/zh/docs/Administratorguide/\346\200\247\350\203\275\346\227\245\345\277\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..aa269c76f431a9d4bea7160f3ddb04fcd6f05913 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\200\247\350\203\275\346\227\245\345\277\227.md" @@ -0,0 +1,22 @@ +# 性能日志 + +性能日志主要关注外部资源的访问性能问题。性能日志指的是数据库系统在运行时检测物理资源的运行状态的日志,在对外部资源进行访问时的性能检测,包括磁盘、Hadoop openGauss等外部资源的访问检测信息。在出现性能问题时,可以借助性能日志及时的定位问题发生的原因,能极大地提升问题解决效率。 + +## 日志文件存储路径 + +数据库节点的性能日志目录在“$GAUSSLOG/gs\_profile”中各自对应的目录下。 + +## 日志文件命名格式 + +数据库节点的性能日志的命名规则: + +postgresql-创建时间.prf + +默认情况下,每日0点或者日志文件大于20MB或者数据库实例(数据库节点)重新启动后,会生成新的日志文件。 + +## 日志内容说明 + +数据库节点每一行日志内容的默认格式: + +主机名称+日期+时间+实例名称+线程号+日志内容 + diff --git "a/content/zh/docs/Administratorguide/\346\223\215\344\275\234\346\227\245\345\277\227.md" "b/content/zh/docs/Administratorguide/\346\223\215\344\275\234\346\227\245\345\277\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..06d2df9427778f633baeba146f2f0eb9669120a8 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\223\215\344\275\234\346\227\245\345\277\227.md" @@ -0,0 +1,30 @@ +# 操作日志 + +操作日志是指数据库管理员使用工具操作数据库时以及工具被openGauss调用时产生的日志。如果openGauss发生故障,可以通过这些日志信息跟踪用户对数据库进行了哪些操作,重现故障场景。 + +## 日志文件存储路径 + +默认在“$GAUSSLOG/bin”目录下,如果环境变量$GAUSSLOG不存在或者变量值为空,则工具日志信息不会记录到对应的工具日志文件中,日志信息只会打印到屏幕上。 + +其中$GAUSSLOG默认为“/var/log/gaussdb/_用户名_”。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>如果使用om脚本部署时,则日志路径为 “/var/log/gaussdb/_用户名_”。 + +## 日志文件命名格式 + +日志文件命名格式为: + +- 工具名-日志创建时间.log +- 工具名-日志创建时间-current.log + +其中,“工具名-日志创建时间.log”是历史日志文件,“工具名-日志创建时间-current.log”是当前日志文件。 + +如果日志大小超过16MB,在下一次调用该工具时,会重命名当前日志文件为历史日志文件,并以当前时间生成新的当前日志文件。 + +例如将“gs\_guc-2015-01-16\_183728-current.log”重命名为“gs\_guc-2015-01-16\_183728.log”,然后重新生成“gs\_guc-2015-01-17\_142216-current.log”。 + +## 维护建议 + +建议定时对过期的日志文件进行转储,以避免大量日志占用太多的磁盘空间和避免重要日志丢失。 + diff --git "a/content/zh/docs/Administratorguide/\346\225\260\346\215\256\345\256\211\345\205\250\347\273\264\346\212\244\345\273\272\350\256\256.md" "b/content/zh/docs/Administratorguide/\346\225\260\346\215\256\345\256\211\345\205\250\347\273\264\346\212\244\345\273\272\350\256\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..9ae26bc51e98b52b5ac68bbe4a10a2bf56d69e9c --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\225\260\346\215\256\345\256\211\345\205\250\347\273\264\346\212\244\345\273\272\350\256\256.md" @@ -0,0 +1,23 @@ +# 数据安全维护建议 + +为保证openGauss数据库中的数据安全,避免丢失数据,非法访问数据等事故发生,请仔细阅读以下内容。 + +## 避免数据被丢失 + +建议用户规划周期性的物理备份,且对备份文件进行可靠的保存。在系统发生严重错误的情况下,可以利用备份文件,将系统恢复到备份前的状态。 + +## 避免数据被非法访问 + +- 建议对数据库用户进行权限分级管理。数据库管理员根据业务需要,建立用户并赋予权限,保证各用户对数据库的合理访问。 +- 对于openGauss的服务端和客户端(或基于客户端库开发的应用程序),最好也部署在可信任的内网中。如果服务端和客户端一定要部署在非信任的网络中,需要在服务启动前,打开SSL加密,保证数据在非信任网络上的传输安全。需要注意的是,打开SSL加密会降低数据库的性能。 + +## 避免系统日志泄露个人数据 + +- 将调试日志发给他人进行分析前,请删除个人数据。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >因为日志级别(log\_min\_messages)设置为DEBUGx(x为DEBUG级别,取值范围为1\~5)时,调试日志中记录的信息可能包含用户的个人数据。 + +- 将系统日志发给其他人进行分析前,请删除个人数据。因为在默认配置下,当SQL语句执行错误时,日志中会记录出错的SQL语句,而这些SQL语句中可能包含用户个人数据。 +- 将log\_min\_error\_statement参数的值设置为PANIC可以避免在系统日志中记录出错的SQL语句,但是关闭此功能将导致发生错误时难以定位。 + diff --git "a/content/zh/docs/Administratorguide/\346\227\245\345\277\227\345\217\202\350\200\203.md" "b/content/zh/docs/Administratorguide/\346\227\245\345\277\227\345\217\202\350\200\203.md" new file mode 100644 index 0000000000000000000000000000000000000000..0c746436fc2a87ddd08efa605c1f592af0280ab7 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\227\245\345\277\227\345\217\202\350\200\203.md" @@ -0,0 +1,15 @@ +# 日志参考 + +- **[日志类型简介](日志类型简介.md)** + +- **[系统日志](系统日志.md)** + +- **[操作日志](操作日志.md)** + +- **[审计日志](审计日志.md)** + +- **[WAL日志](WAL日志.md)** + +- **[性能日志](性能日志.md)** + + diff --git "a/content/zh/docs/Administratorguide/\346\227\245\345\277\227\347\261\273\345\236\213\347\256\200\344\273\213.md" "b/content/zh/docs/Administratorguide/\346\227\245\345\277\227\347\261\273\345\236\213\347\256\200\344\273\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..335079c6d3312f8075e279530736eca559b266ec --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\227\245\345\277\227\347\261\273\345\236\213\347\256\200\344\273\213.md" @@ -0,0 +1,55 @@ +# 日志类型简介 + +在数据库运行过程中,会出现大量日志,既有保证数据库安全可靠的WAL日志(预写式日志,也称为Xlog),也有用于数据库日常维护的运行和操作日志等。在数据库发生故障时,可以参考这些日志进行问题定位和数据库恢复的操作。 + +## 日志类型 + +日志类型的详细说明请参见下表。 + +**表 1** 日志类型 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

类型

+

说明

+

系统日志

+

数据库系统进程运行时产生的日志,记录系统进程的异常信息。

+

操作日志

+

通过客户端工具(例如gs_guc)操作数据库时产生的日志。

+

Trace日志

+

打开数据库的调试开关后,会记录大量的Trace日志。这些日志可以用来分析数据库的异常信息。

+

黑匣子日志

+

数据库系统崩溃的时候,通过故障现场堆、栈信息可以分析出故障发生时的进程上下文,方便故障定位。黑匣子具有在系统崩溃时,dump出进程和线程的堆、栈、寄存器信息的功能。

+

审计日志

+

开启数据库审计功能后,将数据库用户的某些操作记录在日志中,这些日志称为审计日志。

+

WAL日志

+

又称为REDO日志,在数据库异常损坏时,可以利用WAL日志进行恢复。由于WAL日志的重要性,所以需要经常备份这些日志。

+

性能日志

+

数据库系统在运行时检测物理资源的运行状态的日志,在对外部资源进行访问时的性能检测,包括磁盘、Hadoop openGauss等外部资源的访问检测信息。

+
+ diff --git "a/content/zh/docs/Administratorguide/\346\227\245\347\273\264\346\212\244\346\243\200\346\237\245\351\241\271.md" "b/content/zh/docs/Administratorguide/\346\227\245\347\273\264\346\212\244\346\243\200\346\237\245\351\241\271.md" new file mode 100644 index 0000000000000000000000000000000000000000..e405bc1486c2b163d2d4f24e38b2333763dcd161 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\227\245\347\273\264\346\212\244\346\243\200\346\237\245\351\241\271.md" @@ -0,0 +1,170 @@ +# 日维护检查项 + +## 检查openGauss状态 + +通过openGauss提供的工具查询数据库和实例状态,确认数据库和实例都处于正常的运行状态,可以对外提供数据服务。 + +- 检查实例状态 + + ``` + gs_check -U omm -i CheckClusterState + ``` + +- 检查参数 + + ``` + postgres=# SHOW parameter_name; + ``` + +- 修改参数 + + ``` + gs_guc reload -D /gaussdb/data/dbnode -c "paraname=value" + ``` + + +## 检查锁信息 + +锁机制是数据库保证数据一致性的重要手段,检查相关信息可以检查数据库的事务和运行状况。 + +- 查询数据库中的锁信息。 + + ``` + postgres=# SELECT * FROM pg_locks; + ``` + +- 查询等待锁的线程状态信息。 + + ``` + postgres=# SELECT * FROM pg_thread_wait_status WHERE wait_status = 'acquire lock'; + ``` + +- 查询等待锁的事件信息。 + + ``` + postgres=# SELECT node_name, thread_name, tid, wait_status, query_id FROM pgxc_thread_wait_status WHERE wait_status = 'acquire lock'; + ``` + +- 结束系统进程 + + 查找正在运行的系统进程,然后使用kill命令结束此进程。 + + ``` + ps ux + kill -9 pid + ``` + + +## 统计事件数据 + +SQL语句长时间运行会占用大量系统资源,用户可以通过查看事件发生的时间,占用内存大小来了解现在数据库运行状态。 + +- 查询事件的时间 + + 查询事件的线程启动时间、事务启动时间、SQL启动时间以及状态变更时间。 + + ``` + postgres=# SELECT backend_start,xact_start,query_start,state_change FROM pg_stat_activity; + ``` + +- 查询当前服务器的会话计数信息 + + ``` + postgres=# SELECT count(*) FROM pg_stat_activity; + ``` + +- 系统级统计信息 + + 查询当前使用内存最多的会话信息。 + + ``` + postgres=# SELECT * FROM pv_session_memory_detail() ORDER BY usedsize desc limit 10; + ``` + + +## 对象检查 + +表、索引、分区、约束等是数据库的核心存储对象,其核心信息和对象维护是DBA重要的日常工作。 + +- 查看表的详细信息 + + ``` + postgres=# \d+ table_name + ``` + +- 查询表统计信息 + + ``` + postgres=# SELECT * FROM pg_statistic; + ``` + +- 查看索引的详细信息 + + ``` + postgres=# \d+ index_name + ``` + +- 查询分区表信息 + + ``` + postgres=# SELECT * FROM pg_partition; + ``` + +- 收集统计信息 + + 使用ANALYZE语句收集数据库相关的统计信息。 + + 使用VACUUM语句可以回收空间并更新统计信息。 + +- 查询约束信息 + + ``` + postgres=# SELECT * FROM pg_constraint; + ``` + + +## SQL报告检查 + +使用EXPLAIN语句查看执行计划。 + +## 备份 + +数据备份重于一切,日常应检查备份执行情况,并检查备份有效性,确保备份能够保障数据安全,备份安全加密也应兼顾。 + +- 指定用户导出数据库: + + ``` + gs_dump dbname -p port -f out.sql -U user_name -W password + ``` + +- 导出schema: + + ``` + gs_dump dbname -p port -n schema_name -f out.sql + ``` + +- 导出table: + + ``` + gs_dump dbname -p port -t table_name -f out.sql + ``` + + +## 基本信息检查 + +基本信息包括版本、组件、补丁集等信息,定期检查数据库信息并登记在案是数据库生命周期管理的重要内容之一。 + +- 版本信息 + + ``` + postgres=# SELECT version(); + ``` + +- 容量检查 + + ``` + postgres=# SELECT pg_table_size('table_name'); + postgres=# SELECT pg_database_size('database_name'); + ``` + + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245openGauss\345\201\245\345\272\267\347\212\266\346\200\201.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245openGauss\345\201\245\345\272\267\347\212\266\346\200\201.md" new file mode 100644 index 0000000000000000000000000000000000000000..b853bb9ebe877c2b71815a8891e1d02f4dda81c7 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245openGauss\345\201\245\345\272\267\347\212\266\346\200\201.md" @@ -0,0 +1,7 @@ +# 检查openGauss健康状态 + +- **[检查办法](检查办法-0.md)** + +- **[异常处理](异常处理-1.md)** + + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245openGauss\350\277\220\350\241\214\346\227\245\345\277\227.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245openGauss\350\277\220\350\241\214\346\227\245\345\277\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..4691a8f7f8be9607f0f0867521914ac7ee575293 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245openGauss\350\277\220\350\241\214\346\227\245\345\277\227.md" @@ -0,0 +1,111 @@ +# 检查openGauss运行日志 + +数据库运行时,某些操作在执行过程中可能会出现错误,数据库依然能够运行。但是此时数据库中的数据可能已经发生不一致的情况。建议按月检查openGauss运行日志,及时发现隐患。 + +## 前提条件 + +- 收集日志的主机网络通畅且未宕机,数据库安装用户互信正常。 +- 日志收集工具依赖操作系统工具如gstack,如果未安装该工具,则提示错误后,跳过该收集项。 + +## 操作步骤 + +1. 以操作系统用户omm登录数据库主节点。 +2. 执行如下命令收集数据库日志。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" + ``` + + 20160616 01:01为日志的开始时间,20160616 23:59为日志的结束时间。 + +3. 根据[2](#zh-cn_topic_0237088806_zh-cn_topic_0059778412_l87490fc259434bc6ac7800ec9881a6ab)的界面输出提示,进入相应的日志收集目录,解压收集的日志,并检查数据库日志。 + + 以下以日志收集路径“/opt/gaussdb/tmp/gaussdba\_mppdb/collector\_20160726\_105158.tar.gz”为例进行操作。 + + ``` + tar -xvzf /opt/gaussdb/tmp/gaussdba_mppdb/collector_20160726_105158.tar.gz + cd /opt/gaussdb/tmp/gaussdba_mppdb/collector_20160726_105158 + ``` + + +## 示例 + +- 以--begin-time与--end-time为参数执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files + All results are stored in /tmp/gaussdba_mppdb/collector_20160616_175615.tar.gz. + ``` + +- 以--begin-time,--end-time与-h为参数执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -h plat2 + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files + All results are stored in /tmp/gaussdba_mppdb/collector_20160616_190225.tar.gz. + ``` + +- 以--begin-time,--end-time与-f为参数执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -f /opt/software/gaussdb/output + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files + All results are stored in /opt/software/gaussdb/output/collector_20160616_190511.tar.gz. + ``` + +- 以--begin-time,--end-time与--keyword为参数执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" --keyword="os" + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files. + All results are stored in /tmp/gaussdba_mppdb/collector_20160616_190836.tar.gz. + ``` + +- 以--begin-time,--end-time与-o为参数执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -o /opt/software/gaussdb/output + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files. + All results are stored in /opt/software/gaussdb/output/collector_20160726_113711.tar.gz. + ``` + +- 以--begin-time,--end-time与-l为参数(文件名必须以.log为后缀)执行gs\_collector命令。 + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -l /opt/software/gaussdb/logfile.log + ``` + + 当显示类似如下信息表示日志已经归档。 + + ``` + Successfully collected files. + All results are stored in /opt/software/gaussdb/output/collector_20160726_113711.tar.gz. + ``` + + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\212\236\346\263\225-0.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\212\236\346\263\225-0.md" new file mode 100644 index 0000000000000000000000000000000000000000..89474315b348dc203f74cc702febafe91e2fea8f --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\212\236\346\263\225-0.md" @@ -0,0 +1,350 @@ +# 检查办法 + +通过openGauss提供的gs\_check工具可以开展openGauss健康状态检查。 + +## 注意事项 + +- 扩容新节点检查只能在root用户下执行,其他场景都必须在omm用户下执行。 +- 必须指定-i或-e参数,-i会检查指定的单项,-e会检查对应场景配置中的多项。 +- 如果-i参数中不包含root类检查项或-e场景配置列表中没有root类检查项,则不需要交互输入root权限的用户及其密码。 +- 可使用--skip-root-items跳过检查项中包含的root类检查,以免需要输入root权限用户及密码。 +- 检查扩容新节点与现有节点之间的一致性,在现有节点执行gs\_check命令指定--hosts参数进行检查,其中hosts文件中需要写入新节点ip。 + +## 操作步骤 + +方式1: + +1. 以操作系统用户omm登录数据库主节点。 +2. 执行如下命令对openGauss数据库状态进行检查。 + + ``` + gs_check -i CheckClusterState + ``` + + 其中,-i指定检查项,注意区分大小写。格式:-i CheckClusterState、-i CheckCPU或-i CheckClusterState,CheckCPU。 + + 取值范围为所有支持的检查项名称,详细列表请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkos \> openGauss状态检查表”,用户可以根据需求自己编写新检查项。 + + +方式2: + +1. 以操作系统用户omm登录数据库主节点。 +2. 执行如下命令对openGauss数据库进行健康检查。 + + ``` + gs_check -e inspect + ``` + + 其中,-e指定场景名,注意区分大小写。格式:-e inspect或-e upgrade。 + + 取值范围为所有支持的巡检场景名称,默认列表包括:inspect(例行巡检)、upgrade(升级前巡检)、expand(扩容前巡检)、binary\_upgrade(就地升级前巡检)、health(健康检查巡检),用户可以根据需求自己编写场景。 + + +方式3: + +1. 以操作系统用户omm登录数据库主节点。 +2. 将巡检工具gs\_check及相关目录inspection拷贝分发到所有扩容新节点。 +3. 将扩容新节点ip写到文件_ipListFile_中,以换行符进行分隔。 +4. 执行如下命令对扩容新节点进行扩容前检查。 + + ``` + gs_check -e expand_new_node --hosts ipListFile + ``` + + -e必须为expand\_new\_node,即扩容前新节点检查。 + + +openGauss巡检的主要作用是在openGauss运行过程中,检查整个openGauss状态是否正常,或者重大操作前(升级、扩容),确保openGauss满足操作所需的环境条件和状态条件。详细的巡检项目和场景请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkos \> openGauss状态检查表”。 + +## 示例 + +执行单项检查结果: + +``` +perfadm@lfgp000700749:/opt/huawei/perfadm/tool/script> gs_check -i CheckCPU +Parsing the check items config file successfully +Distribute the context file to remote hosts successfully +Start to health check for the cluster. Total Items:1 Nodes:3 + +Checking... [=========================] 1/1 +Start to analysis the check result +CheckCPU....................................OK +The item run on 3 nodes. success: 3 + +Analysis the check result successfully +Success. All check items run completed. Total:1 Success:1 Failed:0 +For more information please refer to /opt/huawei/wisequery/script/gspylib/inspection/output/CheckReport_201902193704661604.tar.gz +``` + +本地执行结果: + +``` +perfadm@lfgp000700749:/opt/huawei/perfadm/tool/script> gs_check -i CheckCPU -L + +2017-12-29 17:09:29 [NAM] CheckCPU +2017-12-29 17:09:29 [STD] 检查主机CPU占用率,如果idle 大于30%并且iowait 小于 30%.则检查项通过,否则检查项不通过 +2017-12-29 17:09:29 [RST] OK + +2017-12-29 17:09:29 [RAW] +Linux 4.4.21-69-default (lfgp000700749) 12/29/17 _x86_64_ + +17:09:24 CPU %user %nice %system %iowait %steal %idle +17:09:25 all 0.25 0.00 0.25 0.00 0.00 99.50 +17:09:26 all 0.25 0.00 0.13 0.00 0.00 99.62 +17:09:27 all 0.25 0.00 0.25 0.13 0.00 99.37 +17:09:28 all 0.38 0.00 0.25 0.00 0.13 99.25 +17:09:29 all 1.00 0.00 0.88 0.00 0.00 98.12 +Average: all 0.43 0.00 0.35 0.03 0.03 99.17 +``` + +执行场景检查结果: + +``` +[perfadm@SIA1000131072 Check]$ gs_check -e inspect +Parsing the check items config file successfully +The below items require root privileges to execute:[CheckBlockdev CheckIOrequestqueue CheckIOConfigure CheckCheckMultiQueue CheckFirewall CheckSshdService CheckSshdConfig CheckCrondService CheckNoCheckSum CheckSctpSeProcMemory CheckBootItems CheckFilehandle CheckNICModel CheckDropCache] +Please enter root privileges user[root]:root +Please enter password for user[root]: +Please enter password for user[root] on the node[10.244.57.240]: +Check root password connection successfully +Distribute the context file to remote hosts successfully +Start to health check for the cluster. Total Items:59 Nodes:2 + +Checking... [ ] 21/59 +Checking... [=========================] 59/59 +Start to analysis the check result +CheckClusterState...........................OK +The item run on 2 nodes. success: 2 + +CheckDBParams...............................OK +The item run on 1 nodes. success: 1 + +CheckDebugSwitch............................OK +The item run on 2 nodes. success: 2 + +CheckDirPermissions.........................OK +The item run on 2 nodes. success: 2 + +CheckReadonlyMode...........................OK +The item run on 1 nodes. success: 1 + +CheckEnvProfile.............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +GAUSSHOME /usr1/gaussdb/app +LD_LIBRARY_PATH /usr1/gaussdb/app/lib +PATH /usr1/gaussdb/app/bin + + +CheckBlockdev...............................OK +The item run on 2 nodes. success: 2 + +CheckCurConnCount...........................OK +The item run on 1 nodes. success: 1 + +CheckCursorNum..............................OK +The item run on 1 nodes. success: 1 + +CheckPgxcgroup..............................OK +The item run on 1 nodes. success: 1 + +CheckDiskFormat.............................OK +The item run on 2 nodes. success: 2 + +CheckSpaceUsage.............................OK +The item run on 2 nodes. success: 2 + +CheckInodeUsage.............................OK +The item run on 2 nodes. success: 2 + +CheckSwapMemory.............................OK +The item run on 2 nodes. success: 2 + +CheckLogicalBlock...........................OK +The item run on 2 nodes. success: 2 + +CheckIOrequestqueue.....................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: +On device (vdb) 'IO Request' RealValue '256' ExpectedValue '32768' +On device (vda) 'IO Request' RealValue '256' ExpectedValue '32768' + +CheckMaxAsyIOrequests.......................OK +The item run on 2 nodes. success: 2 + +CheckIOConfigure............................OK +The item run on 2 nodes. success: 2 + +CheckMTU....................................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +1500 + +CheckPing...................................OK +The item run on 2 nodes. success: 2 + +CheckRXTX...................................NG +The item run on 2 nodes. ng: 2 +The ng[host240,host157] value: +NetWork[eth0] +RX: 256 +TX: 256 + + +CheckNetWorkDrop............................OK +The item run on 2 nodes. success: 2 + +CheckMultiQueue.............................OK +The item run on 2 nodes. success: 2 + +CheckEncoding...............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +LANG=en_US.UTF-8 + +CheckFirewall...............................OK +The item run on 2 nodes. success: 2 + +CheckKernelVer..............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +3.10.0-957.el7.x86_64 + +CheckMaxHandle..............................OK +The item run on 2 nodes. success: 2 + +CheckNTPD...................................OK +host240: NTPD service is running, 2020-06-02 17:00:28 +host157: NTPD service is running, 2020-06-02 17:00:06 + + +CheckOSVer..................................OK +host240: The current OS is centos 7.6 64bit. +host157: The current OS is centos 7.6 64bit. + + +CheckSysParams..........................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: +Warning reason: variable 'net.ipv4.tcp_retries1' RealValue '3' ExpectedValue '5'. +Warning reason: variable 'net.ipv4.tcp_syn_retries' RealValue '6' ExpectedValue '5'. +Warning reason: variable 'net.sctp.path_max_retrans' RealValue '5' ExpectedValue '10'. +Warning reason: variable 'net.sctp.max_init_retransmits' RealValue '8' ExpectedValue '10'. + + +CheckTHP....................................OK +The item run on 2 nodes. success: 2 + +CheckTimeZone...............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: ++0800 + +CheckCPU....................................OK +The item run on 2 nodes. success: 2 + +CheckSshdService............................OK +The item run on 2 nodes. success: 2 + +CheckSshdConfig.........................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: + +Warning reason: UseDNS parameter is not set; expected: no + +CheckCrondService...........................OK +The item run on 2 nodes. success: 2 + +CheckStack..................................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +8192 + +CheckNoCheckSum.............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +Nochecksum value is N,Check items pass. + +CheckSysPortRange...........................OK +The item run on 2 nodes. success: 2 + +CheckMemInfo................................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +totalMem: 31.260929107666016G + +CheckHyperThread............................OK +The item run on 2 nodes. success: 2 + +CheckTableSpace.............................OK +The item run on 1 nodes. success: 1 + +CheckSctpService............................OK +The item run on 2 nodes. success: 2 + +CheckSysadminUser...........................OK +The item run on 1 nodes. success: 1 + +CheckGUCConsistent..........................OK +All DN instance guc value is consistent. + +CheckMaxProcMemory..........................OK +The item run on 1 nodes. success: 1 + +CheckBootItems..............................OK +The item run on 2 nodes. success: 2 + +CheckHashIndex..............................OK +The item run on 1 nodes. success: 1 + +CheckPgxcRedistb............................OK +The item run on 1 nodes. success: 1 + +CheckNodeGroupName..........................OK +The item run on 1 nodes. success: 1 + +CheckTDDate.................................OK +The item run on 1 nodes. success: 1 + +CheckDilateSysTab...........................OK +The item run on 1 nodes. success: 1 + +CheckKeyProAdj..............................OK +The item run on 2 nodes. success: 2 + +CheckProStartTime.......................WARNING +host157: +STARTED COMMAND +Tue Jun 2 16:57:18 2020 /usr1/dmuser/dmserver/metricdb1/server/bin/gaussdb --single_node -D /usr1/dmuser/dmb1/data -p 22204 +Mon Jun 1 16:15:15 2020 /usr1/gaussdb/app/bin/gaussdb -D /usr1/gaussdb/data/dn1 -M standby + + +CheckFilehandle.............................OK +The item run on 2 nodes. success: 2 + +CheckRouting................................OK +The item run on 2 nodes. success: 2 + +CheckNICModel...............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +version: 1.0.0 +model: Red Hat, Inc. Virtio network device + + +CheckDropCache..........................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: +No DropCache process is running + +CheckMpprcFile..............................NG +The item run on 2 nodes. ng: 2 +The ng[host240,host157] value: +There is no mpprc file + +Analysis the check result successfully +Failed. All check items run completed. Total:59 Success:52 Warning:5 NG:2 +For more information please refer to /usr1/gaussdb/tool/script/gspylib/inspection/output/CheckReport_inspect611.tar.gz + +``` + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\212\236\346\263\225-2.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\212\236\346\263\225-2.md" new file mode 100644 index 0000000000000000000000000000000000000000..3fada42dc9d53c2e325bda96b77a0baab33ab8fb --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\212\236\346\263\225-2.md" @@ -0,0 +1,40 @@ +# 检查办法 + +通过openGauss提供的性能统计工具gs\_checkperf可以对硬件性能进行检查。 + +## 前提条件 + +- openGauss运行状态正常。 +- 运行在数据库之上的业务运行正常。 + +## 操作步骤 + +1. 以操作系统用户omm登录数据库主节点。 +2. 执行如下命令对openGauss数据库进行性能检查。 + + ``` + gs_checkperf + ``` + + +具体的性能统计项目请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkperf \> 性能检查项”。 + +## 示例 + +以简要格式在屏幕上显示性能统计结果。 + +``` +gs_checkperf -i pmk -U omm +Cluster statistics information: + Host CPU busy time ratio : 1.43 % + MPPDB CPU time % in busy time : 1.88 % + Shared Buffer Hit ratio : 99.96 % + In-memory sort ratio : 100.00 % + Physical Reads : 4 + Physical Writes : 25 + DB size : 70 MB + Total Physical writes : 25 + Active SQL count : 2 + Session count : 3 +``` + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\212\236\346\263\225.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\212\236\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..bdcd4d55c17fe29030acf5a2e0a05bb572a4f37e --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\212\236\346\263\225.md" @@ -0,0 +1,60 @@ +# 检查办法 + +通过openGauss提供的gs\_checkos工具可以完成操作系统状态检查。 + +## 前提条件 + +- 当前的硬件和网络环境正常。 +- 各主机间root互信状态正常。 +- 只能使用root用户执行gs\_checkos命令。 + +## 操作步骤 + +1. 以root用户身份登录任意一台服务器。 +2. 执行如下命令对openGauss节点服务器的OS参数进行检查。 + + ``` + gs_checkos -i A + ``` + + 检查节点服务器的OS参数的目的是为了保证openGauss正常通过预安装,并且在安装成功后可以安全高效的运行。详细的检查项目请参见《openGauss 工具参考》中“服务端工具 \> gs\_checkos”章节。 + + +## 示例 + +执行gs\_checkos前需要先使用gs\_preinstall工具执行前置脚本,准备环境。以参数"A"为例。 + +``` +gs_checkos -i A +Checking items: + A1. [ OS version status ] : Normal + A2. [ Kernel version status ] : Normal + A3. [ Unicode status ] : Normal + A4. [ Time zone status ] : Normal + A5. [ Swap memory status ] : Normal + A6. [ System control parameters status ] : Normal + A7. [ File system configuration status ] : Normal + A8. [ Disk configuration status ] : Normal + A9. [ Pre-read block size status ] : Normal + A10.[ IO scheduler status ] : Normal + A11.[ Network card configuration status ] : Normal + A12.[ Time consistency status ] : Warning + A13.[ Firewall service status ] : Normal + A14.[ THP service status ] : Normal +Total numbers:14. Abnormal numbers:0. Warning number:1. +``` + +以参数"B"为例。 + +``` +gs_checkos -i B +Setting items: + B1. [ Set system control parameters ] : Normal + B2. [ Set file system configuration value ] : Normal + B3. [ Set pre-read block size value ] : Normal + B4. [ Set IO scheduler value ] : Normal + B5. [ Set network card configuration value ] : Normal + B6. [ Set THP service ] : Normal +Total numbers:6. Abnormal numbers:0. Warning number:0. +``` + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\222\214\346\270\205\347\220\206\346\227\245\345\277\227.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\222\214\346\270\205\347\220\206\346\227\245\345\277\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..bfc8ef84180b7339ee55477090400606b38d70cc --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\222\214\346\270\205\347\220\206\346\227\245\345\277\227.md" @@ -0,0 +1,11 @@ +# 检查和清理日志 + +日志是检查系统运行及故障定位的关键手段。建议按月度例行查看操作系统日志及数据库的运行日志。同时,随着时间的推移,日志的增加会占用较多的磁盘空间。建议按月度清理数据库的运行日志。 + +- **[检查操作系统日志](检查操作系统日志.md)** + +- **[检查openGauss运行日志](检查openGauss运行日志.md)** + +- **[清理运行日志](清理运行日志.md)** + + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\272\224\347\224\250\350\277\236\346\216\245\346\225\260.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\272\224\347\224\250\350\277\236\346\216\245\346\225\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..ec6d1e51eb16dcb0f387d3ca6409480a3fecda72 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\345\272\224\347\224\250\350\277\236\346\216\245\346\225\260.md" @@ -0,0 +1,126 @@ +# 检查应用连接数 + +如果应用程序与数据库的连接数超过最大值,则新的连接无法建立。建议每天检查连接数,及时释放空闲的连接或者增加最大连接数。 + +## 操作步骤 + +1. 以操作系统用户omm登录数据库主节点。 +2. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库主节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + +3. 执行如下SQL语句查看连接数。 + + ``` + postgres=# SELECT count(*) FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s; + ``` + + 显示类似如下的信息,其中2表示当前有两个应用连接到数据库。 + + ``` + count + ------- + 2 + (1 row) + ``` + +4. 查看现有最大连接数。 + + ``` + postgres=# SHOW max_connections; + ``` + + 显示信息如下,其中200为现在的最大连接数。 + + ``` + max_connections + ----------------- + 200 + (1 row) + ``` + + +## 异常处理 + +如果显示的连接数接近数据库的最大连接数max\_connections,则需要考虑清理现有连接数或者增加新的连接数。 + +1. 执行如下SQL语句,查看state字段等于idle,且state\_change字段长时间没有更新过的连接信息。 + + ``` + postgres=# SELECT * FROM pg_stat_activity where state='idle' order by state_change; + ``` + + 显示类似如下的信息: + + ``` + datid | datname | pid | usesysid | usename | application_name | client_addr + | client_hostname | client_port | backend_start | xact_start | quer + y_start | state_change | waiting | enqueue | state | resource_pool + | query + -------+----------+-----------------+----------+----------+------------------+--------------- + -+-----------------+-------------+-------------------------------+------------+-------------- + -----------------+-------------------------------+---------+---------+-------+--------------- + +---------------------------------------------- + 13626 | postgres | 140390162233104 | 10 | gaussdba | | + | | -1 | 2016-07-15 14:08:59.474118+08 | | 2016-07-15 14 + :09:04.496769+08 | 2016-07-15 14:09:04.496975+08 | f | | idle | default_pool + | select count(group_name) from pgxc_group; + 13626 | postgres | 140390132872976 | 10 | gaussdba | cn_5002 | 10.180.123.163 + | | 48614 | 2016-07-15 14:11:16.014871+08 | | 2016-07-15 14 + :21:17.346045+08 | 2016-07-15 14:21:17.346095+08 | f | | idle | default_pool + | SET SESSION AUTHORIZATION DEFAULT;RESET ALL; + (2 rows) + ``` + +2. 释放空闲的连接数。 + + 查看每个连接,并与此连接的使用者确认是否可以断开连接,或执行如下SQL语句释放连接。其中,pid为上一步查询中空闲连接所对应的pid字段值。 + + ``` + postgres=# SELECT pg_terminate_backend(140390132872976); + ``` + + 显示类似如下的信息: + + ``` + postgres=# SELECT pg_terminate_backend(140390132872976); + pg_terminate_backend + ---------------------- + t + (1 row) + ``` + + 如果没有可释放的连接,请执行下一步。 + +3. 增加最大连接数。 + + ``` + gs_guc set -D /gaussdb/data/dbnode -c "max_connections= 800" + ``` + + 其中800为新修改的连接数。 + +4. 重启数据库服务使新的设置生效。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >重启openGauss操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。 + + ``` + gs_om -t stop && gs_om -t start + ``` + + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\223\215\344\275\234\347\263\273\347\273\237\345\217\202\346\225\260.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\223\215\344\275\234\347\263\273\347\273\237\345\217\202\346\225\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..6d8b5520b4c5fcd18567c0720134a1bf5686b0ba --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\223\215\344\275\234\347\263\273\347\273\237\345\217\202\346\225\260.md" @@ -0,0 +1,7 @@ +# 检查操作系统参数 + +- **[检查办法](检查办法.md)** + +- **[异常处理](异常处理.md)** + + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\223\215\344\275\234\347\263\273\347\273\237\346\227\245\345\277\227.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\223\215\344\275\234\347\263\273\347\273\237\346\227\245\345\277\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..6f349e852625b7cbd6c97dde35741015fdd44bae --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\223\215\344\275\234\347\263\273\347\273\237\346\227\245\345\277\227.md" @@ -0,0 +1,14 @@ +# 检查操作系统日志 + +建议按月检查操作系统日志,排除操作系统运行异常隐患。 + +## 操作步骤 + +执行如下命令查看操作系统日志文件。 + +``` +vim /var/log/messages +``` + +关注其中近一个月出现的kernel、error、fatal等字样,根据系统报警信息进行处理。 + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\225\260\346\215\256\345\272\223\346\200\247\350\203\275.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\225\260\346\215\256\345\272\223\346\200\247\350\203\275.md" new file mode 100644 index 0000000000000000000000000000000000000000..8304f6c3062d770ff448b251bcd2c59b4c9672a6 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\225\260\346\215\256\345\272\223\346\200\247\350\203\275.md" @@ -0,0 +1,7 @@ +# 检查数据库性能 + +- **[检查办法](检查办法-2.md)** + +- **[异常处理](异常处理-3.md)** + + diff --git "a/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\227\266\351\227\264\344\270\200\350\207\264\346\200\247.md" "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\227\266\351\227\264\344\270\200\350\207\264\346\200\247.md" new file mode 100644 index 0000000000000000000000000000000000000000..77045f05d50e1369f7d20be3b6ce00817ba36a30 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\243\200\346\237\245\346\227\266\351\227\264\344\270\200\350\207\264\346\200\247.md" @@ -0,0 +1,46 @@ +# 检查时间一致性 + +数据库事务一致性通过逻辑时钟保证,与操作系统时间无关,但是系统时间不一致会导致诸多潜在问题,主要是后台运维和监控功能异常,因此在月度检查时建议检查各个节点的时间一致性。 + +## 操作步骤 + +1. 以操作系统用户omm登录数据库主节点。 +2. 创建记录openGauss各节点的配置文件(_mpphosts文件目录_用户可随意指定,建议放在/tmp下)。 + + ``` + vim /tmp/mpphosts + ``` + + 增加各节点的主机名称。 + + ``` + plat1 + plat2 + plat3 + ``` + +3. 保存配置文件。 + + ``` + :wq! + ``` + +4. 执行如下命令,输出各节点上的时间到“/tmp/sys\_ctl-os1.log”文件中。 + + ``` + for ihost in `cat /tmp/mpphosts`; do ssh -n -q $ihost "hostname;date"; done > /tmp/sys_ctl-os1.log + ``` + +5. 根据输出确认各个节点的时间一致性,节点之间时间差异不能超过30秒。 + + ``` + cat /tmp/sys_ctl-os1.log + plat1 + Thu Feb 9 16:46:38 CST 2017 + plat2 + Thu Feb 9 16:46:49 CST 2017 + plat3 + Thu Feb 9 16:46:14 CST 2017 + ``` + + diff --git "a/content/zh/docs/Administratorguide/\346\246\202\350\277\260.md" "b/content/zh/docs/Administratorguide/\346\246\202\350\277\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..60b8376b5c6df6c10f915f7e45de430f7e3a824a --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\246\202\350\277\260.md" @@ -0,0 +1,103 @@ +# 概述 + +数据备份是保护数据安全的重要手段之一,为了更好的保护数据安全,openGauss数据库支持两种备份恢复类型、多种备份恢复方案,备份和恢复过程中提供数据的可靠性保障机制。 + +备份与恢复类型可分为逻辑备份与恢复、物理备份与恢复。 + +- 逻辑备份与恢复:通过逻辑导出对数据进行备份,逻辑备份只能基于备份时刻进行数据转储,所以恢复时也只能恢复到备份时保存的数据。对于故障点和备份点之间的数据,逻辑备份无能为力,逻辑备份适合备份那些很少变化的数据,当这些数据因误操作被损坏时,可以通过逻辑备份进行快速恢复。如果通过逻辑备份进行全库恢复,通常需要重建数据库,导入备份数据来完成,对于可用性要求很高的数据库,这种恢复时间太长,通常不被采用。由于逻辑备份具有平台无关性,所以更为常见的是,逻辑备份被作为一个数据迁移及移动的主要手段。 +- 物理备份与恢复:通过物理文件拷贝的方式对数据库进行备份,以磁盘块为基本单位将数据从主机复制到备机。通过备份的数据文件及归档日志等文件,数据库可以进行完全恢复。物理备份速度快,一般被用作对数据进行备份和恢复,用于全量备份的场景。通过合理规划,可以低成本进行备份与恢复。 + + 以下为openGauss支持的两类数据备份恢复方案,备份方案也决定了当异常发生时该如何恢复。 + + **表 1** 两种备份恢复类型对比 + + + + + + + + + + + + + + + + + + +

备份类型

+

应用场景

+

支持的介质

+

优缺点

+

逻辑备份与恢复

+

适合于数据量小的场景。

+

目前用于表备份恢复,可以备份恢复单表和多表。

+
  • 磁盘
  • SSD
+

可按用户需要进行指定对象的备份和恢复,灵活度高。

+

当数据量大时,备份效率低。

+

物理备份与恢复

+

适用于数据量大的场景,主要用于全量数据备份恢复,也可对整个数据库中的WAL归档日志和运行日志进行备份恢复。

+

数据量大时,备份效率高。

+
+ + 当需要进行备份恢复操作时,主要从以下四个方面考虑数据备份方案。 + + - 备份对业务的影响在可接受范围。 + - 数据库恢复效率。 + + 为尽量减小数据库故障的影响,要使恢复时间减到最少,从而使恢复的效率达到最高。 + + - 数据可恢复程度。 + + 当数据库失效后,要尽量减少数据损失。 + + - 数据库恢复成本。 + + 在现网选择备份策略时参考的因素比较多,如备份对象、数据大小、网络配置等,[表2](#zh-cn_topic_0237088826_zh-cn_topic_0100209712_table1179095017218)列出了可用的备份策略和每个备份策略的适用场景。 + + **表 2** 备份策略典型场景 + + + + + + + + + + + + + + + + + + + +

备份策略

+

关键性能因素

+

典型数据量

+

性能规格

+

集群备份

+
  • 数据大小
  • 网络配置
+

数据:PB级

+

对象:约100万个

+

备份:

+
  • 每个主机80 Mbit/s(NBU/EISOO+磁盘)
  • 约90%磁盘I/O速率(SSD/HDD)
+

表备份

+
  • 表所在模式
  • 网络配置(NBU)
+

数据:10 TB级

+

备份:基于查询性能速度+I/O速度

+
说明:

多表备份时,备份耗时计算方式:

+
总时间 = 表数量 x 起步时间 + 数据总量 /  数据备份速度
+

其中:

+
  • 磁盘起步时间为5s左右,NBU起步时间比DISK长(取决于NBU部署方案)。
  • 数据备份速度为单节点50MB/s左右(基于1GB大小的表,物理机备份到本地磁盘得出此速率)。
+

表越小,备份性能更低。

+
+
+ + diff --git "a/content/zh/docs/Administratorguide/\346\270\205\347\220\206\350\277\220\350\241\214\346\227\245\345\277\227.md" "b/content/zh/docs/Administratorguide/\346\270\205\347\220\206\350\277\220\350\241\214\346\227\245\345\277\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..9d4501d1747b7c5e6ecd92f2e370ac88162e3b78 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\346\270\205\347\220\206\350\277\220\350\241\214\346\227\245\345\277\227.md" @@ -0,0 +1,25 @@ +# 清理运行日志 + +数据库运行过程中会产生大量运行日志,占用大量的磁盘空间,建议清理过期日志文件,只保留一个月的日志。 + +## 操作步骤 + +1. 以操作系统用户omm登录数据库主节点。 +2. 清理日志。 + 1. 将超过1个月的日志备份到其他磁盘。 + 2. 进入日志存放目录。 + + ``` + cd $GAUSSLOG + ``` + + 3. 进入相应的子目录,使用如下方式删除1个月之前产生的日志。 + + ``` + rm 日志名称 + ``` + + 日志文件的命名格式为“postgresql-年-月-日\_HHMMSS”。 + + + diff --git "a/content/zh/docs/Administratorguide/\347\211\251\347\220\206\345\244\207\344\273\275\346\201\242\345\244\215.md" "b/content/zh/docs/Administratorguide/\347\211\251\347\220\206\345\244\207\344\273\275\346\201\242\345\244\215.md" new file mode 100644 index 0000000000000000000000000000000000000000..4e4c4a460e5f0e1ac44d344acb3f31ef9a50f583 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\347\211\251\347\220\206\345\244\207\344\273\275\346\201\242\345\244\215.md" @@ -0,0 +1,5 @@ +# 物理备份恢复 + +- **[gs\_basebackup](gs_basebackup.md)** + + diff --git "a/content/zh/docs/Administratorguide/\347\212\266\346\200\201\346\237\245\350\257\242.md" "b/content/zh/docs/Administratorguide/\347\212\266\346\200\201\346\237\245\350\257\242.md" new file mode 100644 index 0000000000000000000000000000000000000000..70c51dae95ed7a11944d26c76585c4cbe16d2ac6 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\347\212\266\346\200\201\346\237\245\350\257\242.md" @@ -0,0 +1,220 @@ +# 状态查询 + +## 背景信息 + +openGauss支持查看整个openGauss的状态,通过查询结果确认openGauss或者单个主机的运行状态是否正常。 + +## 前提条件 + +openGauss已经启动。 + +## 操作步骤 + +1. 以操作系统用户omm登录数据库主节点。 +2. 使用如下命令查询openGauss状态: + + ``` + gs_om -t status --detail + ``` + + openGauss状态显示结果的参数说明请参见[表1](#zh-cn_topic_0237088790_table9610118112610)。 + + 若要查询某主机上的实例状态,请在命令中增加“-h”项。示例如下: + + ``` + gs_om -t status -h plat2 + ``` + + 其中,plat2为待查询主机的名称。 + + +## 参数说明 + +**表 1** 节点角色说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

字段

+

字段含义

+

字段值

+

cluster_state

+

openGauss状态。显示整个openGauss是否运行正常。

+
  • Normal:表示openGauss可用,且数据有冗余备份。所有进程都在运行,主备关系正常。
  • Unavailable:表示openGauss不可用。
  • Degraded:表示openGauss可用,但存在故障的数据库节点数据库主节点实例。
+

node

+

主机名称

+

表示该实例所在的主机名称。多AZ时会显示AZ编号。

+

node_ip

+

主机IP

+

表示该实例所在的主机IP。

+

instance

+

实例ID

+

表示该实例的ID。

+

state

+

实例角色

+
  • Normal: 表示单主机实例
  • Primary:表示实例为主实例。
  • Standby:表示实例为备实例。
  • Secondary:表示实例为从备实例。
  • Pending:表示该实例在仲裁阶段。
  • Unknown:表示实例状态未知。
  • Down: 表示实例处于宕机状态
  • Abnormal: 表示节点处于异常状态
  • Manually stopped: 表示节点已经被手动停止
+
+ +每个角色也存在不同的状态, 例如启动, 连接等, 其各个状态说明如下 + +**表 2** 节点状态说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

状态

+

字段含义

+

Normal

+

表示节点启动正常

+

Need repair

+

当前节点需要修复

+

Starting

+

节点正在启动中

+

Wait promoting

+

节点正等待升级中, 例如备机向主机发送升级请求后, 正在等待主机回应时的状态

+

Promoting

+

备节点正在升级为主节点的状态

+

Demoting

+

节点正在降级中, 如主机正在降为备机中

+

Building

+

备机启动失败, 需要重建,

+

Catchup

+

备节点正在追赶主节点

+

Coredump

+

节点程序崩溃

+

Unknown

+

节点状态未知

+
+ +当节点出现Need repair状态时, 可能需要对该节点进行重建使其恢复正常, 通常情况下, 节点重建原因说明如下: + +表3 节点重建原因说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

状态

+

字段含义

+

Normal

+

表示节点启动正常

+

WAL segment removed

+

主机日志WAL日志不存在, 备机日志比主机日志新

+

Disconnect

+

备机不能连接主机

+

Version not matched

+

主备二进制版本不一致

+

Mode not matched

+

主备角色不匹配, 例如两个备机互联

+

System id not matched

+

主备数据库系统id不一致, 主备双机要求System ID必须一致

+

Timeline not matched

+

日志时间线不一致

+

Unknown

+

其他原因

+
+ +1. + +## 示例 + +查看openGauss详细状态信息,含实例状态信息。 + +``` +gs_om -t status --detail +[ Cluster State ] + +cluster_state : Normal +redistributing : No +current_az : AZ_ALL + +[ Datanode State ] + +node node_ip instance state | node node_ip instance state +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +1 pekpopgsci00235 10.244.62.204 6001 /opt/gaussdb/cluster/data/dn1 P Primary Normal | 2 pekpopgsci00238 10.244.61.81 6002 /opt/gaussdb/cluster/data/dn1 S Standby Normal +``` + diff --git "a/content/zh/docs/Administratorguide/\347\224\237\346\210\220\351\205\215\347\275\256\346\226\207\344\273\266.md" "b/content/zh/docs/Administratorguide/\347\224\237\346\210\220\351\205\215\347\275\256\346\226\207\344\273\266.md" new file mode 100644 index 0000000000000000000000000000000000000000..e8f34b4bb6fa3fba938b76e69936f5feb4c59932 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\347\224\237\346\210\220\351\205\215\347\275\256\346\226\207\344\273\266.md" @@ -0,0 +1,61 @@ +# 生成配置文件 + +## 背景信息 + +在openGauss使用过程中,如果静态配置文件无意损坏后,会影响openGauss感知openGauss拓扑结构和主备关系gs\_om工具生成静态配置文件,替换已经损坏的配置文件,openGauss的正常运行。 + +## 前置条件 + +无。 + +## 操作步骤 + +1. 以操作系统用户omm登录数据库主节点。 +2. 执行如下命令会在本服务器指定目录下生成配置文件。 + + ``` + gs_om -t generateconf -X /opt/software/openGauss/clusterconfig.xml --distribute + ``` + + /opt/software/openGauss/clusterconfig.xml为openGauss安装时XML配置文件的存放目录。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >1. 执行命令后,日志信息中会有新文件的存放的目录。以一主两备环境为例,打开新文件存放目录,会出现3个以主机名命名的配置文件,需要用这3个文件分别替换对应主机的配置文件。 + >2. 若不使用--distribute参数,需执行[3](#zh-cn_topic_0237088792_zh-cn_topic_0059777801_lc1ce55d572e44beea3e47b1b427fae3e)将静态配置文件分配到对应节点;若使用--distribute参数,则会将生成的静态配置文件自动分配到对应节点,无需执行[3](#zh-cn_topic_0237088792_zh-cn_topic_0059777801_lc1ce55d572e44beea3e47b1b427fae3e)。 + +3. (可选)分别替换3台主机的/opt/gaussdb/app/bin目录下损坏的静态配置文件。 + + 这里以其中一台主机为例进行介绍。 + + ``` + mv /opt/huawei/wisequery/script/static_config_files/cluster_static_config_SIA1000056771 /opt/gaussdb/app/bin/cluster_static_config + ``` + + +## 示例 + +在openGauss中的任意主机上执行如下命令,生成配置文件: + +``` +gs_om -t generateconf -X /opt/software/openGauss/clusterconfig.xml --distribute +Generating static configuration files for all nodes. +Creating temp directory to store static configuration files. +Successfully created the temp directory. +Generating static configuration files. +Successfully generated static configuration files. +Static configuration files for all nodes are saved in /opt/huawei/Bigdata/mppdb/wisequery/script/static_config_files. +Distributing static configuration files to all nodes. +Successfully distributed static configuration files. +``` + +打开生成的配置文件目录,会看到新生成的3个文件: + +``` +cd /opt/huawei/Bigdata/mppdb/wisequery/script/static_config_files +ll +total 456 +-rwxr-xr-x 1 omm dbgrp 155648 2016-07-13 15:51 cluster_static_config_plat1 +-rwxr-xr-x 1 omm dbgrp 155648 2016-07-13 15:51 cluster_static_config_plat2 +-rwxr-xr-x 1 omm dbgrp 155648 2016-07-13 15:51 cluster_static_config_plat3 +``` + diff --git "a/content/zh/docs/Administratorguide/\347\263\273\347\273\237\346\227\245\345\277\227.md" "b/content/zh/docs/Administratorguide/\347\263\273\347\273\237\346\227\245\345\277\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..df5cac2f4e25b0d1c0f34542e04c82077c0b330f --- /dev/null +++ "b/content/zh/docs/Administratorguide/\347\263\273\347\273\237\346\227\245\345\277\227.md" @@ -0,0 +1,25 @@ +# 系统日志 + +openGauss运行时数据库节点以及openGauss安装部署时产生的日志统称为系统日志。如果openGauss在运行时发生故障,可以通过这些系统日志及时定位故障发生的原因,根据日志内容制定恢复openGauss的方法。 + +## 日志文件存储路径 + +数据库节点的运行日志放在“/var/log/gaussdb/用户名/pg\_log”中各自对应的目录下。 + +OM openGauss安装卸载时产生的日志放在“/var/log/gaussdb/用户名/om”目录下。 + +## 日志文件命名格式 + +数据库节点运行日志的命名规则: + +postgresql-创建时间.log + +默认情况下,每日0点或者日志文件大于16MB或者数据库实例(数据库节点)重新启动后,会生成新的日志文件。 + +## 日志内容说明 + +- 数据库节点每一行日志内容的默认格式: + + 日期+时间+时区+用户名称+数据库名称+会话ID+日志级别+日志内容 + + diff --git "a/content/zh/docs/Administratorguide/\351\200\273\350\276\221\345\244\207\344\273\275\346\201\242\345\244\215.md" "b/content/zh/docs/Administratorguide/\351\200\273\350\276\221\345\244\207\344\273\275\346\201\242\345\244\215.md" new file mode 100644 index 0000000000000000000000000000000000000000..70811ad09f43f825b1a125541f35b408c3355fe1 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\351\200\273\350\276\221\345\244\207\344\273\275\346\201\242\345\244\215.md" @@ -0,0 +1,11 @@ +# 逻辑备份恢复 + +- **[gs\_dump](gs_dump.md)** + +- **[gs\_dumpall](gs_dumpall.md)** + +- **[gs\_restore](gs_restore.md)** + +- **[gs\_backup](gs_backup.md)** + + diff --git "a/content/zh/docs/Administratorguide/\351\253\230\345\215\261\346\223\215\344\275\234\344\270\200\350\247\210\350\241\250.md" "b/content/zh/docs/Administratorguide/\351\253\230\345\215\261\346\223\215\344\275\234\344\270\200\350\247\210\350\241\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..15c487fdd4b3a237046048a864d3a2639d352531 --- /dev/null +++ "b/content/zh/docs/Administratorguide/\351\253\230\345\215\261\346\223\215\344\275\234\344\270\200\350\247\210\350\241\250.md" @@ -0,0 +1,98 @@ +# 高危操作一览表 + +各项操作请严格遵守指导书操作,同时如下高危操作禁止随意执行。 + +[表1](#zh-cn_topic_0237088894_zh-cn_topic_0059777750_t725e2ece7f7a4d5f962b2c314e7e836b)中描述在产品的操作与维护阶段,进行日常操作时应注意的严禁操作。 + +**表 1** 禁用操作 + + + + + + + + + + + + + +

操作名称

+

操作风险

+

严禁修改数据目录下文件名,权限,内容不能修改,不能删除内容。

+

导致数据库节点实例出现严重错误,并且无法修复。

+

严禁删除数据库系统表或系统表数据。

+

删除系统表将导致无法正常进行业务操作。

+
+ +[表2](#zh-cn_topic_0237088894_zh-cn_topic_0059777750_tf7f1e2a0747f496baffa365814127a3c)中描述在产品的操作与维护阶段,进行日常操作时应注意的高危操作。 + +**表 2** 高危操作 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

操作分类

+

操作名称

+

操作风险

+

风险等级

+

规避措施

+

重大操作观察项目

+

数据库

+

不能直接在配置文件中手动修改端口号。

+

导致数据库启动不了或者连接不上。

+

▲▲▲▲▲

+

尽量使用工具修改,不要手动操作

+

无。

+

不能随意修改pg_hba.conf配置文件中的内容。

+

导致客户端连接不上。

+

▲▲▲▲▲

+

严格根据产品手册操作。

+

无。

+

不能手动修改pg_xlog的内容。

+

导致数据库无法启动,数据不一致。

+

▲▲▲▲▲

+

尽量使用工具修改,不要手动操作。

+

无。

+

作业

+

使用kill -9终止作业进程。

+

导致作业占用的系统资源无法释放。

+

▲▲▲

+

尽量登录数据库使用pg_terminate_backend,pg_cancel_backend操作终止作业,或使用Ctrl+C终止作业进程。

+

观察资源使用情况。

+
+ diff --git a/content/zh/docs/Compilationguide/FAQ.md b/content/zh/docs/Compilationguide/FAQ.md index d457fe0d3ac3c0f0d2cde26326a503681dddd4c6..b3357af9d2b17b48974bc8e7e4fe8a1e76b436b7 100644 --- a/content/zh/docs/Compilationguide/FAQ.md +++ b/content/zh/docs/Compilationguide/FAQ.md @@ -2,6 +2,10 @@ - **[如何清除编译过程中生成的临时文件](如何清除编译过程中生成的临时文件.md)** -- **[如何解决“Configure error: Ccompiler cannot create executables”报错](如何解决-Configure-error-Ccompiler-cannot-create-executables-报错.md)** +- **[如何解决“Configure error: C compiler cannot create executables”报错](如何解决-Configure-error-C-compiler-cannot-create-executables-报错.md)** + +- **[如何解决 "g++: fatal error: Killed signal terminated program cclplus" 报错](如何解决-g++-fatal-error-Killed-signal-terminated-program-cclplus-报错.md)** + +- **[如何解决"out of memory allocating xxx bytes after a total of xxx bytes"报错](如何解决-out-of-memory-allocating-xxx-bytes-after-a-total-of-xxx-bytes-报错.md)** diff --git "a/content/zh/docs/Compilationguide/build-sh\344\273\213\347\273\215.md" "b/content/zh/docs/Compilationguide/build-sh\344\273\213\347\273\215.md" new file mode 100644 index 0000000000000000000000000000000000000000..8853637741fa0e36a75077ae9996d8f86698de96 --- /dev/null +++ "b/content/zh/docs/Compilationguide/build-sh\344\273\213\347\273\215.md" @@ -0,0 +1,75 @@ +# build.sh介绍 + +openGauss-server/build.sh是编译过程中的重要脚本工具。其集成了软件安装编译、产品安装包编译两种功能,可快速进行代码编译和打包。 + +详细参数选项如下表所示: + +**表 1** build.sh参数功能选项介绍。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能选项

+

缺省值

+

参数

+

功能

+

-h

+

不使用此选项

+

-

+

帮助菜单。

+

-m

+

release

+

[debug | release | memcheck]

+

选择编译目标版本。

+

-3rd

+

${代码路径}/binarylibs

+

[binarylibs path]

+

指定binarylibs的路径,需绝对路径。

+

-pkg

+

不使用此功能

+

-

+

将代码编译结果压缩封装成安装包。

+

--no_om_adapt

+

不使用此选项

+

-

+

安装包不去适配om,仅在添加-pkg选项时生效。

+
+ +>![](public_sys-resources/icon-note.gif) **说明:** +>1. -m \[debug | release | memcheck\] 表示可选择三种目标版本: +> - release: 代表生成release版本的二进制程序,该版本编译时,配置GCC高级别优化选项,去除内核调试代码,通常用于生成环境或性能测试环境。 +> - debug:代表生成debug版本的二进制程序,该版本编译时,增加内核代码调试功能,通常用于开发自测环境。 +> - memcheck:代表生成memcheck版本的二进制程序,该版本编译时,在debug版本基础上新增ASAN功能,通常用于定位内存问题。 +>2. -3rd \[binarylibs path\] 为binarylibs的路径。缺省情况下,当前代码文件夹下存在binarylibs。如果将binarylibs移动到openGauss-server下,或在openGauss-server下创建了指向binarylibs的软链接,可不指定此选项。但需要注意其容易被git clean等操作删除。 +>3. 此脚本每个参数选项都设置了缺省值,且数量并不多,依赖关系简单,因此使用时非常方便。如果用户需求值与缺省值不同,请根据实际情况进行设置。 + diff --git "a/content/zh/docs/Compilationguide/figures/\347\273\230\345\233\2761.png" "b/content/zh/docs/Compilationguide/figures/\347\273\230\345\233\2761.png" new file mode 100644 index 0000000000000000000000000000000000000000..8faf34a3f75974cb6b4c5f3f081f384691e5db48 Binary files /dev/null and "b/content/zh/docs/Compilationguide/figures/\347\273\230\345\233\2761.png" differ diff --git "a/content/zh/docs/Compilationguide/\344\272\247\345\223\201\345\256\211\350\243\205\345\214\205\347\274\226\350\257\221.md" "b/content/zh/docs/Compilationguide/\344\272\247\345\223\201\345\256\211\350\243\205\345\214\205\347\274\226\350\257\221.md" index 4b81d57425f2856f0a2f25b460f2b4fab54f8906..e0f814c2dc6edc1256d3a5720c11a9d04a91d7cb 100644 --- "a/content/zh/docs/Compilationguide/\344\272\247\345\223\201\345\256\211\350\243\205\345\214\205\347\274\226\350\257\221.md" +++ "b/content/zh/docs/Compilationguide/\344\272\247\345\223\201\345\256\211\350\243\205\345\214\205\347\274\226\350\257\221.md" @@ -1,41 +1,46 @@ # 产品安装包编译 -安装包编译即将代码编译生成软件安装包。 +安装包编译即将代码编译生成软件安装包,安装包的编译打包过程也集成在build.sh之中。 ## 前提条件 -- 已按照[搭建编译环境](搭建编译环境.md)的要求准备好相关软硬件。 -- 已下载代码和子仓库,具体请参见[代码下载](代码下载.md)。 -- 已完成开源软件编译构建。 +- 已按照[搭建编译环境](搭建编译环境.md)的要求准备好相关软硬件,并且已经参考[代码下载](代码下载.md) 下载了代码。 +- 已完成开源软件编译构建,具体请参见[开源软件编译构建](开源软件编译构建.md)。 +- 了解 [build.sh](build-sh介绍.md) 脚本的参数选项和功能。 +- 代码环境干净,没有以前编译生成的文件。具体请参见[FAQ 4.1](如何清除编译过程中生成的临时文件.md)。 ## 操作步骤 -1. 执行如下命令进入到安装包代码编译脚本目录。 +1. 执行如下命令进入到代码目录。 ``` - [user@linux sda]$ cd /sda/openGauss-server/package + [user@linux sda]$ cd /sda/openGauss-server ``` -2. 执行如下命令,编译出openGauss安装包。 +2. 执行如下命令编译出openGauss产品安装包。 ``` - [user@linux package]$ sh package_gaussdb_single.sh -m [debug | release | memcheck] + [user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path] -pkg + ``` + + 例如: + + ``` + sh build.sh -pkg # 生成release版本的openGauss安装包。需代码目录下有binarylibs或者其软链接,否则将会失败。 ``` >![](public_sys-resources/icon-note.gif) **说明:** - >_\[debug | release | memcheck\]_可选择三种目标版本,三种目标版本如下所示: - >- release: 代表生成release版本的二进制程序,该版本编译时,配置GCC高级别优化选项,去除内核调试代码,通常用于生成环境或性能测试环境。 - >- debug:代表生成debug版本的二进制程序,该版本编译时,增加内核代码调试功能,通常用于开发自测环境; - >- memcheck:代表生成memcheck版本的二进制程序,该版本编译时,在debug版本基础上新增ASAN功能,通常用于定位内存问题。 + >可通过添加 --no\_om\_adapt 选项指定安装包不适配om。 + >此步骤会经历上一章节所介绍的一键式编译最终生成软件的过程、与将软件封装成安装包的过程。 -3. 显示如下内容,表示编译成功。 +3. 显示如下内容,表示安装包编译成功。 ``` success! ``` - - 更多详细命令参数可参照 –h。 - - 生成的安装包会存放在当前目录下。 - - 编译日志为:make\_package.log + - 生成的安装包会存放在./package目录下。 + - 编译日志为:make\_compile.log + - 安装包打包日志为:./package/make\_package.log diff --git "a/content/zh/docs/Compilationguide/\344\273\243\347\240\201\344\270\213\350\275\275.md" "b/content/zh/docs/Compilationguide/\344\273\243\347\240\201\344\270\213\350\275\275.md" index e437de429e2be3065ca9cd1b150a972f57293f2b..0d7ffe6c262d89865388494d2c79e7f6c0414bbc 100644 --- "a/content/zh/docs/Compilationguide/\344\273\243\347\240\201\344\270\213\350\275\275.md" +++ "b/content/zh/docs/Compilationguide/\344\273\243\347\240\201\344\270\213\350\275\275.md" @@ -2,18 +2,23 @@ ## 前提条件 -已在本地安装并配置git和git-lfs,熟悉git submodule的应用。 +已在本地安装并配置git和git-lfs。 ## 操作步骤 -1. 执行如下命令下载代码和子仓库,其中_\[git ssh address\]_表示实际代码下载地址,_openGauss-server_表示代码下载后的存放位置。此处举例代码下载到的本地路径为 /sda/openGauss-server, 下文将直接使用此路径。 +1. 执行如下命令下载代码和开源第三方软件仓库等,其中_\[git ssh address\]_表示实际代码下载地址,可在openGauss社区获取这些地址。 ``` [user@linux sda]$ git clone [git ssh address] openGauss-server - [user@linux sda]$ cd openGauss-server - [user@linux openGauss-server]$ git submodule init - [user@linux openGauss-server]$ git submodule update + [user@linux sda]$ git clone [git ssh address] openGauss-third_party + [user@linux sda]$ git clone [git ssh address] openGauss-third_party_binarylibs + [user@linux sda]$ mv openGauss-third_party_binarylibs binarylibs ``` + >![](public_sys-resources/icon-note.gif) **说明:** + >- openGauss-server:openGauss的代码仓库。 + >- openGauss-third\_party:openGauss依赖的开源第三方软件仓库。 + >- openGauss-third\_party\_binarylibs:编译好的开源第三方软件仓库。用户可以通过[开源软件编译构建](开源软件编译构建.md)获取这些文件,也可在直接在此仓库下载获取。在这里为了缩短名称,并且和开源第三方软件仓库编译输出的目标位置保持一致,将其重命名为binarylibs。 + 2. 下载项进度均显示为100%时表示下载成功。 diff --git "a/content/zh/docs/Compilationguide/\345\246\202\344\275\225\346\270\205\351\231\244\347\274\226\350\257\221\350\277\207\347\250\213\344\270\255\347\224\237\346\210\220\347\232\204\344\270\264\346\227\266\346\226\207\344\273\266.md" "b/content/zh/docs/Compilationguide/\345\246\202\344\275\225\346\270\205\351\231\244\347\274\226\350\257\221\350\277\207\347\250\213\344\270\255\347\224\237\346\210\220\347\232\204\344\270\264\346\227\266\346\226\207\344\273\266.md" index 7c3964f9e5e4fbaeb857f04ff00c7f1dec82c35f..01899f02b7534292d2f7128f48f93c55cecb59f3 100644 --- "a/content/zh/docs/Compilationguide/\345\246\202\344\275\225\346\270\205\351\231\244\347\274\226\350\257\221\350\277\207\347\250\213\344\270\255\347\224\237\346\210\220\347\232\204\344\270\264\346\227\266\346\226\207\344\273\266.md" +++ "b/content/zh/docs/Compilationguide/\345\246\202\344\275\225\346\270\205\351\231\244\347\274\226\350\257\221\350\277\207\347\250\213\344\270\255\347\224\237\346\210\220\347\232\204\344\270\264\346\227\266\346\226\207\344\273\266.md" @@ -6,7 +6,7 @@ ## 回答 -进入/sda/openGauss-server目录,执行如下命令清除编译过程中生成的临时文件。 +进入/sda/openGauss-server目录,选择执行如下命令清除编译过程中生成的临时文件。 - 删除由configure和make生成的文件。 diff --git "a/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-Configure-error-C-compiler-cannot-create-executables-\346\212\245\351\224\231.md" "b/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-Configure-error-C-compiler-cannot-create-executables-\346\212\245\351\224\231.md" new file mode 100644 index 0000000000000000000000000000000000000000..831a453b8937ba2331ad3faa2b2cdef47e49ad92 --- /dev/null +++ "b/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-Configure-error-C-compiler-cannot-create-executables-\346\212\245\351\224\231.md" @@ -0,0 +1,12 @@ +# 如何解决“Configure error: C compiler cannot create executables”报错 + +## 问题 + +如何解决版本编译时出现的“Configure error: C compiler cannot create executables”报错。 + +## 回答 + +报错原因:binarylibs文件不完整或者被损坏。 + +解决办法:若binarylibs是通过开源软件构建而来,请重新构建开源第三方软件。若binarylibs是代码下载而来,可以进入binarylibs文件夹内, 执行命令**git pull && git lfs pull**下载缺失的文件。重新执行当前脚本或命令。 + diff --git "a/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-Configure-error-Ccompiler-cannot-create-executables-\346\212\245\351\224\231.md" "b/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-Configure-error-Ccompiler-cannot-create-executables-\346\212\245\351\224\231.md" deleted file mode 100644 index d5d42c1f522fe4be34298b565fb2b41817ce1cdb..0000000000000000000000000000000000000000 --- "a/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-Configure-error-Ccompiler-cannot-create-executables-\346\212\245\351\224\231.md" +++ /dev/null @@ -1,12 +0,0 @@ -# 如何解决“Configure error: Ccompiler cannot create executables”报错 - -## 问题 - -如何解决版本编译时出现的“Configure error: Ccompiler cannot create executables”报错。 - -## 回答 - -报错原因:子仓库文件不完整或者被删除。 - -解决办法:进入/sda/openGauss-server/binarylibs, 执行命令**git pull && git lfs pull**下载缺失的文件,并重新执行当前脚本或命令。 - diff --git "a/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-g++-fatal-error-Killed-signal-terminated-program-cclplus-\346\212\245\351\224\231.md" "b/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-g++-fatal-error-Killed-signal-terminated-program-cclplus-\346\212\245\351\224\231.md" new file mode 100644 index 0000000000000000000000000000000000000000..704d0eecef6285bb02b6fb3b82c0d8a3f7a984ed --- /dev/null +++ "b/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-g++-fatal-error-Killed-signal-terminated-program-cclplus-\346\212\245\351\224\231.md" @@ -0,0 +1,12 @@ +# 如何解决 "g++: fatal error: Killed signal terminated program cclplus" 报错 + +## 问题 + +如何解决编译过程中出现的 "g++: fatal error: Killed signal terminated program cclplus" 报错。 + +## 回答 + +报错原因:脚本中的编译过程都添加了-sj参数,并发数太大导致错误。 + +解决办法:编译过程中降低make 并发数,或者直接使用make命令。使用一键式脚本的话需要修改脚本。 + diff --git "a/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-out-of-memory-allocating-xxx-bytes-after-a-total-of-xxx-bytes-\346\212\245\351\224\231.md" "b/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-out-of-memory-allocating-xxx-bytes-after-a-total-of-xxx-bytes-\346\212\245\351\224\231.md" new file mode 100644 index 0000000000000000000000000000000000000000..22505dbd70f24353188b7ccc510d48f0da5d65bb --- /dev/null +++ "b/content/zh/docs/Compilationguide/\345\246\202\344\275\225\350\247\243\345\206\263-out-of-memory-allocating-xxx-bytes-after-a-total-of-xxx-bytes-\346\212\245\351\224\231.md" @@ -0,0 +1,12 @@ +# 如何解决"out of memory allocating xxx bytes after a total of xxx bytes"报错 + +## 问题 + +如何解决编译过程中出现的"out of memory allocating xxx bytes after a total of xxx bytes"报错。 + +## 回答 + +报错原因:脚本中的编译过程都添加了-sj参数,同时机器配置较低,内存不足,并发数太大导致错误 + +解决办法:编译过程中降低make 并发数,或者直接使用make命令。使用一键式脚本的话需要修改脚本。 + diff --git "a/content/zh/docs/Compilationguide/\345\274\200\346\272\220\350\275\257\344\273\266\347\274\226\350\257\221\346\236\204\345\273\272.md" "b/content/zh/docs/Compilationguide/\345\274\200\346\272\220\350\275\257\344\273\266\347\274\226\350\257\221\346\236\204\345\273\272.md" new file mode 100644 index 0000000000000000000000000000000000000000..efcc337792a747630c47fcc145f48df035638557 --- /dev/null +++ "b/content/zh/docs/Compilationguide/\345\274\200\346\272\220\350\275\257\344\273\266\347\274\226\350\257\221\346\236\204\345\273\272.md" @@ -0,0 +1,76 @@ +# 开源软件编译构建 + +## 开源软件编译构建 + +openGauss的编译,需要提前把所依赖的开源第三方软件进行编译和构建。这些开源第三方软件存放在代码openGauss-third\_party代码仓中,并且用户通常只需要构建一次。若存在开源软件版本更新,则需要重新构建。 + +用户也可以直接在binarylibs仓库中直接获取开源软件编译构建的输出文件,则可以跳过这一个步骤,参考[3.1.1代码下载](代码下载.md)。 + +**表 1** openGauss开源三方件编译前置软件要求 + + + + + + + + + + + + + + + + + + + + + + + + + +

所需软件

+

建议版本

+

python3

+

建议版本:3.6

+

python3-dev

+

建议版本:3.x

+

pam-devl

+

建议版本:1.1.8-1.3.1

+

ncurses-devel

+

建议版本:5.9-13.20130511

+

libffi-dev

+

建议版本:3.1

+

patch

+

建议版本:2.7.1-10

+
+ +执行如下命令进入内核依赖的开源第三方软件目录,进行开源第三方软件的编译和构建,产生相应的二进制程序或库文件。/sda/openGauss-third\_party为开源第三方软件下载目录。 + +``` +[user@linux sda]$ cd /sda/openGauss-third_party/build +[user@linux sda]$ sh build.sh +``` + +用户执行以上命令之后,可以自动生成数据库编译所需的开源第三方软件,如果想单独的生成某个开源三方软件,可以进入对应的目录,执行build.sh脚本,如: + +``` +[user@linux sda]$ cd /sda/openGauss-third_party/dependency/openssl +[user@linux sda]$ sh build.sh +``` + +即可编译生成openssl + +>![](public_sys-resources/icon-note.gif) **说明:** +>相关的报错日志可以查看对应的build目录下对应名字的log以及对应模块下的log,如dependency模块下的openssl的相关编译安装日志可以查看: +>- /sda/openGauss-third\_party/build/dependency\_build.log +>- /sda/openGauss-third\_party/dependency/build/openssl\_build.log +>- /sda/openGauss-third\_party/dependency/openssl/build\_openssl.log + +## 编译构建结果 + +执行上述脚本,最终编译构建出的结果会存放在openGauss-third\_party同级的binarylibs目录。这些文件会在后面编译openGauss-server时使用到。 + diff --git "a/content/zh/docs/Compilationguide/\346\246\202\350\277\260.md" "b/content/zh/docs/Compilationguide/\346\246\202\350\277\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..8e68991021a73b047ca774e364cc319fdf084f63 --- /dev/null +++ "b/content/zh/docs/Compilationguide/\346\246\202\350\277\260.md" @@ -0,0 +1,4 @@ +# 概述 + +本文档介绍了openGauss对于操作系统的要求、编译环境的要求、软件依赖、编译方法以及编译结果的存放位置等。 + diff --git "a/content/zh/docs/Compilationguide/\347\211\210\346\234\254\347\274\226\350\257\221.md" "b/content/zh/docs/Compilationguide/\347\211\210\346\234\254\347\274\226\350\257\221.md" index 0b3d9b971ab01aa38e8df679c7ad6867901c503a..0765a845ffb5b8b705bbb00c5b0403a5e7550c03 100644 --- "a/content/zh/docs/Compilationguide/\347\211\210\346\234\254\347\274\226\350\257\221.md" +++ "b/content/zh/docs/Compilationguide/\347\211\210\346\234\254\347\274\226\350\257\221.md" @@ -2,7 +2,9 @@ openGauss的编译过程和生成安装包的过程已经写成了两个一键式的脚本,可以方便的通过脚本进行编译操作。也可以自己配置环境变量,通过命令进行编译。 -本章节会介绍openGauss编译需要满足的前提条件,编译的操作步骤等。 +本章节会介绍openGauss编译需要满足的前提条件,编译的操作步骤等,下图是对编译流程的大致概括,详细内容见下文。 + +![](figures/绘图1.png) - **[编译前准备](编译前准备.md)** diff --git "a/content/zh/docs/Compilationguide/\347\233\256\347\232\204.md" "b/content/zh/docs/Compilationguide/\347\233\256\347\232\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..09a6c1585dc6aec83bbeb7b98d7538c08ab93efe --- /dev/null +++ "b/content/zh/docs/Compilationguide/\347\233\256\347\232\204.md" @@ -0,0 +1,4 @@ +# 目的 + +本文档帮助读者快速了解编译openGauss所需的软硬件要求、环境配置,以及如何从源码编译出软件或者安装包。 + diff --git "a/content/zh/docs/Compilationguide/\347\256\200\344\273\213.md" "b/content/zh/docs/Compilationguide/\347\256\200\344\273\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..fb53df15e218facd6c4ce9ee1f9665ba2492887c --- /dev/null +++ "b/content/zh/docs/Compilationguide/\347\256\200\344\273\213.md" @@ -0,0 +1,7 @@ +# 简介 + +- **[目的](目的.md)** + +- **[概述](概述.md)** + + diff --git "a/content/zh/docs/Compilationguide/\347\274\226\350\257\221\345\211\215\345\207\206\345\244\207.md" "b/content/zh/docs/Compilationguide/\347\274\226\350\257\221\345\211\215\345\207\206\345\244\207.md" index 1b2d6fdcd40820ae23219a8d124fb1e43b48fd15..f775e8a788db5f737967d11bda468a3ca121b003 100644 --- "a/content/zh/docs/Compilationguide/\347\274\226\350\257\221\345\211\215\345\207\206\345\244\207.md" +++ "b/content/zh/docs/Compilationguide/\347\274\226\350\257\221\345\211\215\345\207\206\345\244\207.md" @@ -2,4 +2,8 @@ - **[代码下载](代码下载.md)** +- **[开源软件编译构建](开源软件编译构建.md)** + +- **[build.sh介绍](build-sh介绍.md)** + diff --git "a/content/zh/docs/Compilationguide/\350\275\257\344\273\266\344\276\235\350\265\226\350\246\201\346\261\202.md" "b/content/zh/docs/Compilationguide/\350\275\257\344\273\266\344\276\235\350\265\226\350\246\201\346\261\202.md" index 8562aa09a76f9f0b7f26752b5b695f64a56d6f33..306e023f822f43202c03ad0a5a4c2077e0ed8066 100644 --- "a/content/zh/docs/Compilationguide/\350\275\257\344\273\266\344\276\235\350\265\226\350\246\201\346\261\202.md" +++ "b/content/zh/docs/Compilationguide/\350\275\257\344\273\266\344\276\235\350\265\226\350\246\201\346\261\202.md" @@ -13,12 +13,7 @@ -

libaio

- -

建议版本:0.3.109-13

- - -

libaio-devel

+

libaio-devel

建议版本:0.3.109-13

@@ -38,29 +33,19 @@

建议版本:5.9-13.20130511

-

zlib-devel

- -

建议版本:1.2.7-15

- - -

glibc

+

glibc.devel

建议版本:2.17-111

-

glibc.i686

- -

建议版本:2.17-111

- - -

glibc.devel*

+

patch

-

建议版本:2.17-111

+

建议版本:2.7.1-10

-

patch

+

lsb_release

-

建议版本:2.7.1-10

+

建议版本:4.1

diff --git "a/content/zh/docs/Compilationguide/\350\275\257\344\273\266\345\256\211\350\243\205\347\274\226\350\257\221.md" "b/content/zh/docs/Compilationguide/\350\275\257\344\273\266\345\256\211\350\243\205\347\274\226\350\257\221.md" index e8e37ae64308e1c3272c28572944fa7640802a0f..c564e890600520986514d724b7c547e7f6ded7d4 100644 --- "a/content/zh/docs/Compilationguide/\350\275\257\344\273\266\345\256\211\350\243\205\347\274\226\350\257\221.md" +++ "b/content/zh/docs/Compilationguide/\350\275\257\344\273\266\345\256\211\350\243\205\347\274\226\350\257\221.md" @@ -4,9 +4,10 @@ ## 前提条件 -- 已按照[搭建编译环境](搭建编译环境.md)的要求准备好相关软硬件。 -- 已下载代码和子仓库。具体请参见[代码下载](代码下载.md)。 -- 已完成开源软件编译构建。 +- 已按照[搭建编译环境](搭建编译环境.md)的要求准备好相关软硬件,并且已参考[代码下载](代码下载.md) 下载了代码。 +- 已完成开源软件编译构建,具体请参见[开源软件编译构建](开源软件编译构建.md)。 +- 了解 [build.sh](build-sh介绍.md) 脚本的参数选项和功能。 +- 代码环境干净,没有以前编译生成的文件。具体请参见[FAQ 4.1](如何清除编译过程中生成的临时文件.md)。 ## 一键式脚本编译 @@ -19,14 +20,14 @@ 2. 执行如下命令,编译安装openGauss。 ``` - [user@linux openGauss-server]$ sh build.sh [debug | release | memcheck] + [user@linux openGauss-server]$ sh build.sh -m [debug | release | memcheck] -3rd [binarylibs path] ``` - >![](public_sys-resources/icon-note.gif) **说明:** - >_\[debug | release | memcheck\]_表示可选择三种目标版本,三种目标版本如下所示: - >- release: 代表生成release版本的二进制程序,该版本编译时,配置GCC高级别优化选项,去除内核调试代码,通常用于生成环境或性能测试环境。 - >- debug:代表生成debug版本的二进制程序,该版本编译时,增加内核代码调试功能,通常用于开发自测环境; - >- memcheck:代表生成memcheck版本的二进制程序,该版本编译时,在debug版本基础上新增ASAN功能,通常用于定位内存问题。 + 例如: + + ``` + sh build.sh -pkg # 生成release版本的openGauss安装包。需代码目录下有binarylibs或者其软链接,否则将会失败。 + ``` 3. 显示如下内容,表示编译成功。 @@ -55,19 +56,19 @@ >![](public_sys-resources/icon-note.gif) **说明:** >- 显示的结果表示openGauss当前支持的操作系统,openGauss支持的操作系统为centos7.6\_x86\_64、openeuler\_aarch64。 - >- 如果结果显示为 Failed,表示当前操作系统不支持。 + >- 如果结果显示为 Failed 或者其他版本,表示openGauss不支持当前操作系统。 -3. 配置环境变量,将[步骤2](#li1666842982511)获取到的结果替换下面的**\*\*\***。 +3. 配置环境变量,根据自己的代码下载位置补充两处"\_\_\_\_",将[步骤2](#li1666842982511)获取到的结果替换下面的**\*\*\***。 ``` - export CODE_BASE=`pwd` - export GCC_PATH=$CODE_BASE/binarylibs/buildtools/***/gcc8.2/ + export CODE_BASE=________ # openGauss-server的路径 + export BINARYLIBS=________ # binarylibs的路径 + export GAUSSHOME=$CODE_BASE/dest/ + export GCC_PATH=$BINARYLIBS/buildtools/***/gcc8.2/ export CC=$GCC_PATH/gcc/bin/gcc export CXX=$GCC_PATH/gcc/bin/g++ - export LD_LIBRARY_PATH=$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib/:$GCC_PATH/mpfr/lib/:$GCC_PATH/gmp/lib/:$LD_LIBRARY_PATH - export PATH=$CODE_BASE/dest/bin:$GCC_PATH/gcc/bin:$PATH - export LD_LIBRARY_PATH=$CODE_BASE/dest/lib:$LD_LIBRARY_PATH - export GAUSSHOME=$CODE_BASE/dest/ + export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib/:$GCC_PATH/mpfr/lib/:$GCC_PATH/gmp/lib/:$LD_LIBRARY_PATH + export PATH=$GAUSSHOME/bin:$GCC_PATH/gcc/bin:$PATH ``` 4. 选择版本进行configure。 @@ -75,27 +76,29 @@ debug版: ``` - ./configure --gcc-version=8.2.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --enable-debug --enable-cassert --enable-thread-safety --without-readline --without-zlib + ./configure --gcc-version=8.2.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --without-readline --without-zlib ``` release版: ``` - ./configure --gcc-version=8.2.0 CC=g++ CFLAGS="-O2 -g3" --prefix=$GAUSSHOME --enable-thread-safety --without-readline --without-zlib + ./configure --gcc-version=8.2.0 CC=g++ CFLAGS="-O2 -g3" --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-thread-safety --without-readline --without-zlib ``` memcheck版: ``` - ./configure --gcc-version=8.2.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --enable-debug --enable-cassert --enable-thread-safety --without-readline --without-zlib --enable-memory-check + ./configure --gcc-version=8.2.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --without-readline --without-zlib --enable-memory-check ``` >![](public_sys-resources/icon-note.gif) **说明:** - >_\[debug | release | memcheck\]_表示可选择三种目标版本,三种目标版本如下所示: - >- release: 代表生成release版本的二进制程序,该版本编译时,配置GCC高级别优化选项,去除内核调试代码,通常用于生成环境或性能测试环境。 - >- debug:代表生成debug版本的二进制程序,该版本编译时,增加内核代码调试功能,通常用于开发自测环境; - >- memcheck:代表生成memcheck版本的二进制程序,该版本编译时,在debug版本基础上新增ASAN功能,通常用于定位内存问题。 - >在ARM平台上,release版本的CFLAGS需要添加 -D\_\_USE\_NUMA 。 + >1. _\[debug | release | memcheck\]_ 表示可选择三种目标版本,三种目标版本如下所示: + > - release: 代表生成release版本的二进制程序,该版本编译时,配置GCC高级别优化选项,去除内核调试代码,通常用于生成环境或性能测试环境。 + > - debug:代表生成debug版本的二进制程序,该版本编译时,增加内核代码调试功能,通常用于开发自测环境; + > - memcheck:代表生成memcheck版本的二进制程序,该版本编译时,在debug版本基础上新增ASAN功能,通常用于定位内存问题。 + >2. 在ARM平台上,CFLAGS需要添加 -D\_\_USE\_NUMA 。 + >3. 在ARMv8.1或者更高的平台上\(例如鲲鹏920\),CFLAGS需要添加 -D\_\_ARM\_LSE 。 + >4. 若将binarylibs移动到openGauss-server下,或在openGauss-server下创建了指向binarylibs的软链接,可不指定--3rd参数。但这样做的话需要注意其容易被git clean等操作删除。 5. 执行如下命令,编译安装。 @@ -107,7 +110,7 @@ 6. 显示如下内容,表示编译安装成功。 ``` - PostgreSQL installation complete. + openGauss installation complete. ``` - 编译后软件安装路径为:$GAUSSHOME diff --git "a/content/zh/docs/Description/figures/openGauss\350\241\214\345\210\227\346\267\267\345\255\230\345\274\225\346\223\216.png" "b/content/zh/docs/Description/figures/openGauss\350\241\214\345\210\227\346\267\267\345\255\230\345\274\225\346\223\216.png" new file mode 100644 index 0000000000000000000000000000000000000000..5548dd618a66f9b849bb1ce2f61c5df4ac8f7cf9 Binary files /dev/null and "b/content/zh/docs/Description/figures/openGauss\350\241\214\345\210\227\346\267\267\345\255\230\345\274\225\346\223\216.png" differ diff --git "a/content/zh/docs/Description/figures/openGauss\351\200\273\350\276\221\346\236\266\346\236\204\345\233\276.png" "b/content/zh/docs/Description/figures/openGauss\351\200\273\350\276\221\346\236\266\346\236\204\345\233\276.png" index b9f5fabba75f4afadc909a3e0383263f2cf03cf6..27620cd425fe1d95d3ddcef802b04a4d9814e0c6 100644 Binary files "a/content/zh/docs/Description/figures/openGauss\351\200\273\350\276\221\346\236\266\346\236\204\345\233\276.png" and "b/content/zh/docs/Description/figures/openGauss\351\200\273\350\276\221\346\236\266\346\236\204\345\233\276.png" differ diff --git "a/content/zh/docs/Description/figures/\345\220\221\351\207\217\345\214\226\346\211\247\350\241\214\345\274\225\346\223\216(png).png" "b/content/zh/docs/Description/figures/\345\220\221\351\207\217\345\214\226\346\211\247\350\241\214\345\274\225\346\223\216(png).png" new file mode 100644 index 0000000000000000000000000000000000000000..15f00737bff05383fc4c3cdf3bf9cdfd1434cdc0 Binary files /dev/null and "b/content/zh/docs/Description/figures/\345\220\221\351\207\217\345\214\226\346\211\247\350\241\214\345\274\225\346\223\216(png).png" differ diff --git "a/content/zh/docs/Description/\344\270\273\345\244\207\345\217\214\346\234\272.md" "b/content/zh/docs/Description/\344\270\273\345\244\207\345\217\214\346\234\272.md" index 526316dcc8e541e8628c5309430c5395b89b08a6..2e51eaea311ea76dead01a09b47be634973dfb53 100644 --- "a/content/zh/docs/Description/\344\270\273\345\244\207\345\217\214\346\234\272.md" +++ "b/content/zh/docs/Description/\344\270\273\345\244\207\345\217\214\346\234\272.md" @@ -1,6 +1,6 @@ # 主备双机 -主备双机支持同步和异步复制,应用可以根据业务场景选择合适的部署方式。同步复制保证数据的高可靠,一般需要一主两备部署,同时对性能有一定影响。异步复制一主一备部署即可,对性能影响小,但异常时可能存在数据丢失。openGauss支持页面损坏的自动修复,在主机页面发生损坏时,能够自动从备机修复损坏页面。openGauss支持备机并行日志恢复,尽量降低主机宕机时业务不可用的时间。 +主备双机支持同步和异步复制,应用可以根据业务场景选择合适的部署方式。同步复制保证数据的高可靠,一般需要一主两备部署,同时对性能有一定影响。异步复制一主一备部署即可,对性能影响小,但异常时可能存在数据丢失。openGauss支持页面损坏的自动修复,在主机页面发生损坏时,能够自动从备机修复损坏页面。openGauss支持备机并行日志恢复,尽量降低主机故障时业务不可用的时间。 同时,如果按照主备模式部署,并打开备机可读功能后,备机将能够提供读操作,但不支持写操作(如建表、插入数据、删除数据等),从而缓解主机上的压力。 diff --git "a/content/zh/docs/Description/\345\220\221\351\207\217\345\214\226\346\211\247\350\241\214\345\222\214\350\241\214\345\210\227\346\267\267\345\220\210\345\274\225\346\223\216.md" "b/content/zh/docs/Description/\345\220\221\351\207\217\345\214\226\346\211\247\350\241\214\345\222\214\350\241\214\345\210\227\346\267\267\345\220\210\345\274\225\346\223\216.md" index ec81a7f9f898440d4965ad621a701dc952e69f9f..9f68c7c90cffa11aed58461720a220a1a0995482 100644 --- "a/content/zh/docs/Description/\345\220\221\351\207\217\345\214\226\346\211\247\350\241\214\345\222\214\350\241\214\345\210\227\346\267\267\345\220\210\345\274\225\346\223\216.md" +++ "b/content/zh/docs/Description/\345\220\221\351\207\217\345\214\226\346\211\247\350\241\214\345\222\214\350\241\214\345\210\227\346\267\267\345\220\210\345\274\225\346\223\216.md" @@ -11,7 +11,9 @@ 而向量化执行相对于传统的执行模式改变是对于一次一元组的模型修改为一次一批元组,配合列存特性,可以带来巨大的性能提升。 **图 1** 向量化执行引擎 -![](figures/向量化执行引擎.jpg "向量化执行引擎") + + +![](figures/向量化执行引擎(png).png) ## 行列混合存储引擎 @@ -22,7 +24,9 @@ openGauss支持行存储和列存储两种存储模型,用户可以根据应 如[图2](#zh-cn_topic_0237080624_zh-cn_topic_0231764690_zh-cn_topic_0059777898_fbb2af39ce12a419cb437829aaf1cf4fb)所示,行列混合存储引擎可以同时为用户提供更优的数据压缩比(列存)、更好的索引性能(列存)、更好的点更新和点查询(行存)性能。 **图 2** 行列混存引擎 -![](figures/行列混存引擎.jpg "行列混存引擎") + + +![](figures/openGauss行列混存引擎.png) 当前列存储引擎有以下约束: diff --git "a/content/zh/docs/Description/\345\237\272\346\234\254\345\212\237\350\203\275\345\222\214\347\211\271\346\200\247.md" "b/content/zh/docs/Description/\345\237\272\346\234\254\345\212\237\350\203\275\345\222\214\347\211\271\346\200\247.md" index e2761055775da4f50e2400efe21e4677a2e8af80..3b760aa9f9e06990bae5b27af66b176fdc7f8238 100644 --- "a/content/zh/docs/Description/\345\237\272\346\234\254\345\212\237\350\203\275\345\222\214\347\211\271\346\200\247.md" +++ "b/content/zh/docs/Description/\345\237\272\346\234\254\345\212\237\350\203\275\345\222\214\347\211\271\346\200\247.md" @@ -27,6 +27,7 @@ openGauss是一个单机数据库,具备关系型数据库的基本功能, 提供安装部署工具、实例启停工具、备份恢复工具。 - 安全管理 - - 支持SSL安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。 + + 支持SSL安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。 diff --git "a/content/zh/docs/Description/\346\225\260\346\215\256\345\210\206\345\214\272.md" "b/content/zh/docs/Description/\346\225\260\346\215\256\345\210\206\345\214\272.md" index f08d444d4288a1b8762b65b27d4ab975df501c73..9becf870cf476c398e14afb4a8073042a828b701 100644 --- "a/content/zh/docs/Description/\346\225\260\346\215\256\345\210\206\345\214\272.md" +++ "b/content/zh/docs/Description/\346\225\260\346\215\256\345\210\206\345\214\272.md" @@ -44,6 +44,5 @@ openGauss支持范围分区(Range Partitioning)功能,即根据表的一 分区剪枝:分区剪枝(也称为分区消除)是openGauss在执行时过滤掉不需要扫描的分区,只对相关的分区进行扫描的技术。分区剪枝通常可以将查询性能提高若干数量级。 - 智能化分区联接:通过使用一种称为智能化分区联接的技术,分区还可以改善多表联接的性能。当将两个表联接在一起,并且至少其中一个表使用联接键进行分区时,可以应用智能化分区联接。智能化分区联接将一个大型联接分为多个较小的联接,这些较小的联接包含与联接的表“相同”的数据集。这里,“相同”定义为恰好包含联接的两端中相同的分区键值集,因此可以确保只有这些“相同”数据集的联接才会有效,而不必考虑其他数据集。 - +- **智能化分区联接:**通过使用一种称为智能化分区联接的技术,分区还可以改善多表联接的性能。当将两个表联接在一起,并且至少其中一个表使用联接键进行分区时,可以应用智能化分区联接。智能化分区联接将一个大型联接分为多个较小的联接,这些较小的联接包含与联接的表“相同”的数据集。这里,“相同”定义为恰好包含联接的两端中相同的分区键值集,因此可以确保只有这些“相同”数据集的联接才会有效,而不必考虑其他数据集。 diff --git "a/content/zh/docs/Developerguide/AI\347\211\271\346\200\247.md" "b/content/zh/docs/Developerguide/AI\347\211\271\346\200\247.md" index f3de1de370c7a78b4d79b3036e4a900c9eac74cd..42d5c2390d782d213aab1133f1b342c866ca7d8e 100644 --- "a/content/zh/docs/Developerguide/AI\347\211\271\346\200\247.md" +++ "b/content/zh/docs/Developerguide/AI\347\211\271\346\200\247.md" @@ -1,5 +1,9 @@ # AI特性 -- **[SQL执行时间预测特性](SQL执行时间预测特性.md)** +- **[Predictor](Predictor.md)** + +- **[X-Tuner](X-Tuner.md)** + +- **[Sqldiag](Sqldiag.md)** diff --git a/content/zh/docs/Developerguide/ALTER-DATA-SOURCE.md b/content/zh/docs/Developerguide/ALTER-DATA-SOURCE.md index 123c50d1da26533523cfd42069c1a4685cf55f82..45cebbdc655ea006e744760150db98c78d6134f1 100644 --- a/content/zh/docs/Developerguide/ALTER-DATA-SOURCE.md +++ b/content/zh/docs/Developerguide/ALTER-DATA-SOURCE.md @@ -1,18 +1,18 @@ # ALTER DATA SOURCE -## **功能描述** +## 功能描述 修改Data Source对象的属性和内容。 属性有:名称和属主;内容有:类型、版本和连接选项。 -## **注意选项** +## 注意选项 - 只有初始用户/系统管理员/属主才拥有修改Data Source的权限。 - 修改属主时,新的属主用户必须是初始用户或系统管理员。 -- 当在OPTIONS中出现password选项时,需要保证openGauss每个节点的$GAUSSHOME/bin目录下存在datasource.key.cipher和datasource.key.rand文件,如果不存在这两个文件,请使用gs\_guc工具生成并使用gs\_ssh工具发布到openGauss每个节点的$GAUSSHOME/bin目录下。 +- 当在OPTIONS中出现password选项时,需要保证openGauss每个节点的$GAUSSHOME/bin目录下存在datasource.key.cipher和datasource.key.rand文件,如果不存在这两个文件,请使用gs\_guc工具生成并使用gs\_ssh工具发布到每个节点的$GAUSSHOME/bin目录下。 -## **语法格式** +## 语法格式 ``` ALTER DATA SOURCE src_name @@ -23,7 +23,7 @@ ALTER DATA SOURCE src_name RENAME TO src_new_name; ALTER DATA SOURCE src_name OWNER TO new_owner; ``` -## **参数说明** +## 参数说明 - **src\_name** @@ -66,7 +66,7 @@ ALTER DATA SOURCE src_name OWNER TO new_owner; 取值范围:字符串,有效的用户名。 -## **示例** +## 示例 ``` --创建一个空Data Source对象。 @@ -97,7 +97,7 @@ postgres=# DROP DATA SOURCE ds_test; postgres=# DROP USER user_test1; ``` -## **相关链接** +## 相关链接 -**[CREATE DATA SOURCE](CREATE-DATA-SOURCE.md#ZH-CN_TOPIC_0242370564)**,**[DROP DATA SOURCE](DROP-DATA-SOURCE.md#ZH-CN_TOPIC_0242370599)** +[CREATE DATA SOURCE](CREATE-DATA-SOURCE.md),[DROP DATA SOURCE](DROP-DATA-SOURCE.md) diff --git a/content/zh/docs/Developerguide/ALTER-DATABASE.md b/content/zh/docs/Developerguide/ALTER-DATABASE.md index 62567648320311efd01d6864ce2d8f8ea9b21b2f..67ac84fd734476f41982d67d6682711756def025 100644 --- a/content/zh/docs/Developerguide/ALTER-DATABASE.md +++ b/content/zh/docs/Developerguide/ALTER-DATABASE.md @@ -138,5 +138,5 @@ ## 相关链接 -[CREATE DATABASE](CREATE-DATABASE.md),[DROP DATABASE](DROP-DATABASE.md#ZH-CN_TOPIC_0242370597) +[CREATE DATABASE](CREATE-DATABASE.md),[DROP DATABASE](DROP-DATABASE.md) diff --git a/content/zh/docs/Developerguide/ALTER-DEFAULT-PRIVILEGES.md b/content/zh/docs/Developerguide/ALTER-DEFAULT-PRIVILEGES.md index c80963f50038807a79fc2fa98443f70f9508d8c6..f772fa85856947a22c46ec69b42fc7d8737e409d 100644 --- a/content/zh/docs/Developerguide/ALTER-DEFAULT-PRIVILEGES.md +++ b/content/zh/docs/Developerguide/ALTER-DEFAULT-PRIVILEGES.md @@ -1,4 +1,4 @@ -# ALTER DEFAULT PRIVILEGES +# ALTER DEFAULT PRIVILEGES ## 功能描述 diff --git a/content/zh/docs/Developerguide/ALTER-DIRECTORY.md b/content/zh/docs/Developerguide/ALTER-DIRECTORY.md index ec687d8d75a4978d3ca057364c5e858298449895..7172605b1e338d836ad45b9b01b67b1f1f81cdae 100644 --- a/content/zh/docs/Developerguide/ALTER-DIRECTORY.md +++ b/content/zh/docs/Developerguide/ALTER-DIRECTORY.md @@ -37,5 +37,5 @@ postgres=# DROP DIRECTORY dir; ## 相关链接 -[CREATE DIRECTORY](CREATE-DIRECTORY.md#ZH-CN_TOPIC_0242370565),[DROP DIRECTORY](DROP-DIRECTORY.md#ZH-CN_TOPIC_0242370600) +[CREATE DIRECTORY](CREATE-DIRECTORY.md),[DROP DIRECTORY](DROP-DIRECTORY.md) diff --git a/content/zh/docs/Developerguide/ALTER-GROUP.md b/content/zh/docs/Developerguide/ALTER-GROUP.md index 0ac879efc41462fe04e7e0bad8b7721bf784c63f..7271cbaa70ffa67c9d688fcf8239bf338c41e399 100644 --- a/content/zh/docs/Developerguide/ALTER-GROUP.md +++ b/content/zh/docs/Developerguide/ALTER-GROUP.md @@ -37,7 +37,20 @@ ALTER GROUP是ALTER ROLE的别名,非SQL标准语法,不推荐使用,建 请参考ALTER ROLE的[参数说明](ALTER-ROLE.md#zh-cn_topic_0237122068_zh-cn_topic_0059778744_s50961af6143d4aafaf8fa02febbbf331)。 +## 示例 + +``` +--向用户组中添加用户。 +postgres=# ALTER GROUP super_users ADD USER lche, jim; + +--从用户组中删除用户。 +postgres=# ALTER GROUP super_users DROP USER jim; + +--修改用户组的名称。 +postgres=# ALTER GROUP super_users RENAME TO normal_users; +``` + ## 相关链接 -[CREATE GROUP](CREATE-GROUP.md#ZH-CN_TOPIC_0242370569),[DROP GROUP](DROP-GROUP.md#ZH-CN_TOPIC_0242370603),[ALTER ROLE](ALTER-ROLE.md#ZH-CN_TOPIC_0242370532) +[ALTER GROUP](ALTER-GROUP.md),[DROP GROUP](DROP-GROUP.md),[ALTER ROLE](ALTER-ROLE.md) diff --git a/content/zh/docs/Developerguide/ALTER-INDEX.md b/content/zh/docs/Developerguide/ALTER-INDEX.md index ffceb2467d1d11659d0dc17003e309111210e4ae..8991a8fb8e0221afb0b03a3494eaae9c6eee1c2a 100644 --- a/content/zh/docs/Developerguide/ALTER-INDEX.md +++ b/content/zh/docs/Developerguide/ALTER-INDEX.md @@ -161,5 +161,5 @@ ALTER INDEX用于修改现有索引的定义。 ## 相关链接 -[CREATE INDEX](CREATE-INDEX.md),[DROP INDEX](DROP-INDEX.md#ZH-CN_TOPIC_0242370604),[REINDEX](REINDEX.md) +[CREATE INDEX](CREATE-INDEX.md),[DROP INDEX](DROP-INDEX.md),[REINDEX](REINDEX.md) diff --git a/content/zh/docs/Developerguide/ALTER-ROLE.md b/content/zh/docs/Developerguide/ALTER-ROLE.md index d28804a9f07725fa0b8e0fda3fc014c39dc335c9..a7ddeaf4ec82c82b4756acf4d73decaeea5d4877 100644 --- a/content/zh/docs/Developerguide/ALTER-ROLE.md +++ b/content/zh/docs/Developerguide/ALTER-ROLE.md @@ -40,9 +40,7 @@ | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' - | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' - | NODE GROUP logic_cluster_name | ACCOUNT { LOCK | UNLOCK } | PGUSER ``` @@ -116,5 +114,5 @@ ## 相关链接 -[CREATE ROLE](CREATE-ROLE.md),[DROP ROLE](DROP-ROLE.md#ZH-CN_TOPIC_0242370611),[SET](SET.md) +[CREATE ROLE](CREATE-ROLE.md),[DROP ROLE](DROP-ROLE.md),[SET](SET.md) diff --git a/content/zh/docs/Developerguide/ALTER-ROW-LEVEL-SECURITY-POLICY.md b/content/zh/docs/Developerguide/ALTER-ROW-LEVEL-SECURITY-POLICY.md index b8139d66e58a737ee8f0f6dffeacaa15311ffe6a..b6d7b0e14dc7facde0e7ea8e6810aaf25b934437 100644 --- a/content/zh/docs/Developerguide/ALTER-ROW-LEVEL-SECURITY-POLICY.md +++ b/content/zh/docs/Developerguide/ALTER-ROW-LEVEL-SECURITY-POLICY.md @@ -103,5 +103,5 @@ Options: orientation=row, compression=no, enable_rowsecurity=true ## 相关链接 -[CREATE ROW LEVLEL SECURITY POLICY](CREATE-ROW-LEVLEL-SECURITY-POLICY.md),[DROP ROW LEVEL SECURITY POLICY](DROP-ROW-LEVEL-SECURITY-POLICY.md) +[CREATE ROW LEVEL SECURITY POLICY](CREATE-ROW-LEVEL-SECURITY-POLICY.md),[DROP ROW LEVEL SECURITY POLICY](DROP-ROW-LEVEL-SECURITY-POLICY.md) diff --git a/content/zh/docs/Developerguide/ALTER-SCHEMA.md b/content/zh/docs/Developerguide/ALTER-SCHEMA.md index 35d3f29cb6346656878bb827aef7422e705a9dcc..1ced6650a4e94001ab39690cd8ae31d536e0f16c 100644 --- a/content/zh/docs/Developerguide/ALTER-SCHEMA.md +++ b/content/zh/docs/Developerguide/ALTER-SCHEMA.md @@ -72,5 +72,5 @@ postgres=# DROP USER jack; ## 相关链接 -[CREATE SCHEMA](CREATE-SCHEMA.md#ZH-CN_TOPIC_0242370577),[DROP SCHEMA](DROP-SCHEMA.md#ZH-CN_TOPIC_0242370612) +[CREATE SCHEMA](CREATE-SCHEMA.md),[DROP SCHEMA](DROP-SCHEMA.md) diff --git a/content/zh/docs/Developerguide/ALTER-SEQUENCE.md b/content/zh/docs/Developerguide/ALTER-SEQUENCE.md index e1e9ff7118caa88e0d5f14f95315fa1dd082b435..61f8cda18329f857b8b79c723c811557201192c1 100644 --- a/content/zh/docs/Developerguide/ALTER-SEQUENCE.md +++ b/content/zh/docs/Developerguide/ALTER-SEQUENCE.md @@ -72,5 +72,5 @@ postgres=# DROP TABLE T1; ## 相关链接 -[CREATE SEQUENCE](CREATE-SEQUENCE.md#ZH-CN_TOPIC_0242370578),[DROP SEQUENCE](DROP-SEQUENCE.md#ZH-CN_TOPIC_0242370613) +[CREATE SEQUENCE](CREATE-SEQUENCE.md),[DROP SEQUENCE](DROP-SEQUENCE.md) diff --git a/content/zh/docs/Developerguide/ALTER-SESSION.md b/content/zh/docs/Developerguide/ALTER-SESSION.md index 4e8637afce2844b3f3c507f3bf49bd2ed9345a5f..e5490d840164e1e7cc83f2cbaf9fa9c5202932c3 100644 --- a/content/zh/docs/Developerguide/ALTER-SESSION.md +++ b/content/zh/docs/Developerguide/ALTER-SESSION.md @@ -15,7 +15,7 @@ ALTER SESSION命令用于定义或修改那些对当前会话有影响的条件 ``` ALTER SESSION SET [ SESSION CHARACTERISTICS AS ] TRANSACTION - { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED } | { READ ONLY | READ WRITE } } [, ...] ; + { ISOLATION LEVEL { READ COMMITTED } | { READ ONLY | READ WRITE } } [, ...] ; ``` - 设置会话的其他运行时参数。 @@ -23,9 +23,9 @@ ALTER SESSION命令用于定义或修改那些对当前会话有影响的条件 ``` ALTER SESSION SET {{config_parameter { { TO | = } { value | DEFAULT } - | FROM CURRENT }} | CURRENT_SCHEMA [ TO | = ] { schema | DEFAULT } + | FROM CURRENT }} | TIME ZONE time_zone - | SCHEMA schema + | CURRENT_SCHEMA schema | NAMES encoding_name | ROLE role_name PASSWORD 'password' | SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT } diff --git a/content/zh/docs/Developerguide/ALTER-SYNONYM.md b/content/zh/docs/Developerguide/ALTER-SYNONYM.md new file mode 100644 index 0000000000000000000000000000000000000000..993ce783efbfbf49c3d3751b5096dc85f8e21ae7 --- /dev/null +++ b/content/zh/docs/Developerguide/ALTER-SYNONYM.md @@ -0,0 +1,58 @@ +# ALTER SYNONYM + +## 功能描述 + +修改SYNONYM对象的属性。 + +## 注意事项 + +- 目前仅支持修改SYNONYM对象的属主。 +- 只有系统管理员有权限修改SYNONYM对象的属主信息。 +- 新属主必须具有SYNONYM对象所在模式的CREATE权限。 + +## 语法格式 + +``` +ALTER SYNONYM synonym_name + OWNER TO new_owner; +``` + +## 参数描述 + +- **synonym** + + 待修改的同义词名字,可以带模式名。 + + 取值范围:字符串,需要符合标识符的命名规范。 + + +- **new\_owner** + + 同义词对象的新所有者。 + + 取值范围:字符串,有效的用户名。 + + +## 示例 + +``` +--创建同义词t1。 +postgres=# CREATE OR REPLACE SYNONYM t1 FOR ot.t1; + +--创建新用户u1。 +postgres=# CREATE USER u1 PASSWORD 'user@111'; + +--修改同义词t1的owner为u1。 +postgres=# ALTER SYNONYM t1 OWNER TO u1; + +--删除同义词t1。 +postgres=# DROP SYNONYM t1; + +--删除用户u1。 +postgres=# DROP USER u1; +``` + +## 相关链接 + +[CREATE SYNONYM](CREATE-SYNONYM.md),[DROP SYNONYM](DROP-SYNONYM.md) + diff --git a/content/zh/docs/Developerguide/ALTER-SYSTEM-KILL-SESSION.md b/content/zh/docs/Developerguide/ALTER-SYSTEM-KILL-SESSION.md index 4230891f8ff8b548d5175c018e4122bc472d7189..6627b91eb51aca3769bf1f575ea4f23cce391719 100644 --- a/content/zh/docs/Developerguide/ALTER-SYSTEM-KILL-SESSION.md +++ b/content/zh/docs/Developerguide/ALTER-SYSTEM-KILL-SESSION.md @@ -18,9 +18,7 @@ ALTER SYSTEM KILL SESSION 'session_sid, serial' [ IMMEDIATE ]; - **session\_sid, serial** - 会话的SID和SERIAL(格式请参考示例)。 - - 取值范围:通过查看系统表V$SESSION可查看所有会话的SID和SERIAL。 + 会话的SID和SERIAL(获取方法请参考示例)。 - **IMMEDIATE** @@ -31,8 +29,9 @@ ALTER SYSTEM KILL SESSION 'session_sid, serial' [ IMMEDIATE ]; ``` --查询会话信息。 -postgres=# SELECT sid,serial#,username FROM V$SESSION; - +postgres=# +SELECT sa.sessionid AS sid,0::integer AS serial#,ad.rolname AS username FROM pg_stat_get_activity(NULL) AS sa +LEFT JOIN pg_authid ad ON(sa.usesysid = ad.oid)WHERE sa.application_name <> 'JobScheduler'; sid | serial# | username -----------------+---------+---------- 140131075880720 | 0 | omm diff --git a/content/zh/docs/Developerguide/ALTER-TABLE-PARTITION.md b/content/zh/docs/Developerguide/ALTER-TABLE-PARTITION.md index 443df8e04ac7cc93e1d7f0fbf41cda6dbf549b7a..74207a74323cbaa5bb1c684231e05fb7c2c6330d 100644 --- a/content/zh/docs/Developerguide/ALTER-TABLE-PARTITION.md +++ b/content/zh/docs/Developerguide/ALTER-TABLE-PARTITION.md @@ -199,7 +199,7 @@ - ENABLE:打开行迁移开关。 - DISABLE:关闭行迁移开关。 - 默认是关闭状态。 + 默认是打开状态。 - **ordinary\_table\_name** @@ -240,5 +240,5 @@ ## 相关链接 -[CREATE TABLE PARTITION](CREATE-TABLE-PARTITION.md),[DROP TABLE](DROP-TABLE.md#ZH-CN_TOPIC_0242370616) +[CREATE TABLE PARTITION](CREATE-TABLE-PARTITION.md),[DROP TABLE](DROP-TABLE.md) diff --git a/content/zh/docs/Developerguide/ALTER-TABLE.md b/content/zh/docs/Developerguide/ALTER-TABLE.md index ce296029c8a2f9c7f992c6c03853e2c2bd4ffdd5..608007e1cf23b8b9263550e7d744851be73e94a3 100644 --- a/content/zh/docs/Developerguide/ALTER-TABLE.md +++ b/content/zh/docs/Developerguide/ALTER-TABLE.md @@ -10,7 +10,6 @@ - 不能修改分区表的tablespace,但可以修改分区的tablespace。 - 不支持修改存储参数ORIENTATION。 - SET SCHEMA操作不支持修改为系统内部模式,当前仅支持用户模式之间的修改。 -- 不允许对表的分布列(distribute column)进行修改。 - 列存表只支持PARTIAL CLUSTER KEY表级约束,不支持主外键等表级约束。 - 列存表只支持添加字段ADD COLUMN、修改字段的数据类型ALTER TYPE、设置单个字段的收集目标SET STATISTICS、支持更改表名称、支持更改表空间,支持删除字段DROP COLUMN。对于添加的字段和修改的字段类型要求是列存支持的[数据类型](数据类型.md)。ALTER TYPE的USING选项只支持常量表达式和涉及本字段的表达式,暂不支持涉及其他字段的表达式。 - 列存表支持的字段约束包括NULL、NOT NULL和DEFAULT常量值;对字段约束的修改当前只支持对DEFAULT值的修改(SET DEFAULT)和删除(DROP DEFAULT),暂不支持对非空约束NULL/NOT NULL的修改。 @@ -44,7 +43,6 @@ | OWNER TO new_owner | SET TABLESPACE new_tablespace | SET {COMPRESS|NOCOMPRESS} - | TO { GROUP groupname | NODE ( nodename [, ... ] ) } | ADD NODE ( nodename [, ... ] ) | DELETE NODE ( nodename [, ... ] ) @@ -64,7 +62,7 @@ >- **ADD table\_constraint\_using\_index** > 根据已有唯一索引为表增加主键约束或唯一约束。 >- **VALIDATE CONSTRAINT constraint\_name** - > 验证一个外键或是一个使用NOT VALID选项创建的检查类约束,通过扫描全表来保证所有记录都符合约束条件。如果约束已标记为有效时,什么操作也不会发生。 + > 验证一个使用NOT VALID选项创建的检查类约束,通过扫描全表来保证所有记录都符合约束条件。如果约束已标记为有效时,什么操作也不会发生。 >- **DROP CONSTRAINT \[ IF EXISTS \] constraint\_name \[ RESTRICT | CASCADE \]** > 删除一个表上的约束。 >- **CLUSTER ON index\_name** @@ -110,7 +108,7 @@ 开启或关闭表的行访问控制开关。 - 当开启行访问控制开关时,如果未在该数据表定义相关行访问控制策略,数据表的行级访问将不受影响;如果关闭表的行访问控制开关,即使定义了行访问控制策略,数据表的行访问也不受影响。详细信息参见[CREATE ROW LEVLEL SECURITY POLICY](CREATE-ROW-LEVLEL-SECURITY-POLICY.md)章节。 + 当开启行访问控制开关时,如果未在该数据表定义相关行访问控制策略,数据表的行级访问将不受影响;如果关闭表的行访问控制开关,即使定义了行访问控制策略,数据表的行访问也不受影响。详细信息参见[CREATE ROW LEVEL SECURITY POLICY](CREATE-ROW-LEVEL-SECURITY-POLICY.md)章节。 - **| NO FORCE/FORCE ROW LEVEL SECURITY** @@ -147,7 +145,7 @@ >- **MODIFY \( \{ column\_name data\_type | column\_name \[ CONSTRAINT constraint\_name \] NOT NULL \[ ENABLE \] | column\_name \[ CONSTRAINT constraint\_name \] NULL \} \[, ...\] \)** > 修改表已存在字段的数据类型。 >- **DROP \[ COLUMN \] \[ IF EXISTS \] column\_name \[ RESTRICT | CASCADE \]** - > 从表中删除一个字段,和这个字段相关的索引和表约束也会被自动删除。如果任何表之外的对象依赖于这个字段,必须声明CASCADE ,比如外键参考、视图等。 + > 从表中删除一个字段,和这个字段相关的索引和表约束也会被自动删除。如果任何表之外的对象依赖于这个字段,必须声明CASCADE ,比如视图。 > DROP COLUMN命令并不是物理上把字段删除,而只是简单地把它标记为对SQL操作不可见。随后对该表的插入和更新将在该字段存储一个NULL。因此,删除一个字段是很快的,但是它不会立即释放表在磁盘上的空间,因为被删除了的字段占据的空间还没有回收。这些空间将在执行VACUUM时而得到回收。 >- **ALTER \[ COLUMN \] column\_name \[ SET DATA \] TYPE data\_type \[ COLLATE collation \] \[ USING expression \]** > 改变表字段的数据类型。该字段涉及的索引和简单的表约束将被自动地转换为使用新的字段类型,方法是重新分析最初提供的表达式。 diff --git a/content/zh/docs/Developerguide/ALTER-TABLESPACE.md b/content/zh/docs/Developerguide/ALTER-TABLESPACE.md index a6f27d397cbdacde8d940c73066f7776c99a3ede..c10a1c072c2fbc3b826cab470f9dc69a7214d564 100644 --- a/content/zh/docs/Developerguide/ALTER-TABLESPACE.md +++ b/content/zh/docs/Developerguide/ALTER-TABLESPACE.md @@ -6,7 +6,6 @@ ## 注意事项 -- 当前版本禁止使用ALTER TABLESPACE语法。 - 只有表空间的所有者有权限执行ALTER TABLESPACE命令,系统管理员默认拥有此权限。 - 要修改表空间的所有者A为B,则A必须是B的直接或者间接成员。 @@ -98,7 +97,7 @@ 取值范围: - - UNLIMITED,此表空间不设置限额。 + - UNLIMITED,该表空间不设置限额。 - 由space\_size来确定,其格式参考[CREATE TABLESPACE](CREATE-TABLESPACE.md)。 >![](public_sys-resources/icon-note.gif) **说明:** @@ -116,5 +115,5 @@ ## 相关链接 -[CREATE TABLESPACE](CREATE-TABLESPACE.md),[DROP TABLESPACE](DROP-TABLESPACE.md#ZH-CN_TOPIC_0242370617) +[CREATE TABLESPACE](CREATE-TABLESPACE.md),[DROP TABLESPACE](DROP-TABLESPACE.md) diff --git a/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-CONFIGURATION.md b/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-CONFIGURATION.md index 39d94e630ed01bc15cc54489cbfb448c53f2c475..e0ab9a717f8f20db2ab4da5df3b057b1eb3e55aa 100644 --- a/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-CONFIGURATION.md +++ b/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-CONFIGURATION.md @@ -92,7 +92,7 @@ ALTER TEXT SEARCH CONFIGURATION name RESET ( {configuration_option} [, ...] ); - **token\_type** - 与配置的语法解析器关联的字串类型的名称。详细信息参见[解析器](解析器.md#ZH-CN_TOPIC_0242370496)。 + 与配置的语法解析器关联的字串类型的名称。详细信息参见[解析器](解析器.md)。 - **dictionary\_name** @@ -120,7 +120,7 @@ ALTER TEXT SEARCH CONFIGURATION name RESET ( {configuration_option} [, ...] ); - **configuration\_option** - 文本搜索配置项。详细信息参见[CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md#ZH-CN_TOPIC_0242370585)。 + 文本搜索配置项。详细信息参见[CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md)。 - **value** @@ -171,5 +171,5 @@ postgres=# SELECT b.cfgname,a.maptokentype,a.mapseqno,a.mapdict,c.dictname FROM ## 相关链接 -[CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md#ZH-CN_TOPIC_0242370585), [DROP TEXT SEARCH CONFIGURATION](DROP-TEXT-SEARCH-CONFIGURATION.md#ZH-CN_TOPIC_0242370618) +[CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md), [DROP TEXT SEARCH CONFIGURATION](DROP-TEXT-SEARCH-CONFIGURATION.md) diff --git a/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-DICTIONARY.md b/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-DICTIONARY.md index 57acbc734e4543a443d1f32c60bc4dbfaf4557ec..00f6d1280817de11fd69809f7277bb2e1d4c0623 100644 --- a/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-DICTIONARY.md +++ b/content/zh/docs/Developerguide/ALTER-TEXT-SEARCH-DICTIONARY.md @@ -97,5 +97,5 @@ postgres=# ALTER TEXT SEARCH DICTIONARY my_dict ( dummy ); ## 相关链接 -[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370586),[DROP TEXT SEARCH DICTIONARY](DROP-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370619) +[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md),[DROP TEXT SEARCH DICTIONARY](DROP-TEXT-SEARCH-DICTIONARY.md) diff --git a/content/zh/docs/Developerguide/ALTER-TRIGGER.md b/content/zh/docs/Developerguide/ALTER-TRIGGER.md index 6fa9244bca42e33a4bfeecd2add99e9dd7f3acf0..76c8e2d9da3e144e66b450874e3c3b7409d5e9f4 100644 --- a/content/zh/docs/Developerguide/ALTER-TRIGGER.md +++ b/content/zh/docs/Developerguide/ALTER-TRIGGER.md @@ -41,5 +41,5 @@ ALTER TRIGGER trigger_name ON table_name RENAME TO new_name; ## 相关链接 -[CREATE TRIGGER](CREATE-TRIGGER.md),[DROP TRIGGER](DROP-TRIGGER.md#ZH-CN_TOPIC_0242370620),[ALTER TABLE](ALTER-TABLE.md) +[CREATE TRIGGER](CREATE-TRIGGER.md),[DROP TRIGGER](DROP-TRIGGER.md),[ALTER TABLE](ALTER-TABLE.md) diff --git a/content/zh/docs/Developerguide/ALTER-TYPE.md b/content/zh/docs/Developerguide/ALTER-TYPE.md index 9d911b7dd5ea12172eb4b9d1aa5408e277428c5f..7a1445b239adaacce826c2ac8bf4edbb47600eb4 100644 --- a/content/zh/docs/Developerguide/ALTER-TYPE.md +++ b/content/zh/docs/Developerguide/ALTER-TYPE.md @@ -148,5 +148,5 @@ ## 相关链接 -[CREATE TYPE](CREATE-TYPE.md#ZH-CN_TOPIC_0242370588),[DROP TYPE](DROP-TYPE.md#ZH-CN_TOPIC_0242370621) +[CREATE TYPE](CREATE-TYPE.md),[DROP TYPE](DROP-TYPE.md) diff --git a/content/zh/docs/Developerguide/ALTER-USER.md b/content/zh/docs/Developerguide/ALTER-USER.md index 2f6b547fc1f6e412890ee8e9699b8faef8a9829b..e0554aa08d666be32d71e180ed7752ddd53704fb 100644 --- a/content/zh/docs/Developerguide/ALTER-USER.md +++ b/content/zh/docs/Developerguide/ALTER-USER.md @@ -38,9 +38,7 @@ ALTER USER中修改的会话参数只针对指定的用户,且在下一次会 | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' - | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' - | NODE GROUP logic_cluster_name | ACCOUNT { LOCK | UNLOCK } | PGUSER ``` @@ -101,7 +99,7 @@ ALTER USER中修改的会话参数只针对指定的用户,且在下一次会 当前版本不允许修改用户的PGUSER属性。 -其他参数请参见[CREATE ROLE](CREATE-ROLE.md)和[ALTER ROLE](ALTER-ROLE.md#ZH-CN_TOPIC_0242370532)的参数说明。 +其他参数请参见[CREATE ROLE](CREATE-ROLE.md)和[ALTER ROLE](ALTER-ROLE.md)的参数说明。 ## 示例 @@ -109,5 +107,5 @@ ALTER USER中修改的会话参数只针对指定的用户,且在下一次会 ## 相关链接 -[CREATE ROLE](CREATE-ROLE.md),[CREATE USER](CREATE-USER.md#ZH-CN_TOPIC_0242370589),[DROP USER](DROP-USER.md) +[CREATE ROLE](CREATE-ROLE.md),[CREATE USER](CREATE-USER.md),[DROP USER](DROP-USER.md) diff --git a/content/zh/docs/Developerguide/ALTER-VIEW.md b/content/zh/docs/Developerguide/ALTER-VIEW.md index 0e99a5fe6aadff3a1035b4197ab6e5eb1ada0eed..52e27853eefe1326ea885a3d904848dbea9f3ea0 100644 --- a/content/zh/docs/Developerguide/ALTER-VIEW.md +++ b/content/zh/docs/Developerguide/ALTER-VIEW.md @@ -126,5 +126,5 @@ postgres=# DROP VIEW public.customer_details_view_v2; ## 相关链接 -[CREATE VIEW](CREATE-VIEW.md#ZH-CN_TOPIC_0242370590),[DROP VIEW](DROP-VIEW.md#ZH-CN_TOPIC_0242370623) +[CREATE VIEW](CREATE-VIEW.md),[DROP VIEW](DROP-VIEW.md) diff --git a/content/zh/docs/Developerguide/BEGIN.md b/content/zh/docs/Developerguide/BEGIN.md index e68a86b4d0643ada0f1fad4041db0f93492633fc..6be543bc04749827d94bdf302d86b50ce7ea6dbd 100644 --- a/content/zh/docs/Developerguide/BEGIN.md +++ b/content/zh/docs/Developerguide/BEGIN.md @@ -28,7 +28,7 @@ BEGIN可以用于开始一个匿名块,也可以用于开始一个事务。本 BEGIN [ WORK | TRANSACTION ] [ { - ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } + ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ]; @@ -48,6 +48,10 @@ BEGIN可以用于开始一个匿名块,也可以用于开始一个事务。本 取值范围:已存在的函数名称。 +## 示例 + +无 + ## 相关链接 [START TRANSACTION](START-TRANSACTION.md) diff --git a/content/zh/docs/Developerguide/BGWRITER_STAT.md b/content/zh/docs/Developerguide/BGWRITER_STAT.md new file mode 100644 index 0000000000000000000000000000000000000000..2ec7275934346c97aea3630208fdf1a0c5ff5485 --- /dev/null +++ b/content/zh/docs/Developerguide/BGWRITER_STAT.md @@ -0,0 +1,95 @@ +# BGWRITER\_STAT + +BGWRITER\_STAT视图显示关于后端写进程活动的统计信息。 + +**表 1** BGWRITER\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

checkpoints_timed

+

bigint

+

执行的定期检查点数。

+

checkpoints_req

+

bigint

+

执行的需求检查点数。

+

checkpoint_write_time

+

double precision

+

花费在检查点处理部分的时间总量,其中文件被写入到磁盘,以毫秒为单位。

+

checkpoint_sync_time

+

double precision

+

花费在检查点处理部分的时间总量,其中文件被同步到磁盘,以毫秒为单位。

+

buffers_checkpoint

+

bigint

+

检查点写缓冲区数量。

+

buffers_clean

+

bigint

+

后端写进程写缓冲区数量。

+

maxwritten_clean

+

bigint

+

后端写进程停止清理扫描时间数,因为它写了太多缓冲区。

+

buffers_backend

+

bigint

+

通过后端直接写缓冲区数。

+

buffers_backend_fsync

+

bigint

+

后端不得不执行自己的fsync调用的时间数(通常后端写进程处理这些即使后端确实自己写)。

+

buffers_alloc

+

bigint

+

分配的缓冲区数量。

+

stats_reset

+

timestamp with time zone

+

这些统计被重置的时间。

+
+ diff --git a/content/zh/docs/Developerguide/CLASS_VITAL_INFO.md b/content/zh/docs/Developerguide/CLASS_VITAL_INFO.md new file mode 100644 index 0000000000000000000000000000000000000000..50431779291e5947e0d84803e3866e978ab3e0db --- /dev/null +++ b/content/zh/docs/Developerguide/CLASS_VITAL_INFO.md @@ -0,0 +1,47 @@ +# CLASS\_VITAL\_INFO + +CLASS\_VITAL\_INFO视图用于做WDR时校验相同的表或者索引的Oid是否一致。 + +**表 1** CLASS\_VITAL\_INFO字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的oid。

+

schemaname

+

name

+

schema名称。

+

relname

+

name

+

表名。

+

relkind

+

"char"

+
表示对象类型,取值范围如下:
  • r:表示普通表。
  • t:表示toast表。
  • i:表示索引。
+
+
+ diff --git a/content/zh/docs/Developerguide/CLOSE.md b/content/zh/docs/Developerguide/CLOSE.md index e9cdaee8fd23a7ebc6c0f41316fa2b933c95ac50..c73632fd85da7936e8f1e1b3bc6b423c0969a711 100644 --- a/content/zh/docs/Developerguide/CLOSE.md +++ b/content/zh/docs/Developerguide/CLOSE.md @@ -36,5 +36,5 @@ CLOSE { cursor_name | ALL } ; ## 相关链接 -[FETCH](FETCH.md#ZH-CN_TOPIC_0242370629),[MOVE](MOVE.md#ZH-CN_TOPIC_0242370633) +[FETCH](FETCH.md),[MOVE](MOVE.md) diff --git a/content/zh/docs/Developerguide/COMMENT.md b/content/zh/docs/Developerguide/COMMENT.md index 93d9a245e93cbb64599bc95480595498945448b6..6d0c2e866adc639f5ef9f43e4d41a265ee09b009 100644 --- a/content/zh/docs/Developerguide/COMMENT.md +++ b/content/zh/docs/Developerguide/COMMENT.md @@ -34,7 +34,6 @@ COMMENT ON OPERATOR FAMILY object_name USING index_method | [ PROCEDURAL ] LANGUAGE object_name | ROLE object_name | - RULE rule_name ON table_name | SCHEMA object_name | SERVER object_name | TABLE object_name | diff --git a/content/zh/docs/Developerguide/COMMIT-PREPARED.md b/content/zh/docs/Developerguide/COMMIT-PREPARED.md index 69867890dc85b669c0deea60f31bcb4f4048c30c..8c746c37ae6a10e6a7d97fc0c628404a04a4f048 100644 --- a/content/zh/docs/Developerguide/COMMIT-PREPARED.md +++ b/content/zh/docs/Developerguide/COMMIT-PREPARED.md @@ -29,7 +29,14 @@ COMMIT PREPARED transaction_id WITH CSN; 待提交事务的序列号。它是一个64位递增无符号数。 +## 示例 + +``` +--提交标识符为的trans_test的事务。 +postgres=# COMMIT PREPARED 'trans_test'; +``` + ## 相关链接 -[PREPARE TRANSACTION](PREPARE-TRANSACTION.md#ZH-CN_TOPIC_0242370636),[ROLLBACK PREPARED](ROLLBACK-PREPARED.md#ZH-CN_TOPIC_0242370645)。 +[PREPARE TRANSACTION](PREPARE-TRANSACTION.md),[ROLLBACK PREPARED](ROLLBACK-PREPARED.md)。 diff --git a/content/zh/docs/Developerguide/CONFIG_SETTINGS.md b/content/zh/docs/Developerguide/CONFIG_SETTINGS.md new file mode 100644 index 0000000000000000000000000000000000000000..b3ddf778c47009dfc0ba9589126dbe56c9f9f94f --- /dev/null +++ b/content/zh/docs/Developerguide/CONFIG_SETTINGS.md @@ -0,0 +1,130 @@ +# CONFIG\_SETTINGS + +CONFIG\_SETTINGS视图显示数据库运行时参数的相关信息。 + +**表 1** CONFIG\_SETTINGS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

name

+

text

+

参数名称。

+

setting

+

text

+

参数当前值。

+

unit

+

text

+

参数的隐式结构。

+

category

+

text

+

参数的逻辑组。

+

short_desc

+

text

+

参数的简单描述。

+

extra_desc

+

text

+

参数的详细描述。

+

context

+

text

+

设置参数值的上下文,包括internal,postmaster,sighup,backend,superuser,user。

+

vartype

+

text

+

参数类型,包括bool,enum,integer,real,string。

+

source

+

text

+

参数的赋值方式。

+

min_val

+

text

+

参数最大值。如果参数类型不是数值型,那么该字段值为null。

+

max_val

+

text

+

参数最小值。如果参数类型不是数值型,那么该字段值为null。

+

enumvals

+

text[]

+

enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。

+

boot_val

+

text

+

数据库启动时参数默认值。

+

reset_val

+

text

+

数据库重置时参数默认值。

+

sourcefile

+

text

+

设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。

+

sourceline

+

integer

+

设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。

+
+ diff --git a/content/zh/docs/Developerguide/COPY.md b/content/zh/docs/Developerguide/COPY.md index 161743010e5d1a3164a97d29ca62c50021f59e69..e8313cb4e1562354ad2ae4b9eb6441f7b2e3bf85 100644 --- a/content/zh/docs/Developerguide/COPY.md +++ b/content/zh/docs/Developerguide/COPY.md @@ -235,17 +235,6 @@ COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据 缺省值:TEXT - - OIDS - - 为每行拷贝内部对象标识(oid)。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >若COPY FROM对象为query或者对于没有oid的表,指定oids标识报错。 - - 取值范围:true/on,false/off。 - - 缺省值:false - - DELIMITER 指定数据文件行数据的字段分隔符。 @@ -385,7 +374,7 @@ COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据 取值范围:合法DATE格式。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md)。 >![](public_sys-resources/icon-note.gif) **说明:** - >对于指定为A兼容类型的数据库,则DATE类型内建为TIMESTAMP类型。在导入的时候,若需指定格式,可以参考下面的timestamp\_format参数。 + >对于DATE类型内建为TIMESTAMP类型的数据库,在导入的时候,若需指定格式,可以参考下面的timestamp\_format参数。 - TIME\_FORMAT @@ -410,13 +399,6 @@ COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据 用于指定COPY原生的各类参数。 - - OIDS - - 为每行拷贝内部对象标识(oid)。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >若COPY FROM对象为query或者对于没有oid的表,指定oids标识报错。 - - NULL null\_string 用来指定数据文件中空值的表示。 @@ -467,7 +449,7 @@ COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据 - FORCE NOT NULL column\_name \[, ...\] - 在CSV COPY FROM模式下,指定的字段输入不能为空。 + 在CSV COPY FROM模式下,指定的字段不为空。若输入为空,则将视为长度为0的字符串。 取值范围:已存在的字段。 @@ -561,7 +543,7 @@ COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据 取值范围:合法DATE格式。可参考[时间和日期处理函数和操作符](时间和日期处理函数和操作符.md) >![](public_sys-resources/icon-note.gif) **说明:** - >对于指定为A兼容类型的数据库,则DATE类型内建为TIMESTAMP类型。在导入的时候,若需指定格式,可以参考下面的timestamp\_format参数。 + >对于DATE类型内建为TIMESTAMP类型的数据库,在导入的时候,若需指定格式,可以参考下面的timestamp\_format参数。 - TIME\_FORMAT 'time\_format\_string' diff --git a/content/zh/docs/Developerguide/CPU.md b/content/zh/docs/Developerguide/CPU.md new file mode 100644 index 0000000000000000000000000000000000000000..245347bf5ad2bf29cccee6389e12a14d70f45521 --- /dev/null +++ b/content/zh/docs/Developerguide/CPU.md @@ -0,0 +1,117 @@ +# CPU + +通过top命令查看openGauss内节点CPU使用情况,分析是否存在由于CPU负载过高导致的性能瓶颈。 + +## 查看CPU状况 + +查询服务器CPU的使用情况主要通过以下方式: + +在所有存储节点,逐一执行**top**命令,查看CPU占用情况。执行该命令后,按“1”键,可查看每个CPU核的使用率。 + +``` +top - 17:05:04 up 32 days, 20:34, 5 users, load average: 0.02, 0.02, 0.00 +Tasks: 124 total, 1 running, 123 sleeping, 0 stopped, 0 zombie +Cpu0 : 0.0%us, 0.3%sy, 0.0%ni, 69.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st +Cpu1 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st +Cpu2 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st +Cpu3 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st +Mem: 8038844k total, 7165272k used, 873572k free, 530444k buffers +Swap: 4192924k total, 4920k used, 4188004k free, 4742904k cached + + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND + + 35184 omm 20 0 822m 421m 128m S 0 5.4 5:28.15 gaussdb + 1 root 20 0 13592 820 784 S 0 0.0 1:16.62 init +``` + +分析时,请主要关注进程占用的CPU利用率。 + +其中,统计信息中“us”表示用户空间占用CPU百分比,“sy”表示内核空间占用CPU百分比,“id”表示空闲CPU百分比。如果“id”低于10%,即表明CPU负载较高,可尝试通过降低本节点任务量等手段降低CPU负载。 + +## 性能参数分析 + +1. 使用“top -H”命令查看CPU,显示内容如下所示。 + + ``` + 14 root 20 0 0 0 0 S 0 0.0 0:16.41 events/3 + top - 14:22:49 up 5 days, 21:51, 2 users, load average: 0.08, 0.08, 0.06 + Tasks: 312 total, 1 running, 311 sleeping, 0 stopped, 0 zombie + Cpu(s): 1.3%us, 0.7%sy, 0.0%ni, 95.0%id, 2.4%wa, 0.5%hi, 0.2%si, 0.0%st + Mem: 8038844k total, 5317668k used, 2721176k free, 180268k buffers + Swap: 4192924k total, 0k used, 4192924k free, 2886860k cached + + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND + + 3105 root 20 0 50492 11m 2708 S 3 0.1 22:22.56 acc-snf + + 4015 gdm 20 0 232m 23m 11m S 0 0.3 11:34.70 gdm-simple-gree + 51001 omm 20 0 12140 1484 948 R 0 0.0 0:00.94 top + + 54885 omm 20 0 615m 396m 116m S 0 5.1 0:09.44 gaussdb + + + 1 root 20 0 13592 944 792 S 0 0.0 0:08.54 init + ``` + +2. 根据查询结果中“Cpu\(s\)”分析是系统CPU(sy)还是用户CPU(us)占用过高。 + - 如果是系统CPU占用过高,需要查找异常系统进程进行处理。 + - 如果是“USER”为omm的openGauss进程CPU占用过高,请根据目前运行的业务查询内容,对业务SQL进行优化。请根据以下步骤,并结合当前正在运行的业务特征进行分析,是否该程序处于死循环逻辑。 + 1. 使用“top -H -p pid”查找进程内占用的CPU百分比较高的线程,进行分析。 + + ``` + top -H -p 54952 + ``` + + 查询结果如下所示,top中可以看到占用CPU很高的线程,下面以线程54775为主,分析其为何占用CPU过高。 + + ``` + top - 14:23:27 up 5 days, 21:52, 2 users, load average: 0.04, 0.07, 0.05 + Tasks: 13 total, 0 running, 13 sleeping, 0 stopped, 0 zombie + Cpu(s): 0.9%us, 0.4%sy, 0.0%ni, 97.3%id, 1.1%wa, 0.2%hi, 0.1%si, 0.0%st + Mem: 8038844k total, 5322180k used, 2716664k free, 180316k buffers + Swap: 4192924k total, 0k used, 4192924k free, 2889860k cached + + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND + 54775 omm 20 0 684m 424m 131m S 0 5.4 0:00.32 gaussdb + 54951 omm 20 0 684m 424m 131m S 0 5.4 0:00.84 gaussdb + 54732 omm 20 0 684m 424m 131m S 0 5.4 0:00.24 gaussdb + 54758 omm 20 0 684m 424m 131m S 0 5.4 0:00.00 gaussdb + 54759 omm 20 0 684m 424m 131m S 0 5.4 0:00.02 gaussdb + 54773 omm 20 0 684m 424m 131m S 0 5.4 0:02.79 gaussdb + 54780 omm 20 0 684m 424m 131m S 0 5.4 0:00.04 gaussdb + 54781 omm 20 0 684m 424m 131m S 0 5.4 0:00.21 gaussdb + 54782 omm 20 0 684m 424m 131m S 0 5.4 0:00.02 gaussdb + 54798 omm 20 0 684m 424m 131m S 0 5.4 0:16.70 gaussdb + 54952 omm 20 0 684m 424m 131m S 0 5.4 0:07.51 gaussdb + 54953 omm 20 0 684m 424m 131m S 0 5.4 0:00.81 gaussdb + 54954 omm 20 0 684m 424m 131m S 0 5.4 0:06.54 gaussdb + ``` + + 2. 使用“gstack ”查看进程内各线程的函数调用栈。查找上一步骤中占用CPU较高的线程ID对应的线程号。 + + ``` + gstack 54954 + ``` + + 查询结果如下所示,其中线程ID54775对应线程号是10。 + + ``` + 192.168.0.11:~ # gstack 54954 + Thread 10 (Thread 0x7f95a5fff710 (LWP 54775)): + #0 0x00007f95c41d63c6 in poll () from /lib64/libc.so.6 + #1 0x0000000000d3d2d3 in WaitLatchOrSocket(Latch volatile*, int, int, long) () + #2 0x000000000095ed25 in XLogPageRead(XLogRecPtr*, int, bool, bool) () + #3 0x000000000095f6dd in ReadRecord(XLogRecPtr*, int, bool) () + #4 0x000000000096aef0 in StartupXLOG() () + #5 0x0000000000d5607a in StartupProcessMain() () + #6 0x00000000009e19f9 in AuxiliaryProcessMain(int, char**) () + #7 0x0000000000d50135 in SubPostmasterMain(int, char**) () + #8 0x0000000000d504ec in MainStarterThreadFunc(void*) () + #9 0x00007f95c79b85f0 in start_thread () from /lib64/libpthread.so.0 + #10 0x00007f95c41df84d in clone () from /lib64/libc.so.6 + #11 0x0000000000000000 in ?? () + ``` + + + + diff --git a/content/zh/docs/Developerguide/CREATE-DATA-SOURCE.md b/content/zh/docs/Developerguide/CREATE-DATA-SOURCE.md index 211019c4925983cc6a6dd0fc4f28a2b7c78b6dd8..06c11970c7f3cc86bc3a831a2d2b298674d6494a 100644 --- a/content/zh/docs/Developerguide/CREATE-DATA-SOURCE.md +++ b/content/zh/docs/Developerguide/CREATE-DATA-SOURCE.md @@ -88,5 +88,5 @@ postgres=# DROP DATA SOURCE ds_test4; ## 相关链接 -**[ALTER DATA SOURCE](ALTER-DATA-SOURCE.md#ZH-CN_TOPIC_0242370520), [DROP DATA SOURCE](DROP-DATA-SOURCE.md#ZH-CN_TOPIC_0242370599)** +[ALTER DATA SOURCE](ALTER-DATA-SOURCE.md), [DROP DATA SOURCE](DROP-DATA-SOURCE.md) diff --git a/content/zh/docs/Developerguide/CREATE-DATABASE.md b/content/zh/docs/Developerguide/CREATE-DATABASE.md index 08e9b2cd1e9ceaccac49367f3eb6425f98fb1117..565c5e31b6f97baade499540e21a0ad7fc21cfc6 100644 --- a/content/zh/docs/Developerguide/CREATE-DATABASE.md +++ b/content/zh/docs/Developerguide/CREATE-DATABASE.md @@ -74,7 +74,7 @@ CREATE DATABASE database_name 指定兼容的数据库的类型。 - 取值范围:A、B、C。分别表示兼容Oracle、Mysql和TD。 + 取值范围:A、B、C。分别表示兼容O、MY和TD。 - **TABLESPACE \[ = \] tablespace\_name** @@ -163,8 +163,8 @@ postgres=# DROP DATABASE ora_compatible_db; 事务中不支持创建database。 -- **ENCODING** +- **ENCODING LC\_COLLATE LC\_CTYPE** - 当新建数据库Encoding与模板数据库(SQL\_ASCII)不匹配(为'GBK' /'UTF8'/'LATIN1')时,必须指定template \[=\] template0。 + 当新建数据库Encoding、LC-Collate 或LC\_Ctype与模板数据库(SQL\_ASCII)不匹配(为'GBK' /'UTF8'/'LATIN1')时,必须指定template \[=\] template0。 diff --git a/content/zh/docs/Developerguide/CREATE-DIRECTORY.md b/content/zh/docs/Developerguide/CREATE-DIRECTORY.md index 9f8331f8541b7b7f935bcf3bb986fbcf47a22ea3..1bdd629027acf9f1dcdafd7852847df40a45e8d5 100644 --- a/content/zh/docs/Developerguide/CREATE-DIRECTORY.md +++ b/content/zh/docs/Developerguide/CREATE-DIRECTORY.md @@ -2,9 +2,7 @@ ## 功能描述 -使用CREATE DIRECTORY语句创建一个目录对象,该目录对象定义了服务器文件系统上目录的别名,用于存放用户使用的数据文件,用户可以通过utl\_file高级包来读写这些文件。 - -该目录对象对于指定用户可以赋予READ和WRITE的操作权限,用于给utl\_file提供权限控制。 +使用CREATE DIRECTORY语句创建一个目录对象,该目录对象定义了服务器文件系统上目录的别名,用于存放用户使用的数据文件。 ## 注意事项 @@ -53,5 +51,5 @@ postgres=# CREATE OR REPLACE DIRECTORY dir as '/tmp/'; ## 相关链接 -[ALTER DIRECTORY](ALTER-DIRECTORY.md#ZH-CN_TOPIC_0242370522),[DROP DIRECTORY](DROP-DIRECTORY.md#ZH-CN_TOPIC_0242370600) +[ALTER DIRECTORY](ALTER-DIRECTORY.md),[DROP DIRECTORY](DROP-DIRECTORY.md) diff --git a/content/zh/docs/Developerguide/CREATE-FUNCTION.md b/content/zh/docs/Developerguide/CREATE-FUNCTION.md index b19d0b207f0fd959f20d4d2615453ab2c5353147..28fc1842cfce3e6ce7f578d45a55c4943a4c3b9e 100644 --- a/content/zh/docs/Developerguide/CREATE-FUNCTION.md +++ b/content/zh/docs/Developerguide/CREATE-FUNCTION.md @@ -9,9 +9,9 @@ - 如果创建函数时参数或返回值带有精度,不进行精度检测。 - 创建函数时,函数定义中对表对象的操作建议都显式指定模式,否则可能会导致函数执行异常。 - 在创建函数时,函数内部通过SET语句设置current\_schema和search\_path无效。执行完函数search\_path和current\_schema与执行函数前的search\_path和current\_schema保持一致。 -- 如果函数参数中带有出参,SELECT调用函数必须缺省出参,CALL调用函数适配A必须指定出参,对于调用重载的带有PACKAGE属性的函数,CALL调用函数可以缺省出参,具体信息参见[CALL](CALL.md)的示例。 +- 如果函数参数中带有出参,SELECT调用函数必须缺省出参,CALL调用函数必须指定出参,对于调用重载的带有PACKAGE属性的函数,CALL调用函数可以缺省出参,具体信息参见[CALL](CALL.md)的示例。 - 兼容Postgresql风格的函数或者带有PACKAGE属性的函数支持重载。在指定REPLACE的时候,如果参数个数、类型、返回值有变化,不会替换原有函数,而是会建立新的函数。 -- SELECT调用可以指定不同参数来进行同名函数调用。由于语法CALL适配自A,因此不支持调用不带有PACKAGE属性的同名函数。 +- SELECT调用可以指定不同参数来进行同名函数调用。由于语法不支持调用不带有PACKAGE属性的同名函数。 - 在创建function时,不能在avg函数外面嵌套其他agg函数,或者其他系统函数。 - 新创建的函数默认会给PUBLIC授予执行权限(详见[GRANT](GRANT.md))。用户可以选择收回PUBLIC默认执行权限,然后根据需要将执行权限授予其他用户,为了避免出现新函数能被所有人访问的时间窗口,应在一个事务中创建函数并且设置函数执行权限。 @@ -40,12 +40,11 @@ ][...] { AS 'definition' - | AS 'obj_file', 'link_symbol' } ``` -- A风格的创建自定义函数的语法。 +- O风格的创建自定义函数的语法。 ``` CREATE [ OR REPLACE ] FUNCTION function_name @@ -127,11 +126,11 @@ - **LANGUAGE lang\_name** - 用以实现函数的语言的名称。可以是SQL,C,internal,或者是用户定义的过程语言名称。为了保证向下兼容,该名称可以用单引号(包围)。若采用单引号,则引号内必须为大写。 + 用以实现函数的语言的名称。可以是SQL,internal,或者是用户定义的过程语言名称。为了保证向下兼容,该名称可以用单引号(包围)。若采用单引号,则引号内必须为大写。 - **WINDOW** - 表示该函数是窗口函数,通常只用于C语言编写的函数。替换函数定义时不能改变WINDOW属性。 + 表示该函数是窗口函数。替换函数定义时不能改变WINDOW属性。 >![](public_sys-resources/icon-notice.gif) **须知:** >自定义窗口函数只支持LANGUAGE是internal,并且引用的内部函数必须是窗口函数。 @@ -148,9 +147,9 @@ 表示该函数值可以在一次表扫描内改变,因此不会做任何优化。 -- PACKAGE +- **PACKAGE** - 表示该函数是否支持重载。PostgreSQL风格的函数本身就支持重载,此参数主要是针对A风格的函数。 + 表示该函数是否支持重载。PostgreSQL风格的函数本身就支持重载,此参数主要是针对其它风格的函数。 - 不允许package函数和非package函数重载或者替换。 - package函数不支持VARIADIC类型的参数。 @@ -224,10 +223,6 @@ 取当前会话中的值设置为configuration\_parameter的值。 -- **obj\_file, link\_symbol** - - 适用于C语言函数,字符串_obj\_file_指定了动态库的绝对路径;_link\_symbol_指定了该函数的链接符号,也就是该函数在C代码中的函数名称。 - - **plsql\_body** PL/SQL存储过程体。 @@ -299,10 +294,3 @@ postgres=# DROP FUNCTION func_add_sql; [ALTER FUNCTION](ALTER-FUNCTION.md),[DROP FUNCTION](DROP-FUNCTION.md) -## 优化建议 - -- analyse | analyze - - 不支持在事务或匿名块中执行analyze 。 - - 不支持在函数或存储过程中执行analyze操作。 - - diff --git a/content/zh/docs/Developerguide/CREATE-GROUP.md b/content/zh/docs/Developerguide/CREATE-GROUP.md index 09be785ed18ce6aa5488aa90248b60a8efdf67c6..6848b9d6dad94b7fa3785f9bc951d7bd96070f97 100644 --- a/content/zh/docs/Developerguide/CREATE-GROUP.md +++ b/content/zh/docs/Developerguide/CREATE-GROUP.md @@ -11,18 +11,13 @@ CREATE GROUP是CREATE ROLE的别名,非SQL标准语法,不推荐使用,建 ## 语法格式 ``` -CREATE GROUP group_name [ [ WITH ] option [ ... ] ] - [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' | DISABLE }; +CREATE GROUP group_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' | DISABLE }; ``` -其中可选项action子句语法为: +其中可选项option子句语法为: ``` -where option can be: {SYSADMIN | NOSYSADMIN} - | {MONADMIN | NOMONADMIN} - | {OPRADMIN | NOOPRADMIN} - | {POLADMIN | NOPOLADMIN} | {AUDITADMIN | NOAUDITADMIN} | {CREATEDB | NOCREATEDB} | {USEFT | NOUSEFT} @@ -36,13 +31,13 @@ where option can be: | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' - | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' - | NODE GROUP logic_group_name + | TEMP SPACE 'tmpspacelimit' + | SPILL SPACE 'spillspacelimit' | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] - | ADMIN role_name [, ...] + | ADMIN rol e_name [, ...] | USER role_name [, ...] | SYSID uid | DEFAULT TABLESPACE tablespace_name @@ -57,5 +52,5 @@ where option can be: ## 相关链接 -[ALTER GROUP](ALTER-GROUP.md#ZH-CN_TOPIC_0242370526),[DROP GROUP](DROP-GROUP.md#ZH-CN_TOPIC_0242370603),[CREATE ROLE](CREATE-ROLE.md) +[ALTER GROUP](ALTER-GROUP.md),[DROP GROUP](DROP-GROUP.md),[CREATE ROLE](CREATE-ROLE.md) diff --git a/content/zh/docs/Developerguide/CREATE-INDEX.md b/content/zh/docs/Developerguide/CREATE-INDEX.md index f199c930e9e238bbb4da0aaf700aa9798ef0ac27..d81a88145350e6091e6559c01759e192293bb6fd 100644 --- a/content/zh/docs/Developerguide/CREATE-INDEX.md +++ b/content/zh/docs/Developerguide/CREATE-INDEX.md @@ -83,6 +83,9 @@ 行存表支持的索引类型:btree(行存表缺省值)、gin、gist。列存表支持的索引类型:Psort(列存表缺省值)、btree、gin。 + >![](public_sys-resources/icon-note.gif) **说明:** + >列存表对GIN索引支持仅限于对于tsvector类型的支持,即创建列存GIN索引入参需要为to\_tsvector函数(的返回值)。此方法为GIN索引比较普遍的使用方式。 + - **column\_name** 表中需要创建索引的列的名称(字段名)。 @@ -279,6 +282,12 @@ postgres=# DROP TABLESPACE example1; postgres=# DROP TABLESPACE example2; postgres=# DROP TABLESPACE example3; postgres=# DROP TABLESPACE example4; + +--创建列存表以及列存表GIN索引。 +postgres=# create table cgin_create_test(a int, b text) with (orientation = column); +CREATE TABLE +postgres=# create index cgin_test on cgin_create_test using gin(to_tsvector('ngram', b)); +CREATE INDEX ``` ## 相关链接 diff --git a/content/zh/docs/Developerguide/CREATE-PROCEDURE.md b/content/zh/docs/Developerguide/CREATE-PROCEDURE.md index cbef8fef846e710c9343d9aeff0fc6f37c131d15..ee804d0d5a7e7e61d9b9ce3baa9660a09b455c0d 100644 --- a/content/zh/docs/Developerguide/CREATE-PROCEDURE.md +++ b/content/zh/docs/Developerguide/CREATE-PROCEDURE.md @@ -9,7 +9,7 @@ - 如果创建存储过程时参数或返回值带有精度,不进行精度检测。 - 创建存储过程时,存储过程定义中对表对象的操作建议都显示指定模式,否则可能会导致存储过程执行异常。 - 在创建存储过程时,存储过程内部通过SET语句设置current\_schema和search\_path无效。执行完函数search\_path和current\_schema与执行函数前的search\_path和current\_schema保持一致。 -- 如果存储过程参数中带有出参,SELECT调用存储过程必须缺省出参,CALL调用存储过程适配A,调用非重载函数时必须指定出参,对于重载的package函数,out参数可以缺省,具体信息参见[CALL](CALL.md)的示例。 +- 如果存储过程参数中带有出参,SELECT调用存储过程必须缺省出参,CALL调用存储过程调用非重载函数时必须指定出参,对于重载的package函数,out参数可以缺省,具体信息参见[CALL](CALL.md)的示例。 - 存储过程指定package属性时支持重载。 - 在创建procedure时,不能在avg函数外面嵌套其他agg函数,或者其他系统函数。 diff --git a/content/zh/docs/Developerguide/CREATE-ROLE.md b/content/zh/docs/Developerguide/CREATE-ROLE.md index c4eff61baea35a8759a5a8968f5ac446a9660bbb..b00c1353c05871c51d48287f785e770773f679e1 100644 --- a/content/zh/docs/Developerguide/CREATE-ROLE.md +++ b/content/zh/docs/Developerguide/CREATE-ROLE.md @@ -34,11 +34,9 @@ CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { | 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 [, ...] @@ -59,6 +57,9 @@ CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { 取值范围:字符串,要符合标识符的命名规范,且最多为63个字符。若超过63个字符,数据库会截断并保留前63个字符当做角色名称。在创建角色时,数据库的时候会给出提示信息。 + >![](public_sys-resources/icon-note.gif) **说明:** + >标识符需要为字母、下划线、数字(0-9)或美元符号($),且必须以字母(a-z)或下划线(\_)开头。 + - **password** 登录密码。 @@ -156,11 +157,7 @@ CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { - **RESOURCE POOL** - 设置角色使用的resource pool名称,该名称属于系统表:pg\_resource\_pool - -- **USER GROUP 'groupuser'** - - 创建一个user的子用户。 + 设置角色使用的resource pool名称,该名称属于系统表:pg\_resource\_pool。 - **PERM SPACE** @@ -235,5 +232,5 @@ postgres=# DROP ROLE miriam; ## 相关链接 -[SET ROLE](SET-ROLE.md),[ALTER ROLE](ALTER-ROLE.md),[DROP ROLE](DROP-ROLE.md),[GRANT](GRANT.md),[REVOKE](REVOKE.md) +[SET ROLE](SET-ROLE.md),[ALTER ROLE](ALTER-ROLE.md),[DROP ROLE](DROP-ROLE.md),[GRANT](GRANT.md) diff --git a/content/zh/docs/Developerguide/CREATE-ROW-LEVEL-SECURITY-POLICY.md b/content/zh/docs/Developerguide/CREATE-ROW-LEVEL-SECURITY-POLICY.md new file mode 100644 index 0000000000000000000000000000000000000000..931902aef3809e57c9b4262cfd1d38602ceb3ea0 --- /dev/null +++ b/content/zh/docs/Developerguide/CREATE-ROW-LEVEL-SECURITY-POLICY.md @@ -0,0 +1,224 @@ +# CREATE ROW LEVEL SECURITY POLICY + +## 功能描述 + +对表创建行访问控制策略。 + +当对表创建了行访问控制策略,只有打开该表的行访问控制开关\(ALTER TABLE ... ENABLE ROW LEVEL SECURITY\),策略才能生效。否则不生效。 + +当前行访问控制影响数据表的读取操作\(SELECT、UPDATE、DELETE\),暂不影响数据表的写入操作\(INSERT、MERGE INTO\)。表所有者或系统管理员可以在USING子句中创建表达式,在客户端执行数据表读取操作时,数据库后台在查询重写阶段会将满足条件的表达式拼接并应用到执行计划中。针对数据表的每一条元组,当USING表达式返回TRUE时,元组对当前用户可见,当USING表达式返回FALSE或NULL时,元组对当前用户不可见。 + +行访问控制策略名称是针对表的,同一个数据表上不能有同名的行访问控制策略;对不同的数据表,可以有同名的行访问控制策略。 + +行访问控制策略可以应用到指定的操作\(SELECT、UPDATE、DELETE、ALL\),ALL表示会影响SELECT、UPDATE、DELETE三种操作;定义行访问控制策略时,若未指定受影响的相关操作,默认为ALL。 + +行访问控制策略可以应用到指定的用户\(角色\),也可应用到全部用户\(PUBLIC\);定义行访问控制策略时,若未指定受影响的用户,默认为PUBLIC。 + +## 注意事项 + +- 支持对行存表、行存分区表、列存表、列存分区表、复制表、unlogged表、hash表定义行访问控制策略。 +- 不支持外表、临时表定义行访问控制策略。 +- 不支持对视图定义行访问控制策略。 +- 同一张表上可以创建多个行访问控制策略,一张表最多创建100个行访问控制策略。 +- 系统管理员不受行访问控制影响,可以查看表的全量数据。 +- 通过SQL语句、视图、函数、存储过程查询包含行访问控制策略的表,都会受影响。 + +## 语法格式 + +``` +CREATE [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name + [ AS { PERMISSIVE | RESTRICTIVE } ] + [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ] + [ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ] + USING ( using_expression ) +``` + +## 参数说明 + +- **policy\_name** + + 行访问控制策略名称,同一个数据表上行访问控制策略名称不能相同。 + +- **table\_name** + + 行访问控制策略的表名。 + +- **command** + + 当前行访问控制影响的SQL操作,可指定操作包括:ALL、SELECT、UPDATE、DELETE。当未指定时,ALL为默认值,涵盖SELECT、UPDATE、DELETE操作。 + + 当command为SELECT时,SELECT类操作受行访问控制的影响,只能查看到满足条件\(using\_expression返回值为TRUE\)的元组数据,受影响的操作包括SELECT,UPDATE ... RETURNING,DELETE ... RETURNING。 + + 当command为UPDATE时,UPDATE类操作受行访问控制的影响,只能更新满足条件\(using\_expression返回值为TRUE\)的元组数据,受影响的操作包括UPDATE, UPDATE ... RETURNING, SELECT ... FOR UPDATE/SHARE。 + + 当command为DELETE时,DELETE类操作受行访问控制的影响,只能删除满足条件\(using\_expression返回值为TRUE\)的元组数据,受影响的操作包括DELETE, DELETE ... RETURNING。 + + 行访问控制策略与适配的SQL语法关系参加下表: + + **表 1** ROW LEVEL SECURITY策略与适配SQL语法关系 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Command

+

SELECT/ALL policy

+

UPDATE/ALL policy

+

DELETE/ALL policy

+

SELECT

+

Existing row

+

No

+

No

+

SELECT FOR UPDATE/SHARE

+

Existing row

+

Existing row

+

No

+

UPDATE

+

No

+

Existing row

+

No

+

UPDATE RETURNING

+

Existing row

+

Existing row

+

No

+

DELETE

+

No

+

No

+

Existing row

+

DELETE RETURNING

+

Existing row

+

No

+

Existing row

+
+ +- **role\_name** + + 行访问控制影响的数据库用户。 + + 当未指定时,PUBLIC为默认值,PUBLIC表示影响所有数据库用户,可以指定多个受影响的数据库用户。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >系统管理员不受行访问控制特性影响。 + + +- **using\_expression** + + 行访问控制的表达式(返回boolean值)。 + + 条件表达式中不能包含AGG函数和窗口(WINDOW)函数。在查询重写阶段,如果数据表的行访问控制开关打开,满足条件的表达式会添加到计划树中。针对数据表的每条元组,会进行表达式计算,只有表达式返回值为TRUE时,行数据对用户才可见(SELECT、UPDATE、DELETE);当表达式返回FALSE时,该元组对当前用户不可见,用户无法通过SELECT语句查看此元组,无法通过UPDATE语句更新此元组,无法通过DELETE语句删除此元组。 + + +## 示例 + +``` +--创建用户alice +postgres=# CREATE ROLE alice PASSWORD 'Gauss@123'; + +--创建用户bob +postgres=# CREATE ROLE bob PASSWORD 'Gauss@123'; + +--创建数据表all_data +postgres=# CREATE TABLE all_data(id int, role varchar(100), data varchar(100)); + +--向数据表插入数据 +postgres=# INSERT INTO all_data VALUES(1, 'alice', 'alice data'); +postgres=# INSERT INTO all_data VALUES(2, 'bob', 'bob data'); +postgres=# INSERT INTO all_data VALUES(3, 'peter', 'peter data'); + +--将表all_data的读取权限赋予alice和bob用户 +postgres=# GRANT SELECT ON all_data TO alice, bob; + +--打开行访问控制策略开关 +postgres=# ALTER TABLE all_data ENABLE ROW LEVEL SECURITY; + +--创建行访问控制策略,当前用户只能查看用户自身的数据 +postgres=# CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role = CURRENT_USER); + +--查看表all_data相关信息 +postgres=# \d+ all_data + Table "public.all_data" + Column | Type | Modifiers | Storage | Stats target | Description +--------+------------------------+-----------+----------+--------------+------------- + id | integer | | plain | | + role | character varying(100) | | extended | | + data | character varying(100) | | extended | | +Row Level Security Policies: + POLICY "all_data_rls" + USING (((role)::name = "current_user"())) +Has OIDs: no +Location Nodes: ALL DATANODES +Options: orientation=row, compression=no, enable_rowsecurity=true + +--当前用户执行SELECT操作 +postgres=# SELECT * FROM all_data; + id | role | data +----+-------+------------ + 1 | alice | alice data + 2 | bob | bob data + 3 | peter | peter data +(3 rows) + +postgres=# EXPLAIN(COSTS OFF) SELECT * FROM all_data; + QUERY PLAN +---------------------------- + Streaming (type: GATHER) + Node/s: All dbnodes + -> Seq Scan on all_data +(3 rows) + +--切换至alice用户执行SELECT操作 +postgres=# SELECT * FROM all_data; + id | role | data +----+-------+------------ + 1 | alice | alice data +(1 row) + +postgres=# EXPLAIN(COSTS OFF) SELECT * FROM all_data; + QUERY PLAN +---------------------------------------------------------------- + Streaming (type: GATHER) + Node/s: All dbnodes + -> Seq Scan on all_data + Filter: ((role)::name = 'alice'::name) + Notice: This query is influenced by row level security feature +(5 rows) +``` + +## 相关链接 + +[DROP ROW LEVEL SECURITY POLICY](DROP-ROW-LEVEL-SECURITY-POLICY.md) + diff --git a/content/zh/docs/Developerguide/CREATE-SCHEMA.md b/content/zh/docs/Developerguide/CREATE-SCHEMA.md index 0256c53437b977862584d532bcde18ddf9d2b6d1..579c7f51609377a0c14586a30302018640046b96 100644 --- a/content/zh/docs/Developerguide/CREATE-SCHEMA.md +++ b/content/zh/docs/Developerguide/CREATE-SCHEMA.md @@ -77,5 +77,5 @@ postgres=# DROP USER role1 CASCADE; ## 相关链接 -[ALTER SCHEMA](ALTER-SCHEMA.md#ZH-CN_TOPIC_0242370534),[DROP SCHEMA](DROP-SCHEMA.md#ZH-CN_TOPIC_0242370612) +[ALTER SCHEMA](ALTER-SCHEMA.md),[DROP SCHEMA](DROP-SCHEMA.md) diff --git a/content/zh/docs/Developerguide/CREATE-SEQUENCE.md b/content/zh/docs/Developerguide/CREATE-SEQUENCE.md index 9b23c8b730b11608eb8bc412313f17e317263c62..a3cfdb26a225965133e7c2d832c470486a88caf3 100644 --- a/content/zh/docs/Developerguide/CREATE-SEQUENCE.md +++ b/content/zh/docs/Developerguide/CREATE-SEQUENCE.md @@ -6,7 +6,7 @@ CREATE SEQUENCE用于向当前数据库里增加一个新的序列。序列的Ow ## 注意事项 -- Sequence是一个存放等差数列的特殊表,该表受DBMS控制。这个表没有实际意义,通常用于为行或者表生成唯一的标识符。 +- Sequence是一个存放等差数列的特殊表。这个表没有实际意义,通常用于为行或者表生成唯一的标识符。 - 如果给出一个模式名,则该序列就在给定的模式中创建,否则会在当前模式中创建。序列名必须和同一个模式中的其他序列、表、索引、视图或外表的名称不同。 - 创建序列后,在表中使用序列的nextval\(\)函数和generate\_series\(1,N\)函数对表插入数据,请保证nextval的可调用次数大于等于N+1次,否则会因为generate\_series\(\)函数会调用N+1次而导致报错。 @@ -136,5 +136,5 @@ postgres=# DROP SEQUENCE serial1 cascade; ## 相关链接 -[DROP SEQUENCE](DROP-SEQUENCE.md#ZH-CN_TOPIC_0242370613),[ALTER SEQUENCE](ALTER-SEQUENCE.md#ZH-CN_TOPIC_0242370535) +[DROP SEQUENCE](DROP-SEQUENCE.md),[ALTER SEQUENCE](ALTER-SEQUENCE.md) diff --git a/content/zh/docs/Developerguide/CREATE-SYNONYM.md b/content/zh/docs/Developerguide/CREATE-SYNONYM.md new file mode 100644 index 0000000000000000000000000000000000000000..1c8c98927b6f16fff233722093766584fa550da6 --- /dev/null +++ b/content/zh/docs/Developerguide/CREATE-SYNONYM.md @@ -0,0 +1,107 @@ +# CREATE SYNONYM + +## 功能描述 + +创建一个同义词对象。同义词是数据库对象的别名,用于记录与其他数据库对象名间的映射关系,用户可以使用同义词访问关联的数据库对象。 + +## 注意事项 + +- 定义同义词的用户成为其所有者。 +- 若指定模式名称,则同义词在指定模式中创建。否则,在当前模式创建。 +- 支持通过同义词访问的数据库对象包括:表、视图、函数和存储过程。 +- 使用同义词时,用户需要具有对关联对象的相应权限。 +- 支持使用同义词的DML语句包括:SELECT、INSERT、UPDATE、DELETE、EXPLAIN、CALL。 +- 不支持关联函数或存储过程的CREATE SYNONYM语句出现在存储过程中,建议存储过程中使用系统表pg\_synonym中已存在的同义词对象。 + +## 语法格式 + +``` +CREATE [ OR REPLACE ] SYNONYM synonym_name + FOR object_name; +``` + +## 参数说明 + +- **synonym** + + 创建的同义词名字,可以带模式名。 + + 取值范围:字符串,要符合标识符的命名规范。 + +- **object\_name** + + 关联的对象名字,可以带模式名。 + + 取值范围:字符串,要符合标识符的命名规范。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >object\_name可以是不存在的对象名称。 + + +## 示例 + +``` +--创建模式ot。 +postgres=# CREATE SCHEMA ot; + +--创建表ot.t1及其同义词t1。 +postgres=# CREATE TABLE ot.t1(id int, name varchar2(10)); +postgres=# CREATE OR REPLACE SYNONYM t1 FOR ot.t1; + +--使用同义词t1。 +postgres=# SELECT * FROM t1; +postgres=# INSERT INTO t1 VALUES (1, 'ada'), (2, 'bob'); +postgres=# UPDATE t1 SET t1.name = 'cici' WHERE t1.id = 2; + +--创建同义词v1及其关联视图ot.v_t1。 +postgres=# CREATE SYNONYM v1 FOR ot.v_t1; +postgres=# CREATE VIEW ot.v_t1 AS SELECT * FROM ot.t1; + +--使用同义词v1。 +postgres=# SELECT * FROM v1; + +--创建重载函数ot.add及其同义词add。 +postgres=# CREATE OR REPLACE FUNCTION ot.add(a integer, b integer) RETURNS integer AS +$$ +SELECT $1 + $2 +$$ +LANGUAGE sql; + +postgres=# CREATE OR REPLACE FUNCTION ot.add(a decimal(5,2), b decimal(5,2)) RETURNS decimal(5,2) AS +$$ +SELECT $1 + $2 +$$ +LANGUAGE sql; + +postgres=# CREATE OR REPLACE SYNONYM add FOR ot.add; + +--使用同义词add。 +postgres=# SELECT add(1,2); +postgres=# SELECT add(1.2,2.3); + +--创建存储过程ot.register及其同义词register。 +postgres=# CREATE PROCEDURE ot.register(n_id integer, n_name varchar2(10)) +SECURITY INVOKER +AS +BEGIN + INSERT INTO ot.t1 VALUES(n_id, n_name); +END; +/ + +postgres=# CREATE OR REPLACE SYNONYM register FOR ot.register; + +--使用同义词register,调用存储过程。 +postgres=# CALL register(3,'mia'); + +--删除同义词。 +postgres=# DROP SYNONYM t1; +postgres=# DROP SYNONYM IF EXISTS v1; +postgres=# DROP SYNONYM IF EXISTS add; +postgres=# DROP SYNONYM register; +postgres=# DROP SCHEMA ot CASCADE; +``` + +## 相关链接 + +[ALTER SYNONYM](ALTER-SYNONYM.md),[DROP SYNONYM](DROP-SYNONYM.md) + diff --git a/content/zh/docs/Developerguide/CREATE-TABLE-AS.md b/content/zh/docs/Developerguide/CREATE-TABLE-AS.md index a3178a1bf170a6a833ebc71124d1bb819071de64..39b3b6162b93505d86293e9adc605d0d67d1f953 100644 --- a/content/zh/docs/Developerguide/CREATE-TABLE-AS.md +++ b/content/zh/docs/Developerguide/CREATE-TABLE-AS.md @@ -21,7 +21,6 @@ CREATE [ UNLOGGED ] TABLE table_name [ WITH ( {storage_parameter = value} [, ... ] ) ] [ COMPRESS | NOCOMPRESS ] [ TABLESPACE tablespace_name ] - [ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ] AS query [ WITH [ NO ] DATA ]; ``` @@ -92,10 +91,6 @@ CREATE [ UNLOGGED ] TABLE table_name 指定新表将要在tablespace\_name表空间内创建。如果没有声明,将使用默认表空间。 -- **TO \{ GROUP groupname | NODE \( nodename \[, ... \] \) \}** - - TO GROUP指定创建表所在的Node Group。TO NODE主要供内部扩容工具使用,一般用户不应该使用。 - - **AS query** 一个SELECT VALUES命令或者一个运行预备好的SELECT或VALUES查询的EXECUTE命令。 diff --git a/content/zh/docs/Developerguide/CREATE-TABLE-PARTITION.md b/content/zh/docs/Developerguide/CREATE-TABLE-PARTITION.md index 1a3f1bea74bdad162ea6e8bf7bb762e75319a9ac..fb3e735868f6b609ec008360d046dde9f329405b 100644 --- a/content/zh/docs/Developerguide/CREATE-TABLE-PARTITION.md +++ b/content/zh/docs/Developerguide/CREATE-TABLE-PARTITION.md @@ -34,15 +34,10 @@ CREATE TABLE [ IF NOT EXISTS ] partition_table_name [ WITH ( {storage_parameter = value} [, ... ] ) ] [ COMPRESS | NOCOMPRESS ] [ TABLESPACE tablespace_name ] - - [ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ] - PARTITION BY { - {VALUES (partition_key)} | + PARTITION BY { {RANGE (partition_key) ( partition_less_than_item [, ... ] )} | {RANGE (partition_key) ( partition_start_end_item [, ... ] )} } [ { ENABLE | DISABLE } ROW MOVEMENT ]; - - ``` - 列约束column\_constraint: @@ -72,7 +67,7 @@ CREATE TABLE [ IF NOT EXISTS ] partition_table_name - like选项like\_option: ``` - { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | RELOPTIONS | DISTRIBUTION | ALL } + { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | RELOPTIONS| ALL } ``` @@ -153,8 +148,7 @@ CREATE TABLE [ IF NOT EXISTS ] partition_table_name - 如果指定了INCLUDING STORAGE,则拷贝列的STORAGE设置也将被拷贝,默认情况下不包含STORAGE设置。 - 如果指定了INCLUDING COMMENTS,则源表列、约束和索引的注释也会被拷贝过来。默认情况下,不拷贝源表的注释。 - 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)也将拷贝至新表。默认情况下,不拷贝源表的存储参数。 - - 如果指定了INCLUDING DISTRIBUTION,则新表将拷贝源表的分布信息,包括分布类型和分布列。默认情况下,不拷贝源表的分布信息。 - - INCLUDING ALL是INCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING INDEXES INCLUDING STORAGE INCLUDING COMMENTS INCLUDING RELOPTIONS INCLUDING DISTRIBUTION的简写形式。 + - INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION和INCLUDING RELOPTIONS的内容。 - **WITH \( storage\_parameter \[= value\] \[, ... \] \)** @@ -272,8 +266,8 @@ CREATE TABLE [ IF NOT EXISTS ] partition_table_name 取值范围: - - ENABLE:行迁移开关打开。 - - DISABLE(缺省值):行迁移开关关闭。 + - ENABLE(缺省值):行迁移开关打开。 + - DISABLE:行迁移开关关闭。 - **NOT NULL** diff --git a/content/zh/docs/Developerguide/CREATE-TABLE.md b/content/zh/docs/Developerguide/CREATE-TABLE.md index 9d992b16093ff0fbdbcf4b391dd68aa7d55469a5..8ba3139ab34144349ddfa38cad352f16a97a2e0b 100644 --- a/content/zh/docs/Developerguide/CREATE-TABLE.md +++ b/content/zh/docs/Developerguide/CREATE-TABLE.md @@ -7,7 +7,7 @@ ## 注意事项 - 列存表支持的数据类型请参考[列存表支持的数据类型](列存表支持的数据类型.md)。 -- 创建列存的数量建议不超过1000个。 +- 创建列存表的数量建议不超过1000个。 - 表中的主键约束和唯一约束必须包含分布列。 - 如果在建表过程中数据库系统发生故障,系统恢复后可能无法自动清除之前已创建的、大小为0的磁盘文件。此种情况出现概率小,不影响数据库系统的正常运行。 - 列存表的表级约束只支持PARTIAL CLUSTER KEY,不支持主外键等表级约束。 @@ -28,8 +28,7 @@ [ WITH ( {storage_parameter = value} [, ... ] ) ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] [ COMPRESS | NOCOMPRESS ] - [ TABLESPACE tablespace_name ] - [ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ]; + [ TABLESPACE tablespace_name ]; ``` - 其中列约束column\_constraint为: @@ -65,8 +64,7 @@ - 其中like选项like\_option为: ``` - { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | DISTRIBUTION | ALL } - + { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | ALL } ``` @@ -141,8 +139,7 @@ - 如果指定了INCLUDING COMMENTS,则源表列、约束和索引的注释会复制到新表中。默认情况下,不复制源表的注释。 - 如果指定了INCLUDING PARTITION,则源表的分区定义会复制到新表中,同时新表将不能再使用PARTITION BY子句。默认情况下,不拷贝源表的分区定义。 - 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)会复制到新表中。默认情况下,不复制源表的存储参数。 - - 如果指定了INCLUDING DISTRIBUTION,则源表的分布信息会复制到新表中,包括分布类型和分布列。默认情况下,不拷贝源表的分布信息。 - - INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION、INCLUDING RELOPTIONS和INCLUDING DISTRIBUTION的内容。 + - INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION和INCLUDING RELOPTIONS的内容。 >![](public_sys-resources/icon-notice.gif) **须知:** >- 如果源表包含serial、bigserial、smallseriral类型,或者源表字段的默认值是sequence,且sequence属于源表(通过CREATE SEQUENCE ... OWNED BY创建),这些Sequence不会关联到新表中,新表中会重新创建属于自己的sequence。这和之前版本的处理逻辑不同。如果用户希望源表和新表共享Sequence,需要首先创建一个共享的Sequence(避免使用OWNED BY),并配置为源表字段默认值,这样创建的新表会和源表共享该Sequence。 @@ -171,7 +168,7 @@ - ROW,表示表的数据将以行式存储。 - 行存储适合于OLTP业务,此类型的表上交互事务比较多,一次交互会涉及表中的多个列,用行存查询效率较高。 + 行存储适合于OLTP业务,适用于点查询或者增删操作较多的场景。 - COLUMN,表示表的数据将以列式存储。 @@ -916,11 +913,8 @@ postgres=# DROP SCHEMA IF EXISTS joe CASCADE; - LIKE INCLUDING RELOPTIONS - 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)会复制到新表中。默认情况下,不复制源表的存储参数。 -- LIKE INCLUDING DISTRIBUTION - - 如果指定了INCLUDING DISTRIBUTION,则源表的分布信息会复制到新表中,包括分布类型和分布列。默认情况下,不拷贝源表的分布信息。 - - LIKE INCLUDING ALL - - INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION、INCLUDING RELOPTIONS和INCLUDING DISTRIBUTION的内容。 + - INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION、INCLUDING RELOPTIONS的内容。 - ORIENTATION ROW - 创建行存表,行存储适合于OLTP业务,此类型的表上交互事务比较多,一次交互会涉及表中的多个列,用行存查询效率较高。 diff --git a/content/zh/docs/Developerguide/CREATE-TABLESPACE.md b/content/zh/docs/Developerguide/CREATE-TABLESPACE.md index 72e63fea068512ba40c00a28d62b2df86dca3519..60072d28cea9c926a1c3a905d1332a5b97fb2f13 100644 --- a/content/zh/docs/Developerguide/CREATE-TABLESPACE.md +++ b/content/zh/docs/Developerguide/CREATE-TABLESPACE.md @@ -34,7 +34,7 @@ WITH ( {filesystem= { 'general'| "general" | general} | 要创建的表空间名称。 - 表空间名称不能和数据openGauss中的其他表空间重名,且名称不能以"pg"开头,这样的名称留给系统表空间使用。 + 表空间名称不能和openGauss中的其他表空间重名,且名称不能以"pg"开头,这样的名称留给系统表空间使用。 取值范围:字符串,要符合标识符的命名规范。 diff --git a/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-CONFIGURATION.md b/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-CONFIGURATION.md index f6d0b6ffee14d5b840f8ca7f97e9a625da811c63..47dd6048bb455694591e75d5cea606e8c8a656e1 100644 --- a/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-CONFIGURATION.md +++ b/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-CONFIGURATION.md @@ -119,5 +119,5 @@ postgres=# DROP ROLE IF EXISTS joe; ## 相关链接 -[ALTER TEXT SEARCH CONFIGURATION](ALTER-TEXT-SEARCH-CONFIGURATION.md#ZH-CN_TOPIC_0242370543), [DROP TEXT SEARCH CONFIGURATION](DROP-TEXT-SEARCH-CONFIGURATION.md#ZH-CN_TOPIC_0242370618) +[ALTER TEXT SEARCH CONFIGURATION](ALTER-TEXT-SEARCH-CONFIGURATION.md), [DROP TEXT SEARCH CONFIGURATION](DROP-TEXT-SEARCH-CONFIGURATION.md) diff --git a/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-DICTIONARY.md b/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-DICTIONARY.md index a2265e398f7b502f9fd2018137e4c9b72be7552b..5281b0bfff25d2646e4171b1dbda54228790df1d 100644 --- a/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-DICTIONARY.md +++ b/content/zh/docs/Developerguide/CREATE-TEXT-SEARCH-DICTIONARY.md @@ -4,7 +4,7 @@ 创建一个新的全文检索词典。词典是一种指定在全文检索时识别特定词并处理的方法。 -词典的创建依赖于预定义模板(在系统表[PG\_TS\_TEMPLATE](PG_TS_TEMPLATE.md#ZH-CN_TOPIC_0242385854)中定义),支持创建五种类型的词典,分别是Simple、Ispell、Synonym、Thesaurus、以及Snowball,每种类型的词典可以完成不同的任务。 +词典的创建依赖于预定义模板(在系统表[PG\_TS\_TEMPLATE](PG_TS_TEMPLATE.md)中定义),支持创建五种类型的词典,分别是Simple、Ispell、Synonym、Thesaurus、以及Snowball,每种类型的词典可以完成不同的任务。 ## 注意事项 @@ -33,7 +33,7 @@ CREATE TEXT SEARCH DICTIONARY name ( 模板名。 - 取值范围:系统表[PG\_TS\_TEMPLATE](PG_TS_TEMPLATE.md#ZH-CN_TOPIC_0242385854)中定义的模板:Simple/Synonym/Thesaurus/Ispell/Snowball。 + 取值范围:系统表[PG\_TS\_TEMPLATE](PG_TS_TEMPLATE.md)中定义的模板:Simple/Synonym/Thesaurus/Ispell/Snowball。 - **option** @@ -135,9 +135,9 @@ CREATE TEXT SEARCH DICTIONARY name ( ## 示例 -请参见[配置示例](配置示例.md#ZH-CN_TOPIC_0242370505)一节的示例。 +请参见[配置示例](配置示例.md)一节的示例。 ## 相关链接 -[ALTER TEXT SEARCH DICTIONARY](ALTER-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370544),[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370586) +[ALTER TEXT SEARCH DICTIONARY](ALTER-TEXT-SEARCH-DICTIONARY.md),[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md) diff --git a/content/zh/docs/Developerguide/CREATE-TYPE.md b/content/zh/docs/Developerguide/CREATE-TYPE.md index 2fe0244a34928ad4258f89d24dcd397f752cd2e0..6b54f7d95beeecc7b7dc857e7bef22b96346e27c 100644 --- a/content/zh/docs/Developerguide/CREATE-TYPE.md +++ b/content/zh/docs/Developerguide/CREATE-TYPE.md @@ -14,7 +14,7 @@ - 基本类型 - 用户可以自定义一种新的基本类型(标量类型)。通常来说这些函数必须是用C或者另外一种低层语言所编写。 + 用户可以自定义一种新的基本类型(标量类型)。通常来说这些函数必须是底层语言所编写。 - shell类型 @@ -227,7 +227,7 @@ CREATE TYPE name AS ENUM ## 示例 ``` ---创建一种复合类型,建表并插入数据以及查询: +--创建一种复合类型,建表并插入数据以及查询。 postgres=# CREATE TYPE compfoo AS (f1 int, f2 text); postgres=# CREATE TABLE t1_compfoo(a int, b compfoo); postgres=# CREATE TABLE t2_compfoo(a int, b compfoo); @@ -236,164 +236,39 @@ postgres=# INSERT INTO t2_compfoo select * from t1_typ5; postgres=# SELECT (b).f1 FROM t1_compfoo; postgres=# SELECT * FROM t1_compfoo t1 join t2_compfoo t2 on (t1.b).f1=(t1.b).f1; ---重命名数据类型: +--重命名数据类型。 postgres=# ALTER TYPE compfoo RENAME TO compfoo1; ---要改变一个用户定义类型compfoo1的所有者为usr1: -CREATE USER usr1 PASSWORD 'Bigdata@123'; +--要改变一个用户定义类型compfoo1的所有者为usr1。 +postgres=# CREATE USER usr1 PASSWORD 'Bigdata@123'; postgres=# ALTER TYPE compfoo1 OWNER TO usr1; ---把用户定义类型compfoo1的模式改变为usr1: +--把用户定义类型compfoo1的模式改变为usr1。 postgres=# ALTER TYPE compfoo1 SET SCHEMA usr1; -给一个数据类型增加一个新的属性: +--给一个数据类型增加一个新的属性。 postgres=# ALTER TYPE usr1.compfoo1 ADD ATTRIBUTE f3 int; -删除compfoo1类型: +--删除compfoo1类型。 postgres=# DROP TYPE usr1.compfoo1 cascade; -删除相关表和用户: +--删除相关表和用户。 postgres=# DROP TABLE t1_compfoo; postgres=# DROP TABLE t2_compfoo; postgres=# DROP SCHEMA usr1; postgres=# DROP USER usr1; ---创建一个枚举类型 +--创建一个枚举类型。 postgres=# CREATE TYPE bugstatus AS ENUM ('create', 'modify', 'closed'); ---添加一个标签值 +--添加一个标签值。 postgres=# ALTER TYPE bugstatus ADD VALUE IF NOT EXISTS 'regress' BEFORE 'closed'; ---重命名一个标签值 -postgres=# ALTER TYPE bugstatus RENAME VALUE 'create' BEFORE 'new'; - ---编译.so文件,并创建shell类型: -postgres=# CREATE TYPE complex; ---这个语句的作用是为要定义的类型创建了一个占位符,这样允许我们在定义其I/O函数时引用该类型。现在可以定义 I/O函数,需要注意的是在创建函数时function必须声明为NOT FENCED模式: -postgres=# CREATE FUNCTION -complex_in(cstring) - RETURNS complex - AS 'filename' - LANGUAGE C IMMUTABLE STRICT not fenced; - -postgres=# CREATE FUNCTION -complex_out(complex) - RETURNS cstring - AS 'filename' - LANGUAGE C IMMUTABLE STRICT not fenced; - -postgres=# CREATE FUNCTION -complex_recv(internal) - -RETURNS complex - -AS 'filename' - -LANGUAGE C IMMUTABLE STRICT not fenced; - -postgres=# CREATE FUNCTION -complex_send(complex) - -RETURNS bytea - -AS 'filename' - -LANGUAGE C IMMUTABLE STRICT not fenced; ---最后,提供该数据类型的完整定义: -postgres=# CREATE TYPE complex ( - -internallength = 16, - -input = complex_in, - -output = complex_out, - -receive = complex_recv, - -send = complex_send, - -alignment = double -); -``` - -input、output、receive及send函数对应的C函数定义如下: - -``` ---定义结构体Complex如下: -typedef struct Complex { - double x; - double y; -} Complex; - ---定义input函数: -PG_FUNCTION_INFO_V1(complex_in); - -Datum -complex_in(PG_FUNCTION_ARGS) -{ - char *str = PG_GETARG_CSTRING(0); - double x, - y; - Complex *result; - - if (sscanf(str, " ( %lf , %lf )", &x, &y) != 2) - ereport(ERROR, - (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), - errmsg("invalid input syntax for complex: \"%s\"", - str))); - - result = (Complex *) palloc(sizeof(Complex)); - result->x = x; - result->y = y; - PG_RETURN_POINTER(result); -} - ---定义output函数: -PG_FUNCTION_INFO_V1(complex_out); - -Datum -complex_out(PG_FUNCTION_ARGS) -{ - Complex *complex = (Complex *) PG_GETARG_POINTER(0); - char *result; - - result = (char *) palloc(100); - snprintf(result, 100, "(%g,%g)", complex->x, complex->y); - PG_RETURN_CSTRING(result); -} - ---定义receive函数: -PG_FUNCTION_INFO_V1(complex_recv); - -Datum -complex_recv(PG_FUNCTION_ARGS) -{ - StringInfo buf = (StringInfo) PG_GETARG_POINTER(0); - Complex *result; - - result = (Complex *) palloc(sizeof(Complex)); - result->x = pq_getmsgfloat8(buf); - result->y = pq_getmsgfloat8(buf); - PG_RETURN_POINTER(result); -} - ---定义send函数: -PG_FUNCTION_INFO_V1(complex_send); - -Datum -complex_send(PG_FUNCTION_ARGS) -{ - Complex *complex = (Complex *) PG_GETARG_POINTER(0); - StringInfoData buf; - - pq_begintypsend(&buf); - pq_sendfloat8(&buf, complex->x); - pq_sendfloat8(&buf, complex->y); - PG_RETURN_BYTEA_P(pq_endtypsend(&buf)); -} +--重命名一个标签值。 +postgres=# ALTER TYPE bugstatus RENAME VALUE 'create' TO 'new'; ``` ## 相关链接 -[ALTER TYPE](ALTER-TYPE.md#ZH-CN_TOPIC_0242370546),[DROP TYPE](DROP-TYPE.md#ZH-CN_TOPIC_0242370621) +[ALTER TYPE](ALTER-TYPE.md),[DROP TYPE](DROP-TYPE.md) diff --git a/content/zh/docs/Developerguide/CREATE-USER.md b/content/zh/docs/Developerguide/CREATE-USER.md index d30c34c2a7744fce458cce8bde8a6f556ed8ab1a..f660f6e340e96dea74231408f613a1c9417d21f1 100644 --- a/content/zh/docs/Developerguide/CREATE-USER.md +++ b/content/zh/docs/Developerguide/CREATE-USER.md @@ -36,11 +36,9 @@ CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { | 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 [, ...] @@ -75,7 +73,7 @@ CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { 取值范围:字符串。 -CREATE USER的其他参数值请参考[CREATE ROLE参数说明](CREATE-ROLE.md)。 +CREATE USER的其他参数值请参考[CREATE ROLE](CREATE-ROLE.md)。 ## 示例 @@ -112,5 +110,5 @@ postgres=# DROP USER dim CASCADE; ## 相关链接 -[ALTER USER](ALTER-USER.md#ZH-CN_TOPIC_0242370547),[CREATE ROLE](CREATE-ROLE.md),[DROP USER](DROP-USER.md) +[ALTER USER](ALTER-USER.md),[CREATE ROLE](CREATE-ROLE.md),[DROP USER](DROP-USER.md) diff --git a/content/zh/docs/Developerguide/CREATE-VIEW.md b/content/zh/docs/Developerguide/CREATE-VIEW.md index e762093c032464603df3f2bb22d32c45096a807e..e22b913a481860639a74cf6e624c066e90afc482 100644 --- a/content/zh/docs/Developerguide/CREATE-VIEW.md +++ b/content/zh/docs/Developerguide/CREATE-VIEW.md @@ -70,5 +70,5 @@ postgres=# DROP VIEW myView; ## 相关链接 -[ALTER VIEW](ALTER-VIEW.md#ZH-CN_TOPIC_0242370548),[DROP VIEW](DROP-VIEW.md#ZH-CN_TOPIC_0242370623) +[ALTER VIEW](ALTER-VIEW.md),[DROP VIEW](DROP-VIEW.md) diff --git a/content/zh/docs/Developerguide/CURSOR.md b/content/zh/docs/Developerguide/CURSOR.md index ec5f5d1eafd90e93dbd6cad783a5b5e599c98656..90485fa375a34c2e9a9bcf9662805f009b8e0b07 100644 --- a/content/zh/docs/Developerguide/CURSOR.md +++ b/content/zh/docs/Developerguide/CURSOR.md @@ -61,5 +61,5 @@ CURSOR cursor_name ## 相关链接 -[FETCH](FETCH.md#ZH-CN_TOPIC_0242370629) +[FETCH](FETCH.md) diff --git a/content/zh/docs/Developerguide/Cache-IO.md b/content/zh/docs/Developerguide/Cache-IO.md new file mode 100644 index 0000000000000000000000000000000000000000..025757ba05c94e89fd53f94a39390aaa1bc4db89 --- /dev/null +++ b/content/zh/docs/Developerguide/Cache-IO.md @@ -0,0 +1,61 @@ +# Cache/IO + +- **[STATIO\_USER\_TABLES](STATIO_USER_TABLES.md)** + +- **[SUMMARY\_STATIO\_USER\_TABLES](SUMMARY_STATIO_USER_TABLES.md)** + +- **[GLOBAL\_STATIO\_USER\_TABLES](GLOBAL_STATIO_USER_TABLES.md)** + +- **[STATIO\_USER\_INDEXES](STATIO_USER_INDEXES.md)** + +- **[SUMMARY\_STATIO\_USER\_INDEXES](SUMMARY_STATIO_USER_INDEXES.md)** + +- **[GLOBAL\_STATIO\_USER\_INDEXES](GLOBAL_STATIO_USER_INDEXES.md)** + +- **[STATIO\_USER\_SEQUENCES](STATIO_USER_SEQUENCES.md)** + +- **[SUMMARY\_STATIO\_USER\_SEQUENCES](SUMMARY_STATIO_USER_SEQUENCES.md)** + +- **[GLOBAL\_STATIO\_USER\_SEQUENCES](GLOBAL_STATIO_USER_SEQUENCES.md)** + +- **[STATIO\_SYS\_TABLES](STATIO_SYS_TABLES.md)** + +- **[SUMMARY\_STATIO\_SYS\_TABLES](SUMMARY_STATIO_SYS_TABLES.md)** + +- **[GLOBAL\_STATIO\_SYS\_TABLES](GLOBAL_STATIO_SYS_TABLES.md)** + +- **[STATIO\_SYS\_INDEXES](STATIO_SYS_INDEXES.md)** + +- **[SUMMARY\_STATIO\_SYS\_INDEXES](SUMMARY_STATIO_SYS_INDEXES.md)** + +- **[GLOBAL\_STATIO\_SYS\_INDEXES](GLOBAL_STATIO_SYS_INDEXES.md)** + +- **[STATIO\_SYS\_SEQUENCES](STATIO_SYS_SEQUENCES.md)** + +- **[SUMMARY\_STATIO\_SYS\_SEQUENCES](SUMMARY_STATIO_SYS_SEQUENCES.md)** + +- **[GLOBAL\_STATIO\_SYS\_SEQUENCES](GLOBAL_STATIO_SYS_SEQUENCES.md)** + +- **[STATIO\_ALL\_TABLES](STATIO_ALL_TABLES.md)** + +- **[SUMMARY\_STATIO\_ALL\_TABLES](SUMMARY_STATIO_ALL_TABLES.md)** + +- **[GLOBAL\_STATIO\_ALL\_TABLES](GLOBAL_STATIO_ALL_TABLES.md)** + +- **[STATIO\_ALL\_INDEXES](STATIO_ALL_INDEXES.md)** + +- **[SUMMARY\_STATIO\_ALL\_INDEXES](SUMMARY_STATIO_ALL_INDEXES.md)** + +- **[GLOBAL\_STATIO\_ALL\_INDEXES](GLOBAL_STATIO_ALL_INDEXES.md)** + +- **[STATIO\_ALL\_SEQUENCES](STATIO_ALL_SEQUENCES.md)** + +- **[SUMMARY\_STATIO\_ALL\_SEQUENCES](SUMMARY_STATIO_ALL_SEQUENCES.md)** + +- **[GLOBAL\_STATIO\_ALL\_SEQUENCES](GLOBAL_STATIO_ALL_SEQUENCES.md)** + +- **[GLOBAL\_STAT\_DB\_CU](GLOBAL_STAT_DB_CU.md)** + +- **[GLOBAL\_STAT\_SESSION\_CU](GLOBAL_STAT_SESSION_CU.md)** + + diff --git a/content/zh/docs/Developerguide/Configuration.md b/content/zh/docs/Developerguide/Configuration.md new file mode 100644 index 0000000000000000000000000000000000000000..6e7f744710e88c3c57089c3f323b3b384b242d07 --- /dev/null +++ b/content/zh/docs/Developerguide/Configuration.md @@ -0,0 +1,7 @@ +# Configuration + +- **[CONFIG\_SETTINGS](CONFIG_SETTINGS.md)** + +- **[GLOBAL\_CONFIG\_SETTINGS](GLOBAL_CONFIG_SETTINGS.md)** + + diff --git "a/content/zh/docs/Developerguide/CopyManager\347\261\273\347\256\200\344\273\213.md" "b/content/zh/docs/Developerguide/CopyManager\347\261\273\347\256\200\344\273\213.md" index ce41beefc035256614b882cf875b9ebb838c19d1..61d012b6b1d97f713637b073ff0dc9d7a535b2be 100644 --- "a/content/zh/docs/Developerguide/CopyManager\347\261\273\347\256\200\344\273\213.md" +++ "b/content/zh/docs/Developerguide/CopyManager\347\261\273\347\256\200\344\273\213.md" @@ -1,6 +1,6 @@ # CopyManager类简介 -CopyManager是 openGauss JDBC驱动中提供的一个API接口类,用于批量向openGaussopenGauss中导入数据。 +CopyManager是 openGauss JDBC驱动中提供的一个API接口类,用于批量向openGauss数据库中导入数据。 ## CopyManager的继承关系 diff --git a/content/zh/docs/Developerguide/DBE_PERF-Schema.md b/content/zh/docs/Developerguide/DBE_PERF-Schema.md new file mode 100644 index 0000000000000000000000000000000000000000..7e0ffa9a0aca16b1f7a75419fda9478d91459b04 --- /dev/null +++ b/content/zh/docs/Developerguide/DBE_PERF-Schema.md @@ -0,0 +1,41 @@ +# DBE\_PERF Schema + +DBE\_PERF Schema内视图主要用来诊断性能问题,也是WDR Snapshot的数据来源。数据库安装后,默认只有初始用户和监控管理员具有模式dbe\_perf的权限。若是由旧版本升级而来,为保持权限的前向兼容,模式dbe\_perf的权限与旧版本保持一致。从OS、Instance、Memory等多个维度划分组织视图,并且符合如下命名规范: + +- GLOBAL\_开头的视图,代表从数据库节点请求数据,并将数据追加对外返回,不会处理数据。 +- SUMMARY\_开头的视图,代表是将openGauss内的数据概述,多数情况下是返回数据库节点\(有时只有数据库主节点的\)的数据,会对数据进行加工和汇聚。 +- 非这两者开头的视图,一般代表本地视图,不会向其它数据库节点请求数据。 + +- **[OS](OS.md)** + +- **[Instance](Instance.md)** + +- **[Memory](Memory.md)** + +- **[File](File.md)** + +- **[Object](Object.md)** + +- **[Workload](Workload.md)** + +- **[Session/Thread](Session-Thread.md)** + +- **[Transaction](Transaction.md)** + +- **[Query](Query.md)** + +- **[Cache/IO](Cache-IO.md)** + +- **[Utility](Utility.md)** + +- **[Lock](Lock.md)** + +- **[Wait Events](Wait-Events.md)** + +- **[Configuration](Configuration.md)** + +- **[Operator](Operator.md)** + +- **[Workload Manager](Workload-Manager.md)** + + diff --git "a/content/zh/docs/Developerguide/DCL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" "b/content/zh/docs/Developerguide/DCL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" index 5fa3569581c5d323cc5f33c233e7edaa3b1b8cb8..2bd1847588df229435374e11f7de9c2b52e58bc3 100644 --- "a/content/zh/docs/Developerguide/DCL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" +++ "b/content/zh/docs/Developerguide/DCL\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" @@ -22,12 +22,12 @@ DCL(Data Control Language数据控制语言),是用来创建用户角色

修改角色属性

-

ALTER ROLE

+

ALTER ROLE

删除角色

-

DROP ROLE

+

DROP ROLE

@@ -48,12 +48,12 @@ DCL(Data Control Language数据控制语言),是用来创建用户角色

创建用户

-

CREATE USER

+

CREATE USER

修改用户属性

-

ALTER USER

+

ALTER USER

删除用户

@@ -74,5 +74,5 @@ openGauss提供了收回权限的语句,请参考[REVOKE](REVOKE.md)。 ## 设置默认权限 -openGauss允许设置应用于将来创建的对象的权限,请参考[ALTER DEFAULT PRIVILEGES](ALTER-DEFAULT-PRIVILEGES.md#ZH-CN_TOPIC_0242370521)。 +openGauss允许设置应用于将来创建的对象的权限,请参考[ALTER DEFAULT PRIVILEGES](ALTER-DEFAULT-PRIVILEGES.md)。 diff --git a/content/zh/docs/Developerguide/DECLARE.md b/content/zh/docs/Developerguide/DECLARE.md index 4d94638a5f7ee9d4dba65732313302bfbbbd29ef..a22d578d3b683b6dce6834b4df44409663404984 100644 --- a/content/zh/docs/Developerguide/DECLARE.md +++ b/content/zh/docs/Developerguide/DECLARE.md @@ -4,7 +4,7 @@ DECLARE命令既可以定义一个游标,用于在一个大的查询里面检索少数几行数据,也可以作为一个匿名块的开始。 -本节主要描述定义为游标的用法,定义为匿名块的用法见[BEGIN](BEGIN.md)。 +本节主要描述定义为游标的用法,开启匿名块的用法见[BEGIN](BEGIN.md)。 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 diff --git "a/content/zh/docs/Developerguide/DML\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" "b/content/zh/docs/Developerguide/DML\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" index 59e4009f83fabcb3530136c25abe86716dd5cecf..6b7d75c003b2483da915ab3c27b8445c16b22bbb 100644 --- "a/content/zh/docs/Developerguide/DML\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" +++ "b/content/zh/docs/Developerguide/DML\350\257\255\346\263\225\344\270\200\350\247\210\350\241\250.md" @@ -16,7 +16,7 @@ DML(Data Manipulation Language数据操作语言),用于对数据库表中 ## 删除数据 -openGauss提供了两种删除表数据的语句:删除表中指定条件的数据,请参考[DELETE](DELETE.md);或删除表的所有数据,请参考[TRUNCATE](TRUNCATE.md#ZH-CN_TOPIC_0242370657)。 +openGauss提供了两种删除表数据的语句:删除表中指定条件的数据,请参考[DELETE](DELETE.md);或删除表的所有数据,请参考[TRUNCATE](TRUNCATE.md)。 TRUNCATE快速地从表中删除所有行,它和在每个表上进行无条件的DELETE有同样的效果,不过因为它不做表扫描,因而快得多。在大表上最有用。 @@ -26,7 +26,7 @@ openGauss提供了在表和文件之间拷贝数据的语句,请参考[COPY](C ## 锁定表 -openGauss提供了多种锁模式用于控制对表中数据的并发访问,请参考[LOCK](LOCK.md#ZH-CN_TOPIC_0242370632)。 +openGauss提供了多种锁模式用于控制对表中数据的并发访问,请参考[LOCK](LOCK.md)。 ## 调用函数 @@ -47,12 +47,12 @@ openGauss提供了三个用于调用函数的语句,它们在语法结构上

修改会话

-

ALTER SESSION

+

ALTER SESSION

结束会话

-

ALTER SYSTEM KILL SESSION

+

ALTER SYSTEM KILL SESSION

diff --git a/content/zh/docs/Developerguide/DO.md b/content/zh/docs/Developerguide/DO.md index 378cc6101ede8a776374bbd88c634bbcfc7e8ad2..e7ed3810934f03f302f0136f03f375c5ff9a74c1 100644 --- a/content/zh/docs/Developerguide/DO.md +++ b/content/zh/docs/Developerguide/DO.md @@ -37,7 +37,7 @@ postgres=# CREATE USER webuser PASSWORD 'Bigdata@123'; --授予用户webuser对模式tpcds下视图的所有操作权限。 postgres=# DO $$DECLARE r record; BEGIN - FOR r IN SELECT c.relname,n.nspname FROM pg_class c,pg_namespace n + FOR r IN SELECT c.relname table_name,n.nspname table_schema FROM pg_class c,pg_namespace n WHERE c.relnamespace = n.oid AND n.nspname = 'tpcds' AND relkind IN ('r','v') LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; diff --git a/content/zh/docs/Developerguide/DROP-DATA-SOURCE.md b/content/zh/docs/Developerguide/DROP-DATA-SOURCE.md index 24e55812ac17e13ea03047c8ee7ec5b93adb5ec7..e9a4262f0b41927d0c52599abf508d9b8d9444c1 100644 --- a/content/zh/docs/Developerguide/DROP-DATA-SOURCE.md +++ b/content/zh/docs/Developerguide/DROP-DATA-SOURCE.md @@ -1,20 +1,20 @@ # DROP DATA SOURCE -## **功能描述** +## 功能描述 删除一个Data Source对象。 -## **注意事项** +## 注意事项 只有属主/系统管理员/初始用户才可以删除一个Data Source对象。 -## **语法格式** +## 语法格式 ``` DROP DATA SOURCE [IF EXISTS] src_name [CASCADE | RESTRICT]; ``` -## **参数说明** +## 参数说明 - **src\_name** @@ -34,7 +34,7 @@ DROP DATA SOURCE [IF EXISTS] src_name [CASCADE | RESTRICT]; -## **示例** +## 示例 ``` --创建Data Source对象。 @@ -45,7 +45,7 @@ postgres=# DROP DATA SOURCE ds_tst1 CASCADE; postgres=# DROP DATA SOURCE IF EXISTS ds_tst1 RESTRICT; ``` -## **相关链接** +## 相关链接 -**[CREATE DATA SOURCE](CREATE-DATA-SOURCE.md#ZH-CN_TOPIC_0242370564)**,[ALTER DATA SOURCE](ALTER-DATA-SOURCE.md#ZH-CN_TOPIC_0242370520) +[CREATE DATA SOURCE](CREATE-DATA-SOURCE.md),[ALTER DATA SOURCE](ALTER-DATA-SOURCE.md) diff --git a/content/zh/docs/Developerguide/DROP-DATABASE.md b/content/zh/docs/Developerguide/DROP-DATABASE.md index 5465771c7d257e2004277a0bca9ab25f4c176c5c..e87775eba50150c2f04fe6aa83bf9f54e0291b17 100644 --- a/content/zh/docs/Developerguide/DROP-DATABASE.md +++ b/content/zh/docs/Developerguide/DROP-DATABASE.md @@ -8,9 +8,8 @@ - 只有数据库所有者有权限执行DROP DATABASE命令,系统管理员默认拥有此权限。 - 不能对系统默认安装的三个数据库(POSTGRES、TEMPLATE0和TEMPLATE1)执行删除操作,系统做了保护。如果想查看当前服务中有哪几个数据库,可以用gsql的\\l命令查看。 -- 如果有用户正在与要删除的数据库连接,则删除操作失败。如果要查看当前存在哪些数据库连接,可以通过视图v$session查看。 +- 如果有用户正在与要删除的数据库连接,则删除操作失败。 - 不能在事务块中执行DROP DATABASE命令。 -- 确定删除数据库前需要执行“CLEAN CONNECTION TO ALL FORCE FOR DATABASE XXXX;”命令,用于强制停止当前已有的用户连接及后台线程,防止因为有后台线程未完全退出而导致的删库失败问题。此处需要注意,强制停止后台线程可能导致当前数据库数据一致性问题,此命令仅在确定删库阶段执行。 - 如果执行DROP DATABASE失败,事务回滚,需要再次执行一次DROP DATABASE IF EXISTS。 >![](public_sys-resources/icon-notice.gif) **须知:** diff --git a/content/zh/docs/Developerguide/DROP-DIRECTORY.md b/content/zh/docs/Developerguide/DROP-DIRECTORY.md index 498d82f8423251f61dd3448f1185a065f365a903..96443acf7ad52987eb439198a22be1752ee0e25c 100644 --- a/content/zh/docs/Developerguide/DROP-DIRECTORY.md +++ b/content/zh/docs/Developerguide/DROP-DIRECTORY.md @@ -2,7 +2,7 @@ ## 功能描述 -删除指定的directory表项。 +删除指定的directory对象。 ## 注意事项 @@ -29,11 +29,11 @@ DROP DIRECTORY [ IF EXISTS ] directory_name; --创建目录。 postgres=# CREATE OR REPLACE DIRECTORY dir as '/tmp/'; ---删除外部表。 +--删除目录。 postgres=# DROP DIRECTORY dir; ``` ## 相关链接 -[CREATE DIRECTORY](CREATE-DIRECTORY.md#ZH-CN_TOPIC_0242370565),[ALTER DIRECTORY](ALTER-DIRECTORY.md#ZH-CN_TOPIC_0242370522) +[CREATE DIRECTORY](CREATE-DIRECTORY.md),[ALTER DIRECTORY](ALTER-DIRECTORY.md) diff --git a/content/zh/docs/Developerguide/DROP-FUNCTION.md b/content/zh/docs/Developerguide/DROP-FUNCTION.md index 4bdd02032b698a38bb60b8beaf063f1c21c68148..8ea130e6857fa9f8bf36ea124ccd732d7fe9486d 100644 --- a/content/zh/docs/Developerguide/DROP-FUNCTION.md +++ b/content/zh/docs/Developerguide/DROP-FUNCTION.md @@ -1,4 +1,4 @@ -# DROP FUNCTION +# DROP FUNCTION ## 功能描述 @@ -39,14 +39,10 @@ DROP FUNCTION [ IF EXISTS ] function_name 函数参数的类型 -- **CASCADE | RESTRICT** - - CASCADE:级联删除依赖于函数的对象(比如操作符) 。 - - RESTRICT:如果有任何依赖对象存在,则拒绝删除该函数(缺省行为)。 - ## 示例 -请参见CREATE FUNCTION的[SQL参考](SQL参考.md)。 +请参见的[示例](CREATE-FUNCTION.md#zh-cn_topic_0237122104_zh-cn_topic_0059778837_scc61c5d3cc3e48c1a1ef323652dda821)。 ## 相关链接 diff --git a/content/zh/docs/Developerguide/DROP-GROUP.md b/content/zh/docs/Developerguide/DROP-GROUP.md index 97d02cf9a13039afb5aa8507f14f9cca78e64817..966531573788f02458a287dc5d73c582e46fae0e 100644 --- a/content/zh/docs/Developerguide/DROP-GROUP.md +++ b/content/zh/docs/Developerguide/DROP-GROUP.md @@ -22,5 +22,5 @@ DROP GROUP [ IF EXISTS ] group_name [, ...]; ## 相关链接 -[CREATE GROUP](CREATE-GROUP.md#ZH-CN_TOPIC_0242370569),[ALTER GROUP](ALTER-GROUP.md#ZH-CN_TOPIC_0242370526),[DROP ROLE](DROP-ROLE.md#ZH-CN_TOPIC_0242370611) +[CREATE GROUP](CREATE-GROUP.md),[ALTER GROUP](ALTER-GROUP.md),[DROP ROLE](DROP-ROLE.md) diff --git a/content/zh/docs/Developerguide/DROP-INDEX.md b/content/zh/docs/Developerguide/DROP-INDEX.md index 978df4b09ead513f74f2a7817be96cf2bfff0a9b..054fa71ae6e68fada94830368b2317c68a342b0f 100644 --- a/content/zh/docs/Developerguide/DROP-INDEX.md +++ b/content/zh/docs/Developerguide/DROP-INDEX.md @@ -46,5 +46,5 @@ DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] ## 相关链接 -[ALTER INDEX](ALTER-INDEX.md#ZH-CN_TOPIC_0242370527),[CREATE INDEX](CREATE-INDEX.md) +[ALTER INDEX](ALTER-INDEX.md),[CREATE INDEX](CREATE-INDEX.md) diff --git a/content/zh/docs/Developerguide/DROP-OWNED.md b/content/zh/docs/Developerguide/DROP-OWNED.md index a60d4f92f902437a09285e8f3c51955bfb4d92ea..534871f033ad2460bc89ae6a34c8a385706f512e 100644 --- a/content/zh/docs/Developerguide/DROP-OWNED.md +++ b/content/zh/docs/Developerguide/DROP-OWNED.md @@ -30,5 +30,5 @@ DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]; ## 相关链接 -[REASSIGN OWNED](REASSIGN-OWNED.md#ZH-CN_TOPIC_0242370637) , [DROP ROLE](DROP-ROLE.md#ZH-CN_TOPIC_0242370611) +[REASSIGN OWNED](REASSIGN-OWNED.md) , [DROP ROLE](DROP-ROLE.md) diff --git a/content/zh/docs/Developerguide/DROP-ROLE.md b/content/zh/docs/Developerguide/DROP-ROLE.md index 7d92f25bc17ab8d15e5bca3d8453f0eee94e5c6f..811beeacb7f60becf3ab37e0ee4ca0053a2b8b5d 100644 --- a/content/zh/docs/Developerguide/DROP-ROLE.md +++ b/content/zh/docs/Developerguide/DROP-ROLE.md @@ -33,5 +33,5 @@ DROP ROLE [ IF EXISTS ] role_name [, ...]; ## 相关链接 -[CREATE ROLE](CREATE-ROLE.md),[ALTER ROLE](ALTER-ROLE.md#ZH-CN_TOPIC_0242370532),[SET ROLE](SET-ROLE.md#ZH-CN_TOPIC_0242370652) +[CREATE ROLE](CREATE-ROLE.md),[ALTER ROLE](ALTER-ROLE.md),[SET ROLE](SET-ROLE.md) diff --git a/content/zh/docs/Developerguide/DROP-ROW-LEVEL-SECURITY-POLICY.md b/content/zh/docs/Developerguide/DROP-ROW-LEVEL-SECURITY-POLICY.md index 5bcd44c5a9d641a271525d50835992a2308615c2..810f8aa25f26726b17945dff4818f25979ce164a 100644 --- a/content/zh/docs/Developerguide/DROP-ROW-LEVEL-SECURITY-POLICY.md +++ b/content/zh/docs/Developerguide/DROP-ROW-LEVEL-SECURITY-POLICY.md @@ -49,5 +49,5 @@ postgres=# DROP ROW LEVEL SECURITY POLICY all_data_rls ON all_data; ## 相关链接 -[ALTER ROW LEVEL SECURITY POLICY](ALTER-ROW-LEVEL-SECURITY-POLICY.md),[CREATE ROW LEVLEL SECURITY POLICY](CREATE-ROW-LEVLEL-SECURITY-POLICY.md) +[ALTER ROW LEVEL SECURITY POLICY](ALTER-ROW-LEVEL-SECURITY-POLICY.md),[CREATE ROW LEVEL SECURITY POLICY](CREATE-ROW-LEVEL-SECURITY-POLICY.md) diff --git a/content/zh/docs/Developerguide/DROP-SCHEMA.md b/content/zh/docs/Developerguide/DROP-SCHEMA.md index 3d4549f00798820ca3db7b599a4c7de79c6c1acf..67c2b6d3d2a4f3eb04b5e372a5bd23840ca2dcbb 100644 --- a/content/zh/docs/Developerguide/DROP-SCHEMA.md +++ b/content/zh/docs/Developerguide/DROP-SCHEMA.md @@ -43,5 +43,5 @@ DROP SCHEMA [ IF EXISTS ] schema_name [, ...] [ CASCADE | RESTRICT ]; ## 相关链接 -[ALTER SCHEMA](ALTER-SCHEMA.md#ZH-CN_TOPIC_0242370534),[CREATE SCHEMA](CREATE-SCHEMA.md#ZH-CN_TOPIC_0242370577)。 +[ALTER SCHEMA](ALTER-SCHEMA.md),[CREATE SCHEMA](CREATE-SCHEMA.md)。 diff --git a/content/zh/docs/Developerguide/DROP-SEQUENCE.md b/content/zh/docs/Developerguide/DROP-SEQUENCE.md index 2e8beb3aedd8e8d87437550f5fafff8fbd09fcfd..01c02c68b2a288fe0bf25007dbb9eaae075de33f 100644 --- a/content/zh/docs/Developerguide/DROP-SEQUENCE.md +++ b/content/zh/docs/Developerguide/DROP-SEQUENCE.md @@ -45,5 +45,5 @@ postgres=# DROP SEQUENCE serial; ## 相关链接 -[ALTER SEQUENCE](ALTER-SEQUENCE.md#ZH-CN_TOPIC_0242370535), [DROP SEQUENCE](DROP-SEQUENCE.md#ZH-CN_TOPIC_0242370613) +[ALTER SEQUENCE](ALTER-SEQUENCE.md), [DROP SEQUENCE](DROP-SEQUENCE.md) diff --git a/content/zh/docs/Developerguide/DROP-SYNONYM.md b/content/zh/docs/Developerguide/DROP-SYNONYM.md new file mode 100644 index 0000000000000000000000000000000000000000..3bac5f661eaac34438082630ab122e7708c6127b --- /dev/null +++ b/content/zh/docs/Developerguide/DROP-SYNONYM.md @@ -0,0 +1,39 @@ +# DROP SYNONYM + +## 功能描述 + +删除指定的SYNONYM对象。 + +## 注意事项 + +只有SYNONYM的所有者有权限执行DROP SYNONYM命令,系统管理员默认拥有此权限。 + +## 语法格式 + +``` +DROP SYNONYM [ IF EXISTS ] synonym_name [ CASCADE | RESTRICT ]; +``` + +## 参数描述 + +- **IF EXISTS** + + 如果指定的同义词不存在,则发出一个notice而不是抛出一个错误。 + +- **synonym\_name** + + 同义词名字,可以带模式名。 + +- **CASCADE | RESTRICT** + - CASCADE:级联删除依赖同义词的对象(比如视图)。 + - RESTRICT:如果有依赖对象存在,则拒绝删除同义词。此选项为缺省值。 + + +## 示例 + +请参考CREATE SYNONYM的[示例](CREATE-SYNONYM.md#zh-cn_topic_0237122116_section1853433744413)。 + +## 相关链接 + +[ALTER SYNONYM](ALTER-SYNONYM.md),[CREATE SYNONYM](CREATE-SYNONYM.md) + diff --git a/content/zh/docs/Developerguide/DROP-TABLESPACE.md b/content/zh/docs/Developerguide/DROP-TABLESPACE.md index 3e10c736aae9effc201792bbbe3085021f35a587..2ff52fff8f543e41120ae170a205e99e463df22d 100644 --- a/content/zh/docs/Developerguide/DROP-TABLESPACE.md +++ b/content/zh/docs/Developerguide/DROP-TABLESPACE.md @@ -37,7 +37,7 @@ DROP TABLESPACE [ IF EXISTS ] tablespace_name; ## 相关链接 -[ALTER TABLESPACE](ALTER-TABLESPACE.md#ZH-CN_TOPIC_0242370542), [CREATE TABLESPACE](CREATE-TABLESPACE.md) +[ALTER TABLESPACE](ALTER-TABLESPACE.md), [CREATE TABLESPACE](CREATE-TABLESPACE.md) ## 优化建议 diff --git a/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-CONFIGURATION.md b/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-CONFIGURATION.md index bbf486636f50650d978d607efb21905647732cef..d83e7d7292d3d3d88d7924297e4bfc1d11a3124c 100644 --- a/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-CONFIGURATION.md +++ b/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-CONFIGURATION.md @@ -39,5 +39,5 @@ DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]; ## 相关链接 -[ALTER TEXT SEARCH CONFIGURATION](ALTER-TEXT-SEARCH-CONFIGURATION.md#ZH-CN_TOPIC_0242370543), [CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md#ZH-CN_TOPIC_0242370585) +[ALTER TEXT SEARCH CONFIGURATION](ALTER-TEXT-SEARCH-CONFIGURATION.md), [CREATE TEXT SEARCH CONFIGURATION](CREATE-TEXT-SEARCH-CONFIGURATION.md) diff --git a/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-DICTIONARY.md b/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-DICTIONARY.md index 504a568b3bdb26713fa9866f7632c3909e67f680..857ba513e9904ea906e900d06da656fabeb46e32 100644 --- a/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-DICTIONARY.md +++ b/content/zh/docs/Developerguide/DROP-TEXT-SEARCH-DICTIONARY.md @@ -48,5 +48,5 @@ DROP TEXT SEARCH DICTIONARY english; ## 相关链接 -[ALTER TEXT SEARCH DICTIONARY](ALTER-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370544),[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370586) +[ALTER TEXT SEARCH DICTIONARY](ALTER-TEXT-SEARCH-DICTIONARY.md),[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md) diff --git a/content/zh/docs/Developerguide/DROP-TRIGGER.md b/content/zh/docs/Developerguide/DROP-TRIGGER.md index 770b536e4c1e3a161e3355658e76472fb45eddcc..62170b4fd010ad9f7c5b74ef186920da94279db5 100644 --- a/content/zh/docs/Developerguide/DROP-TRIGGER.md +++ b/content/zh/docs/Developerguide/DROP-TRIGGER.md @@ -39,9 +39,9 @@ DROP TRIGGER [ IF EXISTS ] trigger_name ON table_name [ CASCADE | RESTRICT ]; ## 示例 -请参见[CREATE TRIGGER](CREATE-TRIGGER.md)的示例。 +请参见[CREATE TRIGGER](CREATE-TRIGGER.md)的[示例](CREATE-TRIGGER.md#zh-cn_topic_0237122123_zh-cn_topic_0059778166_sfbca773f5bcd4799b3ea668b3eb074fa)。 ## 相关链接 -[CREATE TRIGGER](CREATE-TRIGGER.md),[ALTER TRIGGER](ALTER-TRIGGER.md#ZH-CN_TOPIC_0242370545),[ALTER TABLE](ALTER-TABLE.md) +[CREATE TRIGGER](CREATE-TRIGGER.md),[ALTER TRIGGER](ALTER-TRIGGER.md),[ALTER TABLE](ALTER-TABLE.md) diff --git a/content/zh/docs/Developerguide/DROP-TYPE.md b/content/zh/docs/Developerguide/DROP-TYPE.md index 3942fe79ed514bbace0c0bdbcbd07446a616ecb7..f372bb596154c8d47857d4b93210dd4ec0b7e0a0 100644 --- a/content/zh/docs/Developerguide/DROP-TYPE.md +++ b/content/zh/docs/Developerguide/DROP-TYPE.md @@ -35,5 +35,5 @@ DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] ## 相关链接 -[CREATE TYPE](CREATE-TYPE.md#ZH-CN_TOPIC_0242370588),[CREATE TYPE](CREATE-TYPE.md#ZH-CN_TOPIC_0242370588) +[CREATE TYPE](CREATE-TYPE.md),[ALTER TYPE](ALTER-TYPE.md) diff --git a/content/zh/docs/Developerguide/DROP-USER.md b/content/zh/docs/Developerguide/DROP-USER.md index 2be27d000dcd324662e7bdd5268ea79c308163e2..ee3d3abd94213398f7fe4a388f6acc7b780827a3 100644 --- a/content/zh/docs/Developerguide/DROP-USER.md +++ b/content/zh/docs/Developerguide/DROP-USER.md @@ -12,7 +12,6 @@ - 当参数enable\_kill\_query为off,且使用CASCADE模式删除用户时,会等待锁定级联对象的进程结束之后再删除用户。 - 在数据库中删除用户时,如果依赖用户的对象在其他数据库中或者依赖用户的对象是其他数据库,请用户先手动删除其他数据库中的依赖对象或直接删除依赖数据库,再删除用户。即drop user不支持跨数据库进行级联删除。 -- 在多租户场景下,删除组用户时,业务用户也会同时被删除,如果指定CASCADE级联删除,那么删除业务用户时同时也指定CASCADE。如果在删除某个用户失败时,会报错,同时其他用户也无法成功删除。 - 如果该用户被DATA SOURCE对象依赖时,无法直接级联删除该用户,需要手动删除对应的DATA SOURCE对象之后再删除该用户。 ## 语法格式 diff --git a/content/zh/docs/Developerguide/DROP-VIEW.md b/content/zh/docs/Developerguide/DROP-VIEW.md index 868ef177c1b8b43072d44ad612a991f3da4abf8f..d67562bc1a19fc5cbc21f96ec4df62e8d89da0dd 100644 --- a/content/zh/docs/Developerguide/DROP-VIEW.md +++ b/content/zh/docs/Developerguide/DROP-VIEW.md @@ -37,5 +37,5 @@ DROP VIEW [ IF EXISTS ] view_name [, ...] [ CASCADE | RESTRICT ]; ## 相关链接 -[ALTER VIEW](ALTER-VIEW.md#ZH-CN_TOPIC_0242370548),[CREATE VIEW](CREATE-VIEW.md#ZH-CN_TOPIC_0242370590) +[ALTER VIEW](ALTER-VIEW.md),[CREATE VIEW](CREATE-VIEW.md) diff --git a/content/zh/docs/Developerguide/FETCH.md b/content/zh/docs/Developerguide/FETCH.md index 02997374a65a529fe1fec6853d8d2880a3eb323f..978253c23ea0f9e3dcc919eb6a1e78f9c185037b 100644 --- a/content/zh/docs/Developerguide/FETCH.md +++ b/content/zh/docs/Developerguide/FETCH.md @@ -86,8 +86,8 @@ NEXT 取值范围:有符号的整数 - count为正数就抓取当前关联位置之后的第count行。 - - count为负数,涉及到反向扫描操作,暂不支持。 - - 如果有数据的话,RELATIVE 0重新抓取当前行。 + - count为负数或0,涉及到反向扫描操作,暂不支持。 + - 如果当前行没有数据的话,RELATIVE 0返回空。 - count @@ -210,5 +210,5 @@ postgres=# CLOSE cursor1; ## 相关链接 -[CLOSE](CLOSE.md#ZH-CN_TOPIC_0242370555),[MOVE](MOVE.md#ZH-CN_TOPIC_0242370633) +[CLOSE](CLOSE.md),[MOVE](MOVE.md) diff --git a/content/zh/docs/Developerguide/FILE_IOSTAT.md b/content/zh/docs/Developerguide/FILE_IOSTAT.md new file mode 100644 index 0000000000000000000000000000000000000000..fac6e895eca59b96f581cbc3775a122334c63421 --- /dev/null +++ b/content/zh/docs/Developerguide/FILE_IOSTAT.md @@ -0,0 +1,109 @@ +# FILE\_IOSTAT + +通过对数据文件IO的统计,反映数据的IO性能,用以发现IO操作异常等性能问题。 + +**表 1** FILE\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

filenum

+

oid

+

文件标识。

+

dbid

+

oid

+

数据库标识。

+

spcid

+

oid

+

表空间标识。

+

phyrds

+

bigint

+

读物理文件的数目。

+

phywrts

+

bigint

+

写物理文件的数目。

+

phyblkrd

+

bigint

+

读物理文件块的数目。

+

phyblkwrt

+

bigint

+

写物理文件块的数目。

+

readtim

+

bigint

+

读文件的总时长(单位:微秒)。

+

writetim

+

bigint

+

写文件的总时长(单位:微秒)。

+

avgiotim

+

bigint

+

读写文件的平均时长(单位:微秒)。

+

lstiotim

+

bigint

+

最后一次读文件时长(单位:微秒)。

+

miniotim

+

bigint

+

读写文件的最小时长(单位:微秒)。

+

maxiowtm

+

bigint

+

读写文件的最大时长(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/FILE_REDO_IOSTAT.md b/content/zh/docs/Developerguide/FILE_REDO_IOSTAT.md new file mode 100644 index 0000000000000000000000000000000000000000..73e16d95409d8202b63d2d571651ba4b1ceae33e --- /dev/null +++ b/content/zh/docs/Developerguide/FILE_REDO_IOSTAT.md @@ -0,0 +1,67 @@ +# FILE\_REDO\_IOSTAT + +本节点Redo\(WAL\)相关的统计信息。 + +**表 1** FILE\_REDO\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

phywrts

+

bigint

+

向wal buffer中写的次数。

+

phyblkwrt

+

bigint

+

向wal buffer中写的block的块数。

+

writetim

+

bigint

+

向xlog文件中写操作的时间(单位:微秒)。

+

avgiotim

+

bigint

+

平均写xlog的时间(writetim/phywrts)(单位:微秒)。

+

lstiotim

+

bigint

+

最后一次写xlog的时间(单位:微秒)。

+

miniotim

+

bigint

+

最小的写xlog时间(单位:微秒)。

+

maxiowtm

+

bigint

+

最大的写xlog时间(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/File.md b/content/zh/docs/Developerguide/File.md new file mode 100644 index 0000000000000000000000000000000000000000..3899c50f4f62dba0e6e31b0a547eae55ba896eee --- /dev/null +++ b/content/zh/docs/Developerguide/File.md @@ -0,0 +1,21 @@ +# File + +- **[FILE\_IOSTAT](FILE_IOSTAT.md)** + +- **[SUMMARY\_FILE\_IOSTAT](SUMMARY_FILE_IOSTAT.md)** + +- **[GLOBAL\_FILE\_IOSTAT](GLOBAL_FILE_IOSTAT.md)** + +- **[FILE\_REDO\_IOSTAT](FILE_REDO_IOSTAT.md)** + +- **[SUMMARY\_FILE\_REDO\_IOSTAT](SUMMARY_FILE_REDO_IOSTAT.md)** + +- **[GLOBAL\_FILE\_REDO\_IOSTAT](GLOBAL_FILE_REDO_IOSTAT.md)** + +- **[LOCAL\_REL\_IOSTAT](LOCAL_REL_IOSTAT.md)** + +- **[GLOBAL\_REL\_IOSTAT](GLOBAL_REL_IOSTAT.md)** + +- **[SUMMARY\_REL\_IOSTAT](SUMMARY_REL_IOSTAT.md)** + + diff --git a/content/zh/docs/Developerguide/GLOBAL_BGWRITER_STAT.md b/content/zh/docs/Developerguide/GLOBAL_BGWRITER_STAT.md new file mode 100644 index 0000000000000000000000000000000000000000..a7f3153fc3de878eb12c594aeddd24309cf0d0d8 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_BGWRITER_STAT.md @@ -0,0 +1,102 @@ +# GLOBAL\_BGWRITER\_STAT + +GLOBAL\_BGWRITER\_STAT视图显示各节点关于后端写进程活动的统计信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_BGWRITER\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

checkpoints_timed

+

bigint

+

执行的定期检查点数。

+

checkpoints_req

+

bigint

+

执行的需求检查点数。

+

checkpoint_write_time

+

double precision

+

花费在检查点处理部分的时间总量,其中文件被写入到磁盘,以毫秒为单位。

+

checkpoint_sync_time

+

double precision

+

花费在检查点处理部分的时间总量,其中文件被同步到磁盘,以毫秒为单位。

+

buffers_checkpoint

+

bigint

+

检查点写缓冲区数量。

+

buffers_clean

+

bigint

+

后端写进程写缓冲区数量。

+

maxwritten_clean

+

bigint

+

后端写进程停止清理扫描时间数,因为它写了太多缓冲区。

+

buffers_backend

+

bigint

+

通过后端直接写缓冲区数。

+

buffers_backend_fsync

+

bigint

+

后端不得不执行自己的fsync调用的时间数(通常后端写进程处理这些即使后端确实自己写)。

+

buffers_alloc

+

bigint

+

分配的缓冲区数量。

+

stats_reset

+

timestamp with time zone

+

这些统计被重置的时间。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_CKPT_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_CKPT_STATUS.md new file mode 100644 index 0000000000000000000000000000000000000000..81379ce45e76b44f9465230f8b5806110f46f5cf --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_CKPT_STATUS.md @@ -0,0 +1,67 @@ +# GLOBAL\_CKPT\_STATUS + +GLOBAL\_CKPT\_STATUS视图用于显示openGauss所有实例的检查点信息和各类日志刷页情况。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_CKPT\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

ckpt_redo_point

+

test

+

当前实例的检查点。

+

ckpt_clog_flush_num

+

bigint

+

从启动到当前时间clog刷盘页面数。

+

ckpt_csnlog_flush_num

+

bigint

+

从启动到当前时间csnlog刷盘页面数。

+

ckpt_multixact_flush_num

+

bigint

+

从启动到当前时间multixact刷盘页面数。

+

ckpt_predicate_flush_num

+

bigint

+

从启动到当前时间predicate刷盘页面数。

+

ckpt_twophase_flush_num

+

bigint

+

从启动到当前时间twophase刷盘页面数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_CONFIG_SETTINGS.md b/content/zh/docs/Developerguide/GLOBAL_CONFIG_SETTINGS.md new file mode 100644 index 0000000000000000000000000000000000000000..5bf8c048cf04e0fee142738aa823e2fafc86420a --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_CONFIG_SETTINGS.md @@ -0,0 +1,137 @@ +# GLOBAL\_CONFIG\_SETTINGS + +GLOBAL\_CONFIG\_SETTINGS显示各节点数据库运行时参数的相关信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_CONFIG\_SETTINGS的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

name

+

text

+

参数名称。

+

setting

+

text

+

参数当前值。

+

unit

+

text

+

参数的隐式结构。

+

category

+

text

+

参数的逻辑组。

+

short_desc

+

text

+

参数的简单描述。

+

extra_desc

+

text

+

参数的详细描述。

+

context

+

text

+

设置参数值的上下文,包括internal,postmaster,sighup,backend,superuser,user。

+

vartype

+

text

+

参数类型,包括bool,enum,integer,real,string。

+

source

+

text

+

参数的赋值方式。

+

min_val

+

text

+

参数最大值。如果参数类型不是数值型,那么该字段值为null。

+

max_val

+

text

+

参数最小值。如果参数类型不是数值型,那么该字段值为null。

+

enumvals

+

text[]

+

enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。

+

boot_val

+

text

+

数据库启动时参数默认值。

+

reset_val

+

text

+

数据库重置时参数默认值。

+

sourcefile

+

text

+

设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。

+

sourceline

+

integer

+

设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_DOUBLE_WRITE_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_DOUBLE_WRITE_STATUS.md new file mode 100644 index 0000000000000000000000000000000000000000..c3841b7300c6fc5e8bc6d9af6c6a6a702d225d36 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_DOUBLE_WRITE_STATUS.md @@ -0,0 +1,95 @@ +# GLOBAL\_DOUBLE\_WRITE\_STATUS + +GLOBAL\_DOUBLE\_WRITE\_STATUS视图显示openGauss所有实例的双写文件的情况。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_DOUBLEWRITE\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

curr_dwn

+

bigint

+

当前双写文件的序列号。

+

curr_start_page

+

bigint

+

当前双写文件恢复起始页面。

+

file_trunc_num

+

bigint

+

当前双写文件复用的次数。

+

file_reset_num

+

bigint

+

当前双写文件写满后发生重置的次数。

+

total_writes

+

bigint

+

当前双写文件总的I/O次数。

+

low_threshold_writes

+

bigint

+

低效率写双写文件的I/O次数(一次I/O刷页数量少于16页面)。

+

high_threshold_writes

+

bigint

+

高效率写双写文件的I/O次数(一次I/O刷页数量多于一批,421个页面)。

+

total_pages

+

bigint

+

当前刷页到双写文件区的总的页面个数。

+

low_threshold_pages

+

bigint

+

低效率刷页的页面个数。

+

high_threshold_pages

+

bigint

+

高效率刷页的页面个数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_FILE_IOSTAT.md b/content/zh/docs/Developerguide/GLOBAL_FILE_IOSTAT.md new file mode 100644 index 0000000000000000000000000000000000000000..85384127d5d91ca1098ebc59b5f6ee8cd525b4a6 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_FILE_IOSTAT.md @@ -0,0 +1,116 @@ +# GLOBAL\_FILE\_IOSTAT + +得到所有节点上的数据文件IO 统计信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_FILE\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称

+

filenum

+

oid

+

文件标识。

+

dbid

+

oid

+

数据库标识。

+

spcid

+

oid

+

表空间标识。

+

phyrds

+

bigint

+

读物理文件的数目。

+

phywrts

+

bigint

+

写物理文件的数目。

+

phyblkrd

+

bigint

+

读物理文件块的数目。

+

phyblkwrt

+

bigint

+

写物理文件块的数目。

+

readtim

+

bigint

+

读文件的总时长(单位:微秒)。

+

writetim

+

bigint

+

写文件的总时长(单位:微秒)。

+

avgiotim

+

bigint

+

读写文件的平均时长(单位:微秒)。

+

lstiotim

+

bigint

+

最后一次读文件时长(单位:微秒)。

+

miniotim

+

bigint

+

读写文件的最小时长(单位:微秒)。

+

maxiowtm

+

bigint

+

读写文件的最大时长(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_FILE_REDO_IOSTAT.md b/content/zh/docs/Developerguide/GLOBAL_FILE_REDO_IOSTAT.md new file mode 100644 index 0000000000000000000000000000000000000000..03f13ae79a04da2047ca823a8130103a9423fd09 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_FILE_REDO_IOSTAT.md @@ -0,0 +1,74 @@ +# GLOBAL\_FILE\_REDO\_IOSTAT + +得到openGauss内各节点的Redo\(WAL\)相关统计信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBALXC\_FILE\_REDO\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

phywrts

+

bigint

+

向wal buffer中写的次数。

+

phyblkwrt

+

bigint

+

向wal buffer中写的block的块数。

+

writetim

+

bigint

+

向xlog文件中写操作的时间(单位:微秒)。

+

avgiotim

+

bigint

+

平均写xlog的时间(writetim/phywrts)(单位:微秒)。

+

lstiotim

+

bigint

+

最后一次写xlog的时间(单位:微秒)。

+

miniotim

+

bigint

+

最小的写xlog时间(单位:微秒)。

+

maxiowtm

+

bigint

+

最大的写xlog时间(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_INSTANCE_TIME.md b/content/zh/docs/Developerguide/GLOBAL_INSTANCE_TIME.md new file mode 100644 index 0000000000000000000000000000000000000000..f0aaf8fecaabcd9656bd6c1498f12567b280b12d --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_INSTANCE_TIME.md @@ -0,0 +1,46 @@ +# GLOBAL\_INSTANCE\_TIME + +提供openGauss中所有正常节点下的各种时间消耗信息\(时间类型见instance\_time视图\)。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_INSTANCE\_TIME字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程的名称。

+

stat_id

+

integer

+

统计编号。

+

stat_name

+

text

+

类型名称。

+

value

+

bigint

+

时间值(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_LOCKS.md b/content/zh/docs/Developerguide/GLOBAL_LOCKS.md new file mode 100644 index 0000000000000000000000000000000000000000..cf01e01385e7467784e300842171371fd2d2889e --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_LOCKS.md @@ -0,0 +1,131 @@ +# GLOBAL\_LOCKS + +GLOBAL\_LOCKS视图用于查看各节点各打开事务所持有的锁信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_LOCKS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

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。

+

virtualxid

+

text

+

事务的虚拟ID,如果对象不是一个虚拟事务ID,则为NULL。

+

transactionid

+

xid

+

事务的ID,如果对象不是一个事务ID,则为NULL。

+

classid

+

oid

+

包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。

+

objid

+

oid

+

对象在其系统表内的OID,如果对象不是普通数据库对象,则为NULL。

+

objsubid

+

smallint

+

对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是零;如果这个对象不是普通数据库对象,则为NULL。

+

virtualtransaction

+

text

+

持有此锁或者在等待此锁的事务的虚拟ID。

+

pid

+

bigint

+

持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。

+

mode

+

text

+

这个线程持有的或者是期望的锁模式。

+

granted

+

boolean

+
  • 如果锁是持有锁,则为TRUE。
  • 如果锁是等待锁,则为FALSE。
+

fastpath

+

boolean

+

如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_MEMORY_NODE_DETAIL.md b/content/zh/docs/Developerguide/GLOBAL_MEMORY_NODE_DETAIL.md new file mode 100644 index 0000000000000000000000000000000000000000..8d6a28d7e29bb76534aabe1c2f2b89828449c6d5 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_MEMORY_NODE_DETAIL.md @@ -0,0 +1,40 @@ +# GLOBAL\_MEMORY\_NODE\_DETAIL + +显示前openGauss中所有正常节点下的内存使用情况。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_MEMORY\_NODE\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

数据库进程名称。

+

memorytype

+

text

+
内存使用的名称。
  • max_process_memory:openGauss实例所占用的内存大小。
  • process_used_memory:进程所使用的内存大小。
  • max_dynamic_memory:最大动态内存。
  • dynamic_used_memory:已使用的动态内存。
  • dynamic_peak_memory:内存的动态峰值。
  • dynamic_used_shrctx:最大动态共享内存上下文。
  • dynamic_peak_shrctx:共享内存上下文的动态峰值。
  • max_shared_memory:最大共享内存。
  • shared_used_memory:已使用的共享内存。
  • max_cstore_memory:列存所允许使用的最大内存。
  • cstore_used_memory:列存已使用的内存大小。
  • max_sctpcomm_memory:sctp通信所允许使用的最大内存。
  • sctpcomm_used_memory:sctp通信已使用的内存大小。
  • sctpcomm_peak_memory:sctp通信的内存峰值。
  • other_used_memory:其他已使用的内存大小。
  • gpu_max_dynamic_memory:GPU最大动态内存。
  • gpu_dynamic_used_memory:GPU已使用的动态内存。
  • gpu_dynamic_peak_memory:GPU内存的动态峰值。
  • pooler_conn_memory:链接池申请内存计数。
  • pooler_freeconn_memory:链接池空闲连接的内存计数。
  • storage_compress_memory:存储模块压缩使用的内存大小。
  • udf_reserved_memory:UDF预留的内存大小。
+
+

memorymbytes

+

integer

+

内存使用的大小,单位为MB。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY.md b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY.md new file mode 100644 index 0000000000000000000000000000000000000000..276d70a6d37ab9e5a50a4531c623db0d723d3258 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY.md @@ -0,0 +1,173 @@ +# GLOBAL\_OPERATOR\_HISTORY + +GLOBAL\_OPERATOR\_HISTORY系统视图显示的是当前用户在数据库主节点上执行作业结束后的算子的相关记录。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_OPERATOR\_HISTORY的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

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)。

+

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

+
主要显示如下几类告警信息:
  1. Sort/SetOp/HashAgg/HashJoin spill
  2. Spill file size large than 256MB
  3. Broadcast size large than 100MB
  4. Early spill
  5. Spill times is greater than 3
  6. Spill on memory adaptive
  7. Hash table conflict
+
+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY_TABLE.md b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY_TABLE.md new file mode 100644 index 0000000000000000000000000000000000000000..a596b408012178c35c0e2ef6453087e5aaf83b43 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_HISTORY_TABLE.md @@ -0,0 +1,4 @@ +# GLOBAL\_OPERATOR\_HISTORY\_TABLE + +GLOBAL\_OPERATOR\_HISTORY\_TABLE视图显示数据库主节点执行作业结束后的算子相关的记录。此数据是从内核中转储到系统表GS\_WLM\_OPERATOR\_INFO中的数据。该视图是查询数据库主节点系统表GS\_WLM\_OPERATOR\_INFO的汇聚视图。表字段同[表1](GLOBAL_OPERATOR_HISTORY.md#zh-cn_topic_0237122744_zh-cn_topic_0111176227_table85181143511)。查询视图必须具有monadmin权限。 + diff --git a/content/zh/docs/Developerguide/GLOBAL_OPERATOR_RUNTIME.md b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..35a87f58c2cfd65012d1f615c00d4d58090ae012 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_OPERATOR_RUNTIME.md @@ -0,0 +1,180 @@ +# GLOBAL\_OPERATOR\_RUNTIME + +GLOBAL\_OPERATOR\_RUNTIME视图显示当前用户在数据库主节点上正在执行的作业的算子相关信息。查询视图必须具有monadmin权限。 + +**表 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
+
+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_OS_RUNTIME.md b/content/zh/docs/Developerguide/GLOBAL_OS_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..4883846502f914e36d6d1f285feabe69b6df46ad --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_OS_RUNTIME.md @@ -0,0 +1,60 @@ +# GLOBAL\_OS\_RUNTIME + +提供openGauss中所有正常节点下的操作系统运行状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_OS\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

id

+

integer

+

编号。

+

name

+

text

+

操作系统运行状态名称。

+

value

+

numeric

+

操作系统运行状态值。

+

comments

+

text

+

操作系统运行状态注释。

+

cumulative

+

boolean

+

操作系统运行状态的值是否为累加值。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_OS_THREADS.md b/content/zh/docs/Developerguide/GLOBAL_OS_THREADS.md new file mode 100644 index 0000000000000000000000000000000000000000..d9c151059bdf3769688132000dd55cf20a2fcca3 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_OS_THREADS.md @@ -0,0 +1,53 @@ +# GLOBAL\_OS\_THREADS + +提供openGauss中所有正常节点下的线程状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_OS\_THREADS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

pid

+

bigint

+

当前节点进程中正在运行的线程号。

+

lwpid

+

integer

+

与pid对应的轻量级线程号。

+

thread_name

+

text

+

与pid对应的线程名称。

+

creation_time

+

timestamp with time zone

+

与pid对应的线程创建的时间。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_PAGEWRITER_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_PAGEWRITER_STATUS.md new file mode 100644 index 0000000000000000000000000000000000000000..f0fc5d86eaccc81f6fdff747ba35179802f1865b --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_PAGEWRITER_STATUS.md @@ -0,0 +1,74 @@ +# GLOBAL\_PAGEWRITER\_STATUS + +GLOBAL\_PAGEWRITER\_STATUS视图显示openGauss实例的刷页信息和检查点信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_PAGEWRITER\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

pgwr_actual_flush_total_num

+

bigint

+

从启动到当前时间总计刷脏页数量。

+

pgwr_last_flush_num

+

integer

+

上一批刷脏页数量。

+

remain_dirty_page_num

+

bigint

+

当前预计还剩余多少脏页。

+

queue_head_page_rec_lsn

+

text

+

当前实例的脏页队列第一个脏页的recovery_lsn。

+

queue_rec_lsn

+

text

+

当前实例的脏页队列的recovery_lsn。

+

current_xlog_insert_lsn

+

text

+

当前实例XLog写入的位置。

+

ckpt_redo_point

+

text

+

当前实例的检查点。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_RECORD_RESET_TIME.md b/content/zh/docs/Developerguide/GLOBAL_RECORD_RESET_TIME.md new file mode 100644 index 0000000000000000000000000000000000000000..c930fb3d209903ec12f13e281c7a2bc201e542c0 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_RECORD_RESET_TIME.md @@ -0,0 +1,32 @@ +# GLOBAL\_RECORD\_RESET\_TIME + +GLOBAL\_RECORD\_RESET\_TIME用于重置(重启,主备倒换,数据库删除)汇聚openGauss统计信息时间。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_RECORD\_RESET\_TIME字段 + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

reset_time

+

timestamp with time zone

+

重置时间点。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_RECOVERY_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_RECOVERY_STATUS.md new file mode 100644 index 0000000000000000000000000000000000000000..fa200e16d06345b0a805cb9096bb8ecff7ea0908 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_RECOVERY_STATUS.md @@ -0,0 +1,81 @@ +# GLOBAL\_RECOVERY\_STATUS + +GLOBAL\_RECOVERY\_STATUS视图显示关于主机和备机的日志流控信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_RECOVERY\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

主机进程名称,包含主机和备机。

+

standby_node_name

+

text

+

备机进程名称。

+

source_ip

+

text

+

主机的IP地址。

+

source_port

+

integer

+

主机的端口号。

+

dest_ip

+

text

+

备机的IP地址。

+

dest_port

+

integer

+

备机的端口号。

+

current_rto

+

bigint

+

备机当前的日志流控时间,单位秒。

+

target_rto

+

bigint

+

备机通过GUC参数设置的预期流控时间,单位秒。

+

current_sleep_time

+

bigint

+

为了达到这个预期主机所需要的睡眠时间,单位微妙。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_REDO_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_REDO_STATUS.md new file mode 100644 index 0000000000000000000000000000000000000000..b1302a926a5303e4e95a430ad9108031df3ed6d5 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_REDO_STATUS.md @@ -0,0 +1,179 @@ +# GLOBAL\_REDO\_STATUS + +GLOBAL\_REDO\_STATUS视图显示openGauss实例的日志回放情况。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_REDO\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

redo_start_ptr

+

bigint

+

当前实例日志回放的起始点。

+

redo_start_time

+

bigint

+

当前实例日志回放的起始UTC时间。

+

redo_done_time

+

bigint

+

当前实例日志回放的结束UTC时间。

+

curr_time

+

bigint

+

当前实例的当前UTC时间。

+

min_recovery_point

+

bigint

+

当前实例日志的最小一致性点位置。

+

read_ptr

+

bigint

+

当前实例日志的读取位置。

+

last_replayed_read_ptr

+

bigint

+

当前实例的日志回放位置。

+

recovery_done_ptr

+

bigint

+

当前实例启动完成时的回放位置。

+

read_xlog_io_counter

+

bigint

+

当前实例读取回放日志的io次数计数。

+

read_xlog_io_total_dur

+

bigint

+

当前实例读取回放日志的io总时延。

+

read_data_io_counter

+

bigint

+

当前实例回放过程中读取数据页面的io次数计数。

+

read_data_io_total_dur

+

bigint

+

当前实例回放过程中读取数据页面的io总时延。

+

write_data_io_counter

+

bigint

+

当前实例回放过程中写数据页面的io次数计数。

+

write_data_io_total_dur

+

bigint

+

当前实例回放过程中写数据页面的io总时延。

+

process_pending_counter

+

bigint

+

当前实例回放过程中日志分发线程的同步次数计数。

+

process_pending_total_dur

+

bigint

+

当前实例回放过程中日志分发线程的同步总时延。

+

apply_counter

+

bigint

+

当前实例回放过程中回放线程的同步次数计数。

+

apply_total_dur

+

bigint

+

当前实例回放过程中回放线程的同步总时延。

+

speed

+

bigint

+

当前实例日志回放速率。

+

local_max_ptr

+

bigint

+

当前实例启动成功后本地收到的回放日志的最大值。

+

primary_flush_ptr

+

bigint

+

主机落盘日志的位置。

+

worker_info

+

text

+

当前实例回放线程信息,若没有开并行回放则该值为空。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_REL_IOSTAT.md b/content/zh/docs/Developerguide/GLOBAL_REL_IOSTAT.md new file mode 100644 index 0000000000000000000000000000000000000000..7b7ad37922c59e0795144046e7f365c124bfa66b --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_REL_IOSTAT.md @@ -0,0 +1,53 @@ +# GLOBAL\_REL\_IOSTAT + +获取所有节点上的数据文件IO统计信息,查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_REL\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称

+

phyrds

+

bigint

+

读物理文件的数目。

+

phywrts

+

bigint

+

写物理文件的数目。

+

phyblkrd

+

bigint

+

读物理文件块的数目。

+

phyblkwrt

+

bigint

+

写物理文件块的数目。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_REPLICATION_SLOTS.md b/content/zh/docs/Developerguide/GLOBAL_REPLICATION_SLOTS.md new file mode 100644 index 0000000000000000000000000000000000000000..aa47f227da49cdf97432b275693442ea77510cbb --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_REPLICATION_SLOTS.md @@ -0,0 +1,95 @@ +# GLOBAL\_REPLICATION\_SLOTS + +GLOBAL\_REPLICATION\_SLOTS视图用于查看openGauss各节点的复制节点的信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_REPLICATION\_SLOTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

slot_name

+

text

+

复制节点的名称。

+

plugin

+

text

+

插件名称。

+

slot_type

+

text

+

复制节点的类型。

+

datoid

+

oid

+

复制节点的数据库OID。

+

database

+

name

+

复制节点的数据库名称。

+

active

+

boolean

+

复制节点是否为激活状态。

+

x_min

+

xid

+

复制节点事务标识。

+

catalog_xmin

+

xid

+

逻辑复制槽对应的最早解码事务标识.

+

restart_lsn

+

text

+

复制节点的Xlog文件信息。

+

dummy_standby

+

boolean

+

复制节点是否为假备。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_REPLICATION_STAT.md b/content/zh/docs/Developerguide/GLOBAL_REPLICATION_STAT.md new file mode 100644 index 0000000000000000000000000000000000000000..a6d905db3855760c12ce650ed1489cfe3785071c --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_REPLICATION_STAT.md @@ -0,0 +1,131 @@ +# GLOBAL\_REPLICATION\_STAT + +GLOBAL\_REPLICATION\_STAT视图用于获得各节点描述日志同步状态信息,如发起端发送日志位置,收端接收日志位置等。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_REPLICATION\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

pid

+

bigint

+

线程的PID。

+

usesysid

+

oid

+

用户系统ID。

+

usename

+

name

+

用户名。

+

application_name

+

text

+

程序名称。

+

client_addr

+

inet

+

客户端地址。

+

client_hostname

+

text

+

客户端名。

+

client_port

+

integer

+

客户端端口。

+

backend_start

+

timestamp with time zone

+

程序启动时间。

+

state

+

text

+

日志复制的状态(追赶状态,还是一致的流状态)。

+

sender_sent_location

+

text

+

发送端发送日志位置。

+

receiver_write_location

+

text

+

接收端write日志位置。

+

receiver_flush_location

+

text

+

接收端flush日志位置。

+

receiver_replay_location

+

text

+

接收端replay日志位置。

+

sync_priority

+

integer

+

同步复制的优先级(0表示异步)。

+

sync_state

+

text

+
同步状态:
  • 异步复制
  • 同步复制
  • 潜在同步者
+
+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY.md b/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY.md new file mode 100644 index 0000000000000000000000000000000000000000..44fa476bf858e84dc15b8866da46111874b49196 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY.md @@ -0,0 +1,53 @@ +# GLOBAL\_SESSION\_MEMORY + +统计各节点的Session级别的内存使用情况,包含执行作业在数据节点上Postgres线程和Stream线程分配的所有内存,单位为MB。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_SESSION\_MEMORY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

sessid

+

text

+

线程启动时间+线程标识。

+

init_mem

+

integer

+

当前正在执行作业进入执行器前已分配的内存。

+

used_mem

+

integer

+

当前正在执行作业已分配的内存。

+

peak_mem

+

integer

+

当前正在执行作业已分配的内存峰值。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY_DETAIL.md new file mode 100644 index 0000000000000000000000000000000000000000..e491f657940de941abee668eaac59581eaf01b58 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_SESSION_MEMORY_DETAIL.md @@ -0,0 +1,81 @@ +# GLOBAL\_SESSION\_MEMORY\_DETAIL + +统计各节点的线程的内存使用情况,以MemoryContext节点来统计。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_SESSION\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

sessid

+

text

+

线程启动时间+线程标识。

+

sesstype

+

text

+

线程名称。

+

contextname

+

text

+

内存上下文名称。

+

level

+

smallint

+

内存上下文的重要级别。

+

parent

+

text

+

父级内存上下文名称。

+

totalsize

+

bigint

+

总申请内存大小(单位:字节)。

+

freesize

+

bigint

+

空闲内存大小(单位:字节)。

+

usedsize

+

bigint

+

使用内存大小(单位:字节)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT.md b/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT.md new file mode 100644 index 0000000000000000000000000000000000000000..020ffc8d116b24208e6ee1e494fe7ba8d46564a2 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT.md @@ -0,0 +1,60 @@ +# GLOBAL\_SESSION\_STAT + +各节点上以会话线程或AutoVacuum线程为单位,统计会话状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_SESSION\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

sessid

+

text

+

线程启动时间+线程标识。

+

statid

+

integer

+

统计编号。

+

statname

+

text

+

统计会话名称。

+

statunit

+

text

+

统计会话单位。

+

value

+

bigint

+

统计会话值。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT_ACTIVITY.md b/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT_ACTIVITY.md new file mode 100644 index 0000000000000000000000000000000000000000..c3760d8a267e9b8063d22247184a796ffaf7f7b5 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_SESSION_STAT_ACTIVITY.md @@ -0,0 +1,171 @@ +# GLOBAL\_SESSION\_STAT\_ACTIVITY + +显示openGauss内各节点上正在运行的线程相关的信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_SESSION\_STAT\_ACTIVITY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

coorname

+

text

+

数据库进程名称。

+

datid

+

oid

+

用户会话在后台连接到的数据库OID。

+

datname

+

text

+

用户会话在后台连接到的数据库名称。

+

pid

+

bigint

+

后台线程ID。

+

usesysid

+

oid

+

登录该后台的用户OID。

+

usename

+

text

+

登录该后台的用户名。

+

application_name

+

text

+

连接到该后台的应用名。

+

client_addr

+

inet

+

连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

+

client_port

+

integer

+

客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。

+

backend_start

+

timestampwith time zone

+

该过程开始的时间,即当客户端连接服务器时间。

+

xact_start

+

timestampwith time zone

+

启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。

+

query_start

+

timestampwith time zone

+

开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。

+

state_change

+

timestampwith time zone

+

上次状态改变的时间。

+

waiting

+

boolean

+

如果后台当前正等待锁则为true。

+

enqueue

+

text

+

该字段不支持

+

+

state

+

text

+
该后台当前总体状态。可能值是:
  • active:后台正在执行一个查询。
  • idle:后台正在等待一个新的客户端命令。
  • idle in transaction:后台在事务中,但是目前无法执行查询。
  • idle in transaction (aborted):这个状态除说明事务中有某个语句导致了错误外,类似于idle in transaction
  • fastpath function call:后台正在执行一个fast-path函数。
  • disabled:如果后台禁用track_activities,则报告这个状态。
    说明:

    普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空:

    +

    postgres=# SELECT datname, usename, usesysid,state,pid FROM pg_stat_activity;

    +

    datname | usename | usesysid | state | pid

    +

    ----------+---------+----------+--------+-----------------postgres | omm | 10 | |139968752121616

    +

    postgres | omm | 10 | |139968903116560

    +

    db_tpcds | judy | 16398 | active |139968391403280

    +

    postgres | omm | 10 | |139968643069712

    +

    postgres | omm | 10 | |139968680818448

    +

    postgres | joe | 16390 | |139968563377936

    +

    (6 rows)

    +
    +
+
+

resource_pool

+

name

+

用户使用的资源池。

+

query_id

+

bigint

+

查询语句的ID。

+

query

+

text

+

该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SESSION_TIME.md b/content/zh/docs/Developerguide/GLOBAL_SESSION_TIME.md new file mode 100644 index 0000000000000000000000000000000000000000..7ab14722f6b57ec978444f685810556ca29224c4 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_SESSION_TIME.md @@ -0,0 +1,53 @@ +# GLOBAL\_SESSION\_TIME + +用于统计各节点会话线程的运行时间信息,及各执行阶段所消耗时间。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_SESSION\_TIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

sessid

+

text

+

线程启动时间+线程标识。

+

stat_id

+

integer

+

统计编号。

+

stat_name

+

text

+

会话类型名称。

+

value

+

bigint

+

会话值。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_SHARED_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/GLOBAL_SHARED_MEMORY_DETAIL.md new file mode 100644 index 0000000000000000000000000000000000000000..5829b1f457f63490b6def6b12b972f9d8539dcef --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_SHARED_MEMORY_DETAIL.md @@ -0,0 +1,67 @@ +# GLOBAL\_SHARED\_MEMORY\_DETAIL + +查询openGauss中所有正常节点下的共享内存上下文的使用信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_SHARED\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

contextname

+

text

+

内存上下文的名称。

+

level

+

smallint

+

内存上下文的级别。

+

parent

+

text

+

上级内存上下文。

+

totalsize

+

bigint

+

共享内存总大小(单位:字节)。

+

freesize

+

bigint

+

共享内存剩余大小(单位:字节)。

+

usedsize

+

bigint

+

共享内存使用大小(单位:字节)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY.md b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY.md new file mode 100644 index 0000000000000000000000000000000000000000..54bd71ba7e5ed7c0b5106f689182ff1d73489e98 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY.md @@ -0,0 +1,496 @@ +# GLOBAL\_STATEMENT\_COMPLEX\_HISTORY + +显示各个节点执行作业结束后的负载管理记录,查询该函数必须具有monadmin权限。 + +**表 1** GLOBAL\_STATEMENT\_COMPLEX\_HISTORY的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库OID。

+

dbname

+

text

+

连接后端的数据库名称。

+

schemaname

+

text

+

模式的名称。

+

nodename

+

text

+

数据库进程名称

+

username

+

text

+

连接到后端的用户名。

+

application_name

+

text

+

连接到后端的应用名。

+

client_addr

+

inet

+

连接到后端的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

+

client_port

+

integer

+

客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。

+

query_band

+

text

+

用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。

+

block_time

+

bigint

+

语句执行前的阻塞时间,包含语句解析和优化时间,单位ms。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

finish_time

+

timestamp with time zone

+

语句执行的结束时间。

+

duration

+

bigint

+

语句实际执行的时间,单位ms。

+

estimate_total_time

+

bigint

+

语句预估执行时间,单位ms。

+

status

+

text

+

语句执行结束状态:正常为finished,异常为aborted。

+

abort_info

+

text

+

语句执行结束状态为aborted时显示异常信息。

+

resource_pool

+

text

+

用户使用的资源池。

+

control_group

+

text

+

语句所使用的Cgroup。

+

estimate_memory

+

integer

+

语句预估使用内存。

+

min_peak_memory

+

integer

+

语句在数据库节点上的最小内存峰值,单位MB。

+

max_peak_memory

+

integer

+

语句在数据库节点上的最大内存峰值,单位MB。

+

average_peak_memory

+

integer

+

语句执行过程中的内存使用平均值,单位MB。

+

memory_skew_percent

+

integer

+

语句数据库节点间的内存使用倾斜率。

+

spill_info

+

text

+
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为b个数据库节点中有a个数据库节点下盘。
+
+

min_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

+

max_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

+

average_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库节点间下盘倾斜率。

+

min_dn_time

+

bigint

+

语句在数据库节点上的最小执行时间,单位ms。

+

max_dn_time

+

bigint

+

语句在数据库节点上的最大执行时间,单位ms。

+

average_dn_time

+

bigint

+

语句在数据库节点上的平均执行时间,单位ms。

+

dntime_skew_percent

+

integer

+

语句在数据库节点的执行时间倾斜率。

+

min_cpu_time

+

bigint

+

语句在数据库节点上的最小CPU时间,单位ms。

+

max_cpu_time

+

bigint

+

语句在数据库节点上的最大CPU时间,单位ms。

+

total_cpu_time

+

bigint

+

语句在数据库节点上的CPU总时间,单位ms。

+

cpu_skew_percent

+

integer

+

语句在数据库节点间的CPU时间倾斜率。

+

min_peak_iops

+

integer

+

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

+

max_peak_iops

+

integer

+

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

+

average_peak_iops

+

integer

+

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

+

iops_skew_percent

+

integer

+

语句在数据库节点间的IO倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • 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
+
+

queryid

+

bigint

+

语句执行使用的内部query id。

+

query

+

text

+

执行的语句。

+

query_plan

+

text

+

语句的执行计划。

+

node_group

+

text

+

语句所属用户对应的逻辑openGauss。

+

cpu_top1_node_name

+

text

+

cpu使用率第1的节点名称。

+

cpu_top2_node_name

+

text

+

cpu使用率第2的节点名称。

+

cpu_top3_node_name

+

text

+

cpu使用率第3的节点名称。

+

cpu_top4_node_name

+

text

+

cpu使用率第4的节点名称。

+

cpu_top5_node_name

+

text

+

cpu使用率第5的节点名称。

+

mem_top1_node_name

+

text

+

内存使用量第1的节点名称。

+

mem_top2_node_name

+

text

+

内存使用量第2的节点名称。

+

mem_top3_node_name

+

text

+

内存使用量第3的节点名称。

+

mem_top4_node_name

+

text

+

内存使用量第4的节点名称。

+

mem_top5_node_name

+

text

+

内存使用量第5的节点名称。

+

cpu_top1_value

+

bigint

+

cpu使用率。

+

cpu_top2_value

+

bigint

+

cpu使用率。

+

cpu_top3_value

+

bigint

+

cpu使用率。

+

cpu_top4_value

+

bigint

+

cpu使用率。

+

cpu_top5_value

+

bigint

+

cpu使用率。

+

mem_top1_value

+

bigint

+

内存使用量。

+

mem_top2_value

+

bigint

+

内存使用量。

+

mem_top3_value

+

bigint

+

内存使用量。

+

mem_top4_value

+

bigint

+

内存使用量。

+

mem_top5_value

+

bigint

+

内存使用量。

+

top_mem_dn

+

text

+

内存使用量topN信息。

+

top_cpu_dn

+

text

+

cpu使用量topN信息。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY_TABLE.md b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY_TABLE.md new file mode 100644 index 0000000000000000000000000000000000000000..31d1e682805cf38da7d176e8acb1667736b829b9 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_HISTORY_TABLE.md @@ -0,0 +1,4 @@ +# GLOBAL\_STATEMENT\_COMPLEX\_HISTORY\_TABLE + +显示各个节点执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。具体的字段请参考[GLOBAL\_STATEMENT\_COMPLEX\_HISTORY](GLOBAL_STATEMENT_COMPLEX_HISTORY.md)中的字段。 + diff --git a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_RUNTIME.md b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..83c55eeeb034fec93bd2d8ab71eed23dbd256f3b --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COMPLEX_RUNTIME.md @@ -0,0 +1,356 @@ +# GLOBAL\_STATEMENT\_COMPLEX\_RUNTIME + +显示当前用户在各个节点上正在执行的作业的负载管理记录,查询该函数必须具有monadmin权限。 + +**表 1** GLOBAL\_STATEMENT\_COMPLEX\_RUNTIME的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据OID。

+

dbname

+

name

+

连接后端的数据库名称。

+

schemaname

+

text

+

模式的名称。

+

nodename

+

text

+

数据库进程名称

+

username

+

name

+

连接到后端的用户名。

+

application_name

+

text

+

连接到后端的应用名。

+

client_addr

+

inet

+

连接到后端的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

+

client_port

+

integer

+

客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。

+

query_band

+

text

+

用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。

+

pid

+

bigint

+

后端线程ID。

+

block_time

+

bigint

+

语句执行前的阻塞时间,单位ms。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

duration

+

bigint

+

语句已经执行的时间,单位ms。

+

estimate_total_time

+

bigint

+

语句执行预估总时间,单位ms。

+

estimate_left_time

+

bigint

+

语句执行预估剩余时间,单位ms。

+

enqueue

+

text

+

工作负载管理资源状态。

+

resource_pool

+

name

+

用户使用的资源池。

+

control_group

+

text

+

语句所使用的Cgroup。

+

estimate_memory

+

integer

+

语句预估使用内存,单位MB。

+

min_peak_memory

+

integer

+

语句在数据库节点上的最小内存峰值,单位MB。

+

max_peak_memory

+

integer

+

语句在数据库节点上的最大内存峰值,单位MB。

+

average_peak_memory

+

integer

+

语句执行过程中的内存使用平均值,单位MB。

+

memory_skew_percent

+

integer

+

语句在数据库节点间的内存使用倾斜率。

+

spill_info

+

text

+
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为b个数据库节点中有a个数据库节点下盘。
+
+

min_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

+

max_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

+

average_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库节点间下盘倾斜率。

+

min_dn_time

+

bigint

+

语句在数据库节点上的最小执行时间,单位ms。

+

max_dn_time

+

bigint

+

语句在数据库节点上的最大执行时间,单位ms。

+

average_dn_time

+

bigint

+

语句在数据库节点上的平均执行时间,单位ms。

+

dntime_skew_percent

+

integer

+

语句在数据库节点的执行时间倾斜率。

+

min_cpu_time

+

bigint

+

语句在数据库节点上的最小CPU时间,单位ms。

+

max_cpu_time

+

bigint

+

语句在数据库节点上的最大CPU时间,单位ms。

+

total_cpu_time

+

bigint

+

语句在数据库节点上的CPU总时间,单位ms。

+

cpu_skew_percent

+

integer

+

语句在数据库节点间的CPU时间倾斜率。

+

min_peak_iops

+

integer

+

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

+

max_peak_iops

+

integer

+

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

+

average_peak_iops

+

integer

+

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

+

iops_skew_percent

+

integer

+

语句在数据库节点间的IO倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • 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
+
+

queryid

+

bigint

+

语句执行使用的内部query id。

+

query

+

text

+

正在执行的语句。

+

query_plan

+

text

+

语句的执行计划。

+

node_group

+

text

+

语句所属用户对应的逻辑openGauss。

+

top_cpu_dn

+

text

+

cpu使用量topN信息。

+

top_mem_dn

+

text

+

内存使用量topN信息。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COUNT.md b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COUNT.md new file mode 100644 index 0000000000000000000000000000000000000000..02ad1a7fbaae6baafcf2f6b70a157f3c0cea8e76 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATEMENT_COUNT.md @@ -0,0 +1,200 @@ +# GLOBAL\_STATEMENT\_COUNT + +显示数据库各节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)和\(DDL、DML、DCL\)统计信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STATEMENT\_COUNT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

user_name

+

text

+

用户名。

+

select_count

+

bigint

+

select语句统计结果。

+

update_count

+

bigint

+

update语句统计结果。

+

insert_count

+

bigint

+

insert语句统计结果。

+

delete_count

+

bigint

+

delete语句统计结果。

+

mergeinto_count

+

bigint

+

merge into语句统计结果。

+

ddl_count

+

bigint

+

DDL语句的数量。

+

dml_count

+

bigint

+

DML语句的数量。

+

dcl_count

+

bigint

+

DCL语句的数量。

+

total_select_elapse

+

bigint

+

总select的时间花费(单位:微秒)。

+

avg_select_elapse

+

bigint

+

平均select的时间花费(单位:微秒)。

+

max_select_elapse

+

bigint

+

最大select的时间花费(单位:微秒)。

+

min_select_elapse

+

bigint

+

最小select的时间花费(单位:微秒)。

+

total_update_elapse

+

bigint

+

总update的时间花费(单位:微秒)。

+

avg_update_elapse

+

bigint

+

平均update的时间花费(单位:微秒)。

+

max_update_elapse

+

bigint

+

最大update的时间花费(单位:微秒)。

+

min_update_elapse

+

bigint

+

最小update的时间花费(单位:微秒)。

+

total_insert_elapse

+

bigint

+

总insert的时间花费(单位:微秒)。

+

avg_insert_elapse

+

bigint

+

平均insert的时间花费(单位:微秒)。

+

max_insert_elapse

+

bigint

+

最大insert的时间花费(单位:微秒)。

+

min_insert_elapse

+

bigint

+

最小insert的时间花费(单位:微秒)。

+

total_delete_elapse

+

bigint

+

总delete的时间花费(单位:微秒)。

+

avg_delete_elapse

+

bigint

+

平均delete的时间花费(单位:微秒)。

+

max_delete_elapse

+

bigint

+

最大delete的时间花费(单位:微秒)。

+

min_delete_elapse

+

bigint

+

最小delete的时间花费(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..715f1fbd031087d009f1c60ac44604bc0340f0d7 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_INDEXES.md @@ -0,0 +1,74 @@ +# GLOBAL\_STATIO\_ALL\_INDEXES + +GLOBAL\_STATIO\_ALL\_INDEXES视图包含各节点的数据库中的每个索引行,显示特定索引的I/O的统计。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STATIO\_ALL\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

索引的表的OID。

+

indexrelid

+

oid

+

该索引的OID。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

numeric

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_SEQUENCES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_SEQUENCES.md new file mode 100644 index 0000000000000000000000000000000000000000..090ba7c91849b4fca1f71d30b36f36ea2a47edad --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_SEQUENCES.md @@ -0,0 +1,60 @@ +# GLOBAL\_STATIO\_ALL\_SEQUENCES + +GLOBAL\_STATIO\_ALL\_SEQUENCES包含各节点的数据库中每个序列的每一行,显示特定序列关于I/O的统计。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STATIO\_ALL\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

序列OID。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..b350a9605b7743c5920c75465fdc8409dda0f4d2 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_ALL_TABLES.md @@ -0,0 +1,102 @@ +# GLOBAL\_STATIO\_ALL\_TABLES + +GLOBAL\_STATIO\_ALL\_TABLES视图将包含各节点的数据库中每个表(包括TOAST表)的I/O的统计。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STATIO\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表OID。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

此表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

此表的TOAST表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

此表的TOAST表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

此表的TOAST表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

此表的TOAST表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..ebb6e81653c724922f22af6096fc4983e7b57295 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_INDEXES.md @@ -0,0 +1,74 @@ +# GLOBAL\_STATIO\_SYS\_INDEXES + +GLOBAL\_STATIO\_SYS\_INDEXES视图显示各节点的命名空间中所有系统表索引的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STATIO\_SYS\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

索引的表的OID。

+

indexrelid

+

oid

+

该索引的OID。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

numeric

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_SEQUENCES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_SEQUENCES.md new file mode 100644 index 0000000000000000000000000000000000000000..41c1ac7f5939b9a44d1be99cd20a0760ec3b9583 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_SEQUENCES.md @@ -0,0 +1,60 @@ +# GLOBAL\_STATIO\_SYS\_SEQUENCES + +GLOBAL\_STATIO\_SYS\_SEQUENCES视图显示各节点的命名空间中所有系统表为序列的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STATIO\_SYS\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

序列OID。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..3659e7d54faff8c84890d5cbcfa2acbbc750f02a --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_SYS_TABLES.md @@ -0,0 +1,102 @@ +# GLOBAL\_STATIO\_SYS\_TABLES + +GLOBAL\_STATIO\_SYS\_TABLES视图显示各节点的命名空间中所有系统表的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STATIO\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表OID。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

此表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

此表的TOAST表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

此表的TOAST表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

此表的TOAST表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

此表的TOAST表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..dfc29616d7abc7e154c7225aa8d25f49e772a631 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_INDEXES.md @@ -0,0 +1,74 @@ +# GLOBAL\_STATIO\_USER\_INDEXES + +GLOBAL\_STATIO\_USER\_INDEXES视图显示各节点的命名空间中所有用户关系表索引的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STATIO\_USER\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

索引的表的OID。

+

indexrelid

+

oid

+

该索引的OID。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

numeric

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_SEQUENCES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_SEQUENCES.md new file mode 100644 index 0000000000000000000000000000000000000000..43e8aae481ca8945d5503ce3c312460e2c1cd955 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_SEQUENCES.md @@ -0,0 +1,60 @@ +# GLOBAL\_STATIO\_USER\_SEQUENCES + +GLOBAL\_STATIO\_USER\_SEQUENCES视图显示各节点的命名空间中所有用户关系表类型为序列的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STATIO\_USER\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

序列OID。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..c06d2848c9de0896b9931f270a4ce4b512429388 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STATIO_USER_TABLES.md @@ -0,0 +1,102 @@ +# GLOBAL\_STATIO\_USER\_TABLES + +GLOBAL\_STATIO\_USER\_TABLES视图显示各节点的命名空间中所有用户关系表的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STATIO\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

节点名称。

+

relid

+

oid

+

表OID。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

此表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

此表的TOAST表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

此表的TOAST表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

此表的TOAST表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

此表的TOAST表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..b97b834e7a276311f39d92ce08cf2b6eab064847 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_INDEXES.md @@ -0,0 +1,81 @@ +# GLOBAL\_STAT\_ALL\_INDEXES + +将包含各节点数据库中的每个索引行,显示访问特定索引的统计。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_ALL\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

这个索引的表的OID。

+

indexrelid

+

oid

+

索引的OID。

+

schemaname

+

name

+

索引中模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..cab0f6f8d00f62b68c5d8ffa255ba778fdfe75c3 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_ALL_TABLES.md @@ -0,0 +1,172 @@ +# GLOBAL\_STAT\_ALL\_TABLES + +得到各节点数据中每个表的一行(包括TOAST表)的统计信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次此表是手动清理的(不计算VACUUM FULL)的时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被autovacuum守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被autovacuum守护进程分析时间。

+

vacuum_count

+

bigint

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

这个表被autovacuum清理的次数。

+

analyze_count

+

bigint

+

这个表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

这个表被autovacuum守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_BAD_BLOCK.md b/content/zh/docs/Developerguide/GLOBAL_STAT_BAD_BLOCK.md new file mode 100644 index 0000000000000000000000000000000000000000..99bcb5f2b58c140d279613561d4c2247b39feb59 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_BAD_BLOCK.md @@ -0,0 +1,74 @@ +# GLOBAL\_STAT\_BAD\_BLOCK + +获得各节点的表、索引等文件的读取失败信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_BAD\_BLOCK字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

databaseid

+

integer

+

database的oid。

+

tablespaceid

+

integer

+

tablespace的oid。

+

relfilenode

+

integer

+

relation的file node。

+

forknum

+

integer

+

fork编号。

+

error_count

+

integer

+

error的数量。

+

first_time

+

timestamp with time zone

+

坏块第一次出现的时间。

+

last_time

+

timestamp with time zone

+

坏块最后出现的时间。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE.md b/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE.md new file mode 100644 index 0000000000000000000000000000000000000000..e1b7d10b50b6c86fd46a5a440ac2b54cc5423125 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE.md @@ -0,0 +1,158 @@ +# GLOBAL\_STAT\_DATABASE + +视图将包含openGauss中各节点的每个数据库的每一行,显示数据库统计。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_DATABASE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

datid

+

oid

+

数据库的OID。

+

datname

+

name

+

这个数据库的名称。

+

numbackends

+

integer

+

当前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。

+

xact_commit

+

bigint

+

此数据库中已经提交的事务数。

+

xact_rollback

+

bigint

+

此数据库中已经回滚的事务数。

+

blks_read

+

bigint

+

在这个数据库中读取的磁盘块的数量。

+

blks_hit

+

bigint

+

高速缓存中已经发现的磁盘块的次数,这样读取是不必要的(这只包括数据库内核缓冲区高速缓存,没有操作系统的文件系统缓存)。

+

tup_returned

+

bigint

+

通过数据库查询返回的行数。

+

tup_fetched

+

bigint

+

通过数据库查询抓取的行数。

+

tup_inserted

+

bigint

+

通过数据库查询插入的行数。

+

tup_updated

+

bigint

+

通过数据库查询更新的行数。

+

tup_deleted

+

bigint

+

通过数据库查询删除的行数。

+

conflicts

+

bigint

+

由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见STAT_DATABASE_CONFLICTS获取更多信息。

+

temp_files

+

bigint

+

通过数据库查询创建的临时文件数量。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不管log_temp_files设置。

+

temp_bytes

+

bigint

+

通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管log_temp_files设置。

+

deadlocks

+

bigint

+

在该数据库中检索的死锁数。

+

blk_read_time

+

double precision

+

通过数据库后端读取数据文件块花费的时间,以毫秒计算。

+

blk_write_time

+

double precision

+

通过数据库后端写入数据文件块花费的时间,以毫秒计算。

+

stats_reset

+

timestamp with time zone

+

重置当前状态统计的时间。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE_CONFLICTS.md b/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE_CONFLICTS.md new file mode 100644 index 0000000000000000000000000000000000000000..8fc226068788a841862d6c9cb8ead0048a6ba0d2 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_DATABASE_CONFLICTS.md @@ -0,0 +1,74 @@ +# GLOBAL\_STAT\_DATABASE\_CONFLICTS + +显示每个节点的数据库冲突状态的统计信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_DATABASE\_CONFLICTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称

+

datid

+

oid

+

数据库标识。

+

datname

+

name

+

数据库名称。

+

confl_tablespace

+

bigint

+

冲突的表空间的数目。

+

confl_lock

+

bigint

+

冲突的锁数目。

+

confl_snapshot

+

bigint

+

冲突的快照数目。

+

confl_bufferpin

+

bigint

+

冲突的缓冲区数目。

+

confl_deadlock

+

bigint

+

冲突的死锁数目。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_DB_CU.md b/content/zh/docs/Developerguide/GLOBAL_STAT_DB_CU.md new file mode 100644 index 0000000000000000000000000000000000000000..9511fb7348900ecb495a6509dec83f0dcd79c373 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_DB_CU.md @@ -0,0 +1,53 @@ +# GLOBAL\_STAT\_DB\_CU + +GLOBAL\_STAT\_DB\_CU视图用于查询openGauss,每个数据库的CU命中情况。可以通过gs\_stat\_reset\(\)进行清零。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_DB\_CU字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name1

+

text

+

数据库进程名称。

+

db_name

+

text

+

数据库名。

+

mem_hit

+

bigint

+

内存命中次数。

+

hdd_sync_read

+

bigint

+

硬盘同步读次数。

+

hdd_asyn_read

+

bigint

+

硬盘异步读次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_SESSION_CU.md b/content/zh/docs/Developerguide/GLOBAL_STAT_SESSION_CU.md new file mode 100644 index 0000000000000000000000000000000000000000..9dd6a5b7acd00635c2fe8a022cf40ec90f27c51e --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_SESSION_CU.md @@ -0,0 +1,39 @@ +# GLOBAL\_STAT\_SESSION\_CU + +GLOBAL\_STAT\_SESSION\_CU用于查询openGauss各个节点,当前运行session的CU命中情况。session退出相应的统计数据会清零。openGauss重启后,统计数据也会清零。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_SESSION\_CU字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

mem_hit

+

integer

+

内存命中次数。

+

hdd_sync_read

+

integer

+

硬盘同步读次数。

+

hdd_asyn_read

+

integer

+

硬盘异步读次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..70ee6a35bee2c56d77276dbd0c33ca44fa70a184 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_INDEXES.md @@ -0,0 +1,81 @@ +# GLOBAL\_STAT\_SYS\_INDEXES + +得到各节点pg\_catalog、information\_schema以及pg\_toast模式中所有系统表的索引状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_SYS\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称

+

relid

+

oid

+

这个索引的表的OID。

+

indexrelid

+

oid

+

索引的OID。

+

schemaname

+

name

+

索引中模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..76f2e3668c3c0ba9fe0ef38a77a7e63ed7f3c4be --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_SYS_TABLES.md @@ -0,0 +1,172 @@ +# GLOBAL\_STAT\_SYS\_TABLES + +得到各节点pg\_catalog、information\_schema模式的所有命名空间中系统表的统计信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

节点名称。

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次此表是手动清理的(不计算VACUUM FULL)时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被autovacuum守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被autovacuum守护进程分析的时间。

+

vacuum_count

+

bigint

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

这个表被autovacuum清理的次数。

+

analyze_count

+

bigint

+

这个表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

这个表被autovacuum守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_USER_FUNCTIONS.md b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_FUNCTIONS.md new file mode 100644 index 0000000000000000000000000000000000000000..2367c0a254e21c59a6bdb2f08430a06480caac34 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_FUNCTIONS.md @@ -0,0 +1,67 @@ +# GLOBAL\_STAT\_USER\_FUNCTIONS + +提供openGauss中各个节点的用户所创建的函数的状态的统计信息,查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_USER\_FUNCTIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

funcid

+

oid

+

函数的id。

+

schemaname

+

name

+

此函数所在模式的名称。

+

funcname

+

name

+

函数名称。

+

calls

+

bigint

+

该函数被调用的次数。

+

total_time

+

double precision

+

此函数及其调用的所有其他函数所花费的总时间(以毫秒为单位)。

+

self_time

+

double precision

+

在此函数本身中花费的总时间(不包括它调用的其他函数),以毫秒为单位。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_USER_INDEXES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..d45da524141606503ec35462d4be528f82c84179 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_INDEXES.md @@ -0,0 +1,81 @@ +# GLOBAL\_STAT\_USER\_INDEXES + +得到各节点数据库中用户自定义普通表的索引状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_USER\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

这个索引的表的OID。

+

indexrelid

+

oid

+

索引的OID。

+

schemaname

+

name

+

索引中模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_USER_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..a57b6ae115760da4df65b15ff2527429edbe8a71 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_USER_TABLES.md @@ -0,0 +1,172 @@ +# GLOBAL\_STAT\_USER\_TABLES + +得到各节点所有命名空间中用户自定义普通表的状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(即没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次此表是手动清理的(不计算VACUUM FULL)时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被autovacuum守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被autovacuum守护进程分析的时间。

+

vacuum_count

+

bigint

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

这个表被autovacuum清理的次数。

+

analyze_count

+

bigint

+

这个表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

这个表被autovacuum守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_ALL_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_ALL_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..e8f9b9128718c948e6e093996cadefbebb86e30b --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_ALL_TABLES.md @@ -0,0 +1,102 @@ +# GLOBAL\_STAT\_XACT\_ALL\_TABLES + +显示各节点的命名空间中所有普通表和toast表的事务状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_XACT\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_SYS_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_SYS_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..721a3fea2cebf72f34d9c9eb58fd737b043fd927 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_SYS_TABLES.md @@ -0,0 +1,102 @@ +# GLOBAL\_STAT\_XACT\_SYS\_TABLES + +显示各节点命名空间中系统表的事务状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_XACT\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

节点名称。

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_FUNCTIONS.md b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_FUNCTIONS.md new file mode 100644 index 0000000000000000000000000000000000000000..a84c809105599b9fd284433602bed549360ff89d --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_FUNCTIONS.md @@ -0,0 +1,67 @@ +# GLOBAL\_STAT\_XACT\_USER\_FUNCTIONS + +视图包含各节点本事务内函数执行的统信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_XACT\_USER\_FUNCTIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

节点名称。

+

funcid

+

oid

+

函数标识。

+

schemaname

+

name

+

模式的名称。

+

funcname

+

name

+

函数名称。

+

calls

+

bigint

+

函数被调用的次数。

+

total_time

+

double precision

+

此函数及其调用的所有其他函数所花费的总时间。

+

self_time

+

double precision

+

在此函数本身中花费的总时间(不包括它调用的其他函数)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_TABLES.md b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..b20de708dee7183cd7a0899bc8464ae4105d67f3 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_STAT_XACT_USER_TABLES.md @@ -0,0 +1,102 @@ +# GLOBAL\_STAT\_XACT\_USER\_TABLES + +显示各节点命名空间中用户表的事务状态信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_STAT\_XACT\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

此表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_THREADPOOL_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_THREADPOOL_STATUS.md new file mode 100644 index 0000000000000000000000000000000000000000..5a7cffd20be2de200cac2a94313bc1a61eaebd93 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_THREADPOOL_STATUS.md @@ -0,0 +1,4 @@ +# GLOBAL\_THREADPOOL\_STATUS + +GLOBAL\_THREADPOOL\_STATUS视图显示在所有节点上的线程池中工作线程及会话的状态信息。具体的字段[表1](LOCAL_THREADPOOL_STATUS.md#zh-cn_topic_0237122641_zh-cn_topic_0059778133_tc25f02433de2419f8da4d0a8c2c8e562)。 + diff --git a/content/zh/docs/Developerguide/GLOBAL_THREAD_WAIT_STATUS.md b/content/zh/docs/Developerguide/GLOBAL_THREAD_WAIT_STATUS.md new file mode 100644 index 0000000000000000000000000000000000000000..45413b8673f6055b6938cfd99362eae59ca4b6cc --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_THREAD_WAIT_STATUS.md @@ -0,0 +1,106 @@ +# GLOBAL\_THREAD\_WAIT\_STATUS + +通过该视图可以检测所有节点上工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况,查询视图必须具有monadmin权限。具体事件信息请参见[15.3.67-表2 等待状态列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_zh-cn_topic_0059777957_t794f802302c24514a5db22d51eabacc4)、[15.3.67-表3 轻量级锁等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_table38811324183420)、[15.3.67-表4 IO等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_table124603113369)和[15.3.67-表5 事务锁等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_table11826123533718)。 + +通过GLOBAL\_THREAD\_WAIT\_STATUS视图,可以查看openGauss全局各个节点上所有SQL语句产生的线程之间的调用层次关系,以及各个线程的阻塞等待状态,从而更容易定位hang以及类似现象的原因。 + +GLOBAL\_THREAD\_WAIT\_STATUS视图和THREAD\_WAIT\_STATUS视图列定义完全相同,这是由于GLOBAL\_THREAD\_WAIT\_STATUS视图本质是到openGauss中各个节点上查询THREAD\_WAIT\_STATUS视图汇总的结果。 + +**表 1** GLOBAL\_THREAD\_WAIT\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

db_name

+

text

+

数据库名称。

+

thread_name

+

text

+

线程名称。

+

query_id

+

bigint

+

查询ID,对应debug_query_id。

+

tid

+

bigint

+

当前线程的线程号。

+

sessionid

+

bigint

+

session的ID

+

lwtid

+

integer

+

当前线程的轻量级线程号。

+

psessionid

+

bigint

+

streaming线程的父线程。

+

tlevel

+

integer

+

streaming线程的层级。

+

smpid

+

integer

+

并行线程的ID。

+

wait_status

+

text

+

当前线程的等待状态。等待状态的详细信息请参见15.3.67-表2 等待状态列表

+

wait_event

+

text

+

如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、IO的信息。否则是空。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_PREPARED_XACTS.md b/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_PREPARED_XACTS.md new file mode 100644 index 0000000000000000000000000000000000000000..6123753a1d840d51255598b789b1dbb544fbdb78 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_TRANSACTIONS_PREPARED_XACTS.md @@ -0,0 +1,53 @@ +# GLOBAL\_TRANSACTIONS\_PREPARED\_XACTS + +显示各节点当前准备好进行两阶段提交的事务的信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_TRANSACTIONS\_PREPARED\_XACTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

transaction

+

xid

+

预备事务的数字事务标识。

+

gid

+

text

+

赋予该事务的全局事务标识。

+

prepared

+

timestamp with time zone

+

事务准备好提交的时间。

+

owner

+

name

+

执行该事务的用户的名称。

+

database

+

name

+

执行该事务所在的数据库名。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_WAIT_EVENTS.md b/content/zh/docs/Developerguide/GLOBAL_WAIT_EVENTS.md new file mode 100644 index 0000000000000000000000000000000000000000..0bacb49887f8ea2a70d07c394e9f59c7b03e0a80 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_WAIT_EVENTS.md @@ -0,0 +1,81 @@ +# GLOBAL\_WAIT\_EVENTS + +GLOBAL\_WAIT\_EVENTS视图显示各节点的event的等待相关的统计信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_WAIT\_EVENTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

数据库进程名称。

+

type

+

text

+

event类型。

+

event

+

text

+

event名称。

+

wait

+

bigint

+

等待次数。

+

failed_wait

+

bigint

+

失败的等待次数。

+

total_wait_time

+

bigint

+

总等待时间(单位:微秒)。

+

avg_wait_time

+

bigint

+

平均等待时间(单位:微秒)。

+

max_wait_time

+

bigint

+

最大等待时间(单位:微秒)。

+

min_wait_time

+

bigint

+

最小等待时间(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/GLOBAL_WORKLOAD_TRANSACTION.md b/content/zh/docs/Developerguide/GLOBAL_WORKLOAD_TRANSACTION.md new file mode 100644 index 0000000000000000000000000000000000000000..779a12b08f97113e35225d535417a8f03cbfadb8 --- /dev/null +++ b/content/zh/docs/Developerguide/GLOBAL_WORKLOAD_TRANSACTION.md @@ -0,0 +1,116 @@ +# GLOBAL\_WORKLOAD\_TRANSACTION + +显示各节点上的workload的负载信息。查询视图必须具有monadmin权限。 + +**表 1** GLOBAL\_WORKLOAD\_TRANSACTION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

workload

+

name

+

负载的名称。

+

commit_counter

+

bigint

+

用户事务commit数量。

+

rollback_counter

+

bigint

+

用户事务rollback数量。

+

resp_min

+

bigint

+

用户事务最小响应时间(单位:微秒)。

+

resp_max

+

bigint

+

用户事务最大响应时间(单位:微秒)。

+

resp_avg

+

bigint

+

用户事务平均响应时间(单位:微秒)。

+

resp_total

+

bigint

+

用户事务总响应时间(单位:微秒)。

+

bg_commit_counter

+

bigint

+

后台事务commit数量。

+

bg_rollback_counter

+

bigint

+

后台事务rollback数量。

+

bg_resp_min

+

bigint

+

后台事务最小响应时间(单位:微秒)。

+

bg_resp_max

+

bigint

+

后台事务最大响应时间(单位:微秒)。

+

bg_resp_avg

+

bigint

+

后台事务平均响应时间(单位:微秒)。

+

bg_resp_total

+

bigint

+

后台事务总响应时间(单位:微秒)。

+
+ diff --git "a/content/zh/docs/Developerguide/GOTO\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/GOTO\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..18d0839d669e819caa2ea45292484c9dd8db318c --- /dev/null +++ "b/content/zh/docs/Developerguide/GOTO\350\257\255\345\217\245.md" @@ -0,0 +1,128 @@ +# GOTO语句 + +GOTO语句可以实现从GOTO位置到目标语句的无条件跳转。GOTO语句会改变原本的执行逻辑,因此应该慎重使用,或者也可以使用EXCEPTION处理特殊场景。当执行GOTO语句时,目标Label必须是唯一的。 + +## 语法 + +label declaration ::= + +![](figures/zh-cn_image_0253404022.png) + +goto statement ::= + +![](figures/zh-cn_image_0253404023.png) + +## 示例 + +``` +postgres=# CREATE OR REPLACE PROCEDURE GOTO_test() +AS +DECLARE + v1 int; +BEGIN + v1 := 0; + LOOP + EXIT WHEN v1 > 100; + v1 := v1 + 2; + if v1 > 25 THEN + GOTO pos1; + END IF; + END LOOP; +<> +v1 := v1 + 10; +raise info 'v1 is %. ', v1; +END; +/ + +call GOTO_test(); +``` + +## 限制场景 + +GOTO使用有以下限制场景 + +- 不支持有多个相同的GOTO labels目标场景,无论是否在同一个block中。 + + ``` + BEGIN + GOTO pos1; + <> + SELECT * FROM ... + <> + UPDATE t1 SET ... + END; + ``` + + +- 不支持GOTO跳转到IF语句,CASE语句,LOOP语句中。 + + ``` + BEGIN + GOTO pos1; + IF valid THEN + <> + SELECT * FROM ... + END IF; + END; + ``` + + +- 不支持GOTO语句从一个IF子句跳转到另一个IF子句,或从一个CASE语句的WHEN子句跳转到另一个WHEN子句。 + + ``` + BEGIN + IF valid THEN + GOTO pos1; + SELECT * FROM ... + ELSE + <> + UPDATE t1 SET ... + END IF; + END; + ``` + + +- 不支持从外部块跳转到内部的BEGIN-END块。 + + ``` + BEGIN + GOTO pos1; + BEGIN + <> + UPDATE t1 SET ... + END; + END; + ``` + + +- 不支持从异常处理部分跳转到当前的BEGIN-END块。但可以跳转到上层BEGIN-END块。 + + ``` + BEGIN + <> + UPDATE t1 SET ... + EXCEPTION + WHEN condition THEN + GOTO pos1; + END; + ``` + + +- 如果从GOTO到一个不包含执行语句的位置,需要添加NULL语句。 + + ``` + DECLARE + done BOOLEAN; + BEGIN + FOR i IN 1..50 LOOP + IF done THEN + GOTO end_loop; + END IF; + <> -- not allowed unless an executable statement follows + NULL; -- add NULL statement to avoid error + END LOOP; -- raises an error without the previous NULL + END; + / + ``` + + diff --git a/content/zh/docs/Developerguide/GRANT.md b/content/zh/docs/Developerguide/GRANT.md index c7852e2b21fc8925c6e2a56f8257f8a393eb05b5..9ecb47952af911ebeee613959f7c84b2598b20a2 100644 --- a/content/zh/docs/Developerguide/GRANT.md +++ b/content/zh/docs/Developerguide/GRANT.md @@ -120,11 +120,6 @@ [ WITH GRANT OPTION ]; ``` - >![](public_sys-resources/icon-note.gif) **说明:** - >本版本只有C函数支持所有用户创建,而Java和Internal只支持拥有sysadmin权限的用户创建。 - >- 拥有sysadmin权限的用户通过grant语法来将创建C函数的权限授权给普通用户时,不支持grant usage on language c to public,只支持授权给特定用户。 - >- 拥有sysadmin权限的用户通过grant语法来将创建C函数的权限授权给普通用户时,不支持with grant option。 - - 将大对象的访问权限赋予指定的用户或角色。 ``` @@ -210,19 +205,19 @@ GRANT的权限分类如下所示。 - **SELECT** - 允许对指定的表、视图、序列执行SELECT语句。 + 允许对指定的表、视图、序列执行SELECT命令,update或delete时也需要对应字段上的select权限。 - **INSERT** - 允许对指定的表执行INSERT语句。 + 允许对指定的表执行INSERT命令。 - **UPDATE** - 允许对声明的表中任意字段执行UPDATE语句。SELECT… FOR UPDATE和SELECT… FOR SHARE除了需要SELECT权限外,还需要UPDATE权限。 + 允许对声明的表中任意字段执行UPDATE命令。通常,update命令也需要select权限来查询出哪些行需要更新。SELECT… FOR UPDATE和SELECT… FOR SHARE除了需要SELECT权限外,还需要UPDATE权限。 - **DELETE** - 允许执行DELETE语句删除指定表中的数据。 + 允许执行DELETE命令删除指定表中的数据。通常,delete命令也需要select权限来查询出哪些行需要删除。 - **TRUNCATE** @@ -230,7 +225,7 @@ GRANT的权限分类如下所示。 - **REFERENCES** - 创建一个外键约束,必须拥有参考表和被参考表的REFERENCES权限。 + 创建一个外键约束,必须拥有参考表和被参考表的REFERENCES权限。由于当前不支持外键,所以不建议使用该参数。 - **CREATE** - 对于数据库,允许在数据库里创建新的模式。 @@ -344,9 +339,6 @@ GRANT的参数说明如下所示。 如果声明了WITH GRANT OPTION,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予PUBLIC。 - >![](public_sys-resources/icon-note.gif) **说明:** - >NODE GROUP不支持WITH GRANT OPTION功能。 - 非对象所有者给其他用户授予对象权限时,命令按照以下规则执行: @@ -357,7 +349,6 @@ GRANT的参数说明如下所示。 >![](public_sys-resources/icon-note.gif) **说明:** >数据库系统管理员可以访问所有对象,而不会受对象的权限设置影响。这个特点类似Unix系统的root的权限。和root一样,除了必要的情况外,建议不要总是以系统管理员身份进行操作。 >不允许对表分区进行GRANT操作,对分区表进行GRANT操作会引起告警。 ->针对NODE GROUP,普通用户不能执行GRANT/REVOKE操作。 ## 示例 diff --git a/content/zh/docs/Developerguide/GS_OPT_MODEL.md b/content/zh/docs/Developerguide/GS_OPT_MODEL.md index a5ecdf234a4b4167c506a1719c4ed91a75669e0a..2af61d7a51cc6d01a8cb3b58793b58ce808f72b7 100644 --- a/content/zh/docs/Developerguide/GS_OPT_MODEL.md +++ b/content/zh/docs/Developerguide/GS_OPT_MODEL.md @@ -4,139 +4,136 @@ GS\_OPT\_MODEL是启用AiEngine执行计划时间预测功能时的数据表, **表 1** GS\_OPT\_MODEL字段 - - - - - - - - - - - - - diff --git a/content/zh/docs/Developerguide/GS_WLM_INSTANCE_HISTORY.md b/content/zh/docs/Developerguide/GS_WLM_INSTANCE_HISTORY.md index b6ac52b7d655063d7d1ee7330a3e645995cf765d..47e7a0d99628e88d325a92270bef03162c404b75 100644 --- a/content/zh/docs/Developerguide/GS_WLM_INSTANCE_HISTORY.md +++ b/content/zh/docs/Developerguide/GS_WLM_INSTANCE_HISTORY.md @@ -95,31 +95,31 @@ GS\_WLM\_INSTANCE\_HISTORY系统表存储与实例(数据库主节点或数据 - - - diff --git a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_HISTORY.md b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_HISTORY.md index 7a5ea656149283aaada6f9c543f7d0084de565ef..c9b0ed64e3beecdf8812ce9c8c5471e322e046ba 100644 --- a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_HISTORY.md +++ b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_HISTORY.md @@ -1,6 +1,6 @@ # GS\_WLM\_OPERATOR\_HISTORY -GS\_WLM\_OPERATOR\_HISTORY视图显示的是当前用户数据库主节点上执行作业结束后的算子的相关记录。 +GS\_WLM\_OPERATOR\_HISTORY视图显示的是当前用户当前数据库主节点上执行作业结束后的算子的相关记录。 -内核中的数据会定时被清理,清理周期为3分钟。当GUC参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为on时,视图中的记录每隔3分钟被转储到系统表[GS\_WLM\_OPERATOR\_INFO](GS_WLM_OPERATOR_INFO.md#ZH-CN_TOPIC_0242385790)中一次,同时视图中的记录被删除;当GUC参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为off时,记录在视图中的存留时间达到超期时间(超期时间为3分钟)后会被删除。记录的数据同[表1](GS_WLM_OPERATOR_INFO.md#zh-cn_topic_0237122263_zh-cn_topic_0111176227_table85181143511)。 +记录的数据同[表1](GS_WLM_OPERATOR_INFO.md#zh-cn_topic_0237122263_zh-cn_topic_0111176227_table85181143511)。 diff --git a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_INFO.md b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_INFO.md index 633134717ab260a141a608a0cea4d56ad7a882b9..cc5079ded8abe4c5e9b24698a2027740e640b36f 100644 --- a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_INFO.md +++ b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_INFO.md @@ -1,6 +1,6 @@ # GS\_WLM\_OPERATOR\_INFO -GS\_WLM\_OPERATOR\_INFO系统表显示执行作业结束后的算子相关的记录。此数据是从内核中转储到系统表中的数据。当设置GUC参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为on时,系统会定时(周期为3分钟)将[GS\_WLM\_SESSION\_HISTORY](GS_WLM_SESSION_HISTORY.md)中的记录导入此系统表,开启此功能会占用系统存储空间并对性能有一定影响,不建议用户使用。 +GS\_WLM\_OPERATOR\_INFO系统表显示执行作业结束后的算子相关的记录。此数据是从内核中转储到系统表中的数据。 **表 1** GS\_WLM\_OPERATOR\_INFO的字段 @@ -94,7 +94,7 @@ GS\_WLM\_OPERATOR\_INFO系统表显示执行作业结束后的算子相关的记 - - - - - - - - - - - - - - - - - diff --git a/content/zh/docs/Developerguide/PG_PROC.md b/content/zh/docs/Developerguide/PG_PROC.md index f54c7ef82b66fcd90280ad851e2f219e6ea7bd53..be4b5bc753c12be9744ec01fd38d7e7e93193c1c 100644 --- a/content/zh/docs/Developerguide/PG_PROC.md +++ b/content/zh/docs/Developerguide/PG_PROC.md @@ -207,7 +207,7 @@ PG\_PROC系统表存储函数或过程的信息。 - - diff --git a/content/zh/docs/Developerguide/PG_RANGE.md b/content/zh/docs/Developerguide/PG_RANGE.md index 875d5e4ac68d76e94f8050cd6bf911a3cb2e223a..4b53f149a115b01c083eaeb92952be7114cc50d9 100644 --- a/content/zh/docs/Developerguide/PG_RANGE.md +++ b/content/zh/docs/Developerguide/PG_RANGE.md @@ -1,6 +1,6 @@ # PG\_RANGE -PG\_RANGE系统表存储关于范围类型的信息。除了[PG\_TYPE](PG_TYPE.md#ZH-CN_TOPIC_0242385855)里类型的记录。 +PG\_RANGE系统表存储关于范围类型的信息。除了[PG\_TYPE](PG_TYPE.md)里类型的记录。 **表 1** PG\_RANGE字段 @@ -19,7 +19,7 @@ PG\_RANGE系统表存储关于范围类型的信息。除了[PG\_TYPE](PG_TYPE.m - @@ -28,7 +28,7 @@ PG\_RANGE系统表存储关于范围类型的信息。除了[PG\_TYPE](PG_TYPE.m - @@ -37,7 +37,7 @@ PG\_RANGE系统表存储关于范围类型的信息。除了[PG\_TYPE](PG_TYPE.m - @@ -46,7 +46,7 @@ PG\_RANGE系统表存储关于范围类型的信息。除了[PG\_TYPE](PG_TYPE.m - diff --git a/content/zh/docs/Developerguide/PG_RESOURCE_POOL.md b/content/zh/docs/Developerguide/PG_RESOURCE_POOL.md index e9ac6cbe7e40d286d3cef3b207a85061052b0adb..967a5057ab3b871f3e741dc009e40022ae86de9c 100644 --- a/content/zh/docs/Developerguide/PG_RESOURCE_POOL.md +++ b/content/zh/docs/Developerguide/PG_RESOURCE_POOL.md @@ -94,7 +94,7 @@ PG\_RESOURCE\_POOL系统表提供了数据库资源池的信息。 - - diff --git a/content/zh/docs/Developerguide/PG_SECLABEL.md b/content/zh/docs/Developerguide/PG_SECLABEL.md index 56d69f974256bc67d54684e6b19aa32a9579536c..d81b265fc2d5dd05a3a40d7ca002448db70b09a0 100644 --- a/content/zh/docs/Developerguide/PG_SECLABEL.md +++ b/content/zh/docs/Developerguide/PG_SECLABEL.md @@ -2,7 +2,7 @@ PG\_SECLABEL系统表存储数据对象上的安全标签。 -[PG\_SHSECLABEL](PG_SHSECLABEL.md#ZH-CN_TOPIC_0242385844)的作用类似,只是它是用于在一个openGauss内共享的数据库对象的安全标签上的。 +[PG\_SHSECLABEL](PG_SHSECLABEL.md)的作用类似,只是它是用于在一个openGauss内共享的数据库对象的安全标签上的。 **表 1** PG\_SECLABEL字段 diff --git a/content/zh/docs/Developerguide/PG_SECLABELS.md b/content/zh/docs/Developerguide/PG_SECLABELS.md index 8c6ece817f26a7ba7898cd2047028eb472f28360..6031ecacbdd1089290e03e8a8b141dffc2c33099 100644 --- a/content/zh/docs/Developerguide/PG_SECLABELS.md +++ b/content/zh/docs/Developerguide/PG_SECLABELS.md @@ -55,7 +55,7 @@ PG\_SECLABELS视图提供关于安全标签的信息。 - @@ -73,7 +73,7 @@ PG\_SECLABELS视图提供关于安全标签的信息。 - @@ -82,7 +82,7 @@ PG\_SECLABELS视图提供关于安全标签的信息。 - diff --git a/content/zh/docs/Developerguide/PG_SESSION_IOSTAT.md b/content/zh/docs/Developerguide/PG_SESSION_IOSTAT.md index f324a9e1ef99d5007ab9a561739d18c9e41e4d15..2f58b7a7dabb6371e7b6c15018c51ed3147b8933 100644 --- a/content/zh/docs/Developerguide/PG_SESSION_IOSTAT.md +++ b/content/zh/docs/Developerguide/PG_SESSION_IOSTAT.md @@ -40,7 +40,7 @@ PG\_SESSION\_IOSTAT视图显示当前用户执行作业正在运行时的IO负 - - diff --git a/content/zh/docs/Developerguide/PG_SESSION_WLMSTAT.md b/content/zh/docs/Developerguide/PG_SESSION_WLMSTAT.md index 6429c61d57e915afceefbc5a7f7614e4d04edef4..418ab2b879af2033b1902adc60bc1403629723c9 100644 --- a/content/zh/docs/Developerguide/PG_SESSION_WLMSTAT.md +++ b/content/zh/docs/Developerguide/PG_SESSION_WLMSTAT.md @@ -173,14 +173,14 @@ PG\_SESSION\_WLMSTAT视图显示和当前用户执行作业正在运行时的负 - - diff --git a/content/zh/docs/Developerguide/PG_SHADOW.md b/content/zh/docs/Developerguide/PG_SHADOW.md index bbe57607c41c469acccda7878077b434b3f782db..8ea8f679a273d8bd77319bd88e3be42ee14aee71 100644 --- a/content/zh/docs/Developerguide/PG_SHADOW.md +++ b/content/zh/docs/Developerguide/PG_SHADOW.md @@ -2,7 +2,7 @@ PG\_SHADOW视图显示了所有在PG\_AUTHID中标记了rolcanlogin的角色的属性。 -这个视图的名称来自于该视图是不可读的,因为它包含口令。[PG\_USER](PG_USER.md#ZH-CN_TOPIC_0242385999)是一个在PG\_SHADOW上公开可读的视图,只是把口令域填成了空白。 +这个视图的名称来自于该视图是不可读的,因为它包含口令。[PG\_USER](PG_USER.md)是一个在PG\_SHADOW上公开可读的视图,只是把口令域填成了空白。 **表 1** PG\_SHADOW字段 diff --git a/content/zh/docs/Developerguide/PG_SHDEPEND.md b/content/zh/docs/Developerguide/PG_SHDEPEND.md index 525c13526b3dc48120b59f289f1c8d2067b8befe..d9c276ae62a49dc54b120b1fb005020447a59b41 100644 --- a/content/zh/docs/Developerguide/PG_SHDEPEND.md +++ b/content/zh/docs/Developerguide/PG_SHDEPEND.md @@ -2,7 +2,7 @@ PG\_SHDEPEND系统表记录数据库对象和共享对象(比如角色)之间的依赖性关系。这些信息允许openGauss保证在企图删除这些对象之前,这些对象是没有被引用的。 -[PG\_DEPEND](PG_DEPEND.md#ZH-CN_TOPIC_0242385811)的作用类似,只是它是用于在一个数据库内部的对象的依赖性关系的。 +[PG\_DEPEND](PG_DEPEND.md)的作用类似,只是它是用于在一个数据库内部的对象的依赖性关系的。 和其它大多数系统表不同,PG\_SHDEPEND是在openGauss里面所有的数据库之间共享的:每个openGauss只有一个PG\_SHDEPEND,而不是每个数据库一个。 @@ -23,7 +23,7 @@ PG\_SHDEPEND系统表记录数据库对象和共享对象(比如角色)之 - @@ -88,7 +88,7 @@ PG\_SHDEPEND系统表记录数据库对象和共享对象(比如角色)之 - diff --git a/content/zh/docs/Developerguide/PG_SHSECLABEL.md b/content/zh/docs/Developerguide/PG_SHSECLABEL.md index 748edd5161f643a81b4d8c664b3715cabebe073e..a802a1eec1ec44be7b3d55eeec83bc508233dc02 100644 --- a/content/zh/docs/Developerguide/PG_SHSECLABEL.md +++ b/content/zh/docs/Developerguide/PG_SHSECLABEL.md @@ -2,11 +2,11 @@ PG\_SHSECLABEL系统表存储在共享数据库对象上的安全标签。安全标签可以用SECURITY LABEL命令操作。 -查看安全标签的简单点的方法,请参阅[PG\_SECLABELS](PG_SECLABELS.md#ZH-CN_TOPIC_0242385959)。 +查看安全标签的简单点的方法,请参阅[PG\_SECLABELS](PG_SECLABELS.md)。 -[PG\_SECLABEL](PG_SECLABEL.md#ZH-CN_TOPIC_0242385841)的作用类似,只是它是用于在单个数据库内部的对象的安全标签的。 +[PG\_SECLABEL](PG_SECLABEL.md)的作用类似,只是它是用于在单个数据库内部的对象的安全标签的。 -不同于大多数的系统表,PG\_SHSECLABELopenGauss中的所有数据库中共享:每个openGauss只有一个PG\_SHSECLABEL,而不是每个数据库一个。 +不同于大多数的系统表,PG\_SHSECLABEL在openGauss中的所有数据库中共享:每个openGauss只有一个PG\_SHSECLABEL,而不是每个数据库一个。 **表 1** PG\_SHSECLABEL字段 diff --git a/content/zh/docs/Developerguide/PG_STATIO_ALL_TABLES.md b/content/zh/docs/Developerguide/PG_STATIO_ALL_TABLES.md index cd0be53990f60976faea9dff692fcf7051cef1d7..9d435e74c7958c2424bd32ca3c620135e43a9b93 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_ALL_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_ALL_TABLES.md @@ -45,7 +45,7 @@ PG\_STATIO\_ALL\_TABLES视图将包含当前数据库中每个表(包括TOAST - - - - - diff --git a/content/zh/docs/Developerguide/PG_STATIO_SYS_TABLES.md b/content/zh/docs/Developerguide/PG_STATIO_SYS_TABLES.md index 625068ee74df576c904d8188ec788d7eb9842aa9..ad0e3cff93903a949bf138cbb6db01abd2d98288 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_SYS_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_SYS_TABLES.md @@ -45,7 +45,7 @@ PG\_STATIO\_SYS\_TABLES视图显示命名空间中所有系统表的IO状态信 - - - - - diff --git a/content/zh/docs/Developerguide/PG_STATIO_USER_TABLES.md b/content/zh/docs/Developerguide/PG_STATIO_USER_TABLES.md index 38d7277255edc63bc70af875da0364334a48c4c4..fa70b29b4cd2110992f2748cd70abb72857090fd 100644 --- a/content/zh/docs/Developerguide/PG_STATIO_USER_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STATIO_USER_TABLES.md @@ -45,7 +45,7 @@ PG\_STATIO\_USER\_TABLES视图显示命名空间中所有用户关系表的IO状 - - - - - diff --git a/content/zh/docs/Developerguide/PG_STATISTIC.md b/content/zh/docs/Developerguide/PG_STATISTIC.md index fec56d8f4222bb1661092f234ffece4d937374c9..7e14f9d10e9e7411c8f4c1ef9c7c6a2d5d00efb1 100644 --- a/content/zh/docs/Developerguide/PG_STATISTIC.md +++ b/content/zh/docs/Developerguide/PG_STATISTIC.md @@ -59,7 +59,7 @@ PG\_STATISTIC系统表存储有关该数据库中表和索引列的统计数据 - diff --git a/content/zh/docs/Developerguide/PG_STATISTIC_EXT.md b/content/zh/docs/Developerguide/PG_STATISTIC_EXT.md index 47bc6a84fcbf8013cac480157e4387ce4b202501..9770616a506d6c368729a5e55732ea0e6c7a2627 100644 --- a/content/zh/docs/Developerguide/PG_STATISTIC_EXT.md +++ b/content/zh/docs/Developerguide/PG_STATISTIC_EXT.md @@ -52,7 +52,7 @@ PG\_STATISTIC\_EXT系统表存储有关该数据库中表的扩展统计数据 - diff --git a/content/zh/docs/Developerguide/PG_STATS.md b/content/zh/docs/Developerguide/PG_STATS.md index aba2f1af5d2dda512d963e5e071f253b402943f1..8f06d0337b6b5dfbcfe359668e7f64c38d9df64d 100644 --- a/content/zh/docs/Developerguide/PG_STATS.md +++ b/content/zh/docs/Developerguide/PG_STATS.md @@ -19,7 +19,7 @@ PG\_STATS视图提供对存储在pg\_statistic表里面的单列统计信息的 - @@ -37,7 +37,7 @@ PG\_STATS视图提供对存储在pg\_statistic表里面的单列统计信息的 - diff --git a/content/zh/docs/Developerguide/PG_STAT_ACTIVITY.md b/content/zh/docs/Developerguide/PG_STAT_ACTIVITY.md index 1e14d1da1b57888867b7d2e7a03cb3a5af55647f..e965c6af5b7cf409ba7b602204b04d58dd1be0f1 100644 --- a/content/zh/docs/Developerguide/PG_STAT_ACTIVITY.md +++ b/content/zh/docs/Developerguide/PG_STAT_ACTIVITY.md @@ -137,7 +137,7 @@ PG\_STAT\_ACTIVITY视图显示和当前用户查询相关的信息。 ----------+---------+----------+--------+----------------- postgres | omm | 10 | | 139968752121616 postgres | omm | 10 | | 139968903116560 - db_tpcc | judy | 16398 | active | 139968391403280 + db_tpcc | judy | 16398 | active | 139968391403280 postgres | omm | 10 | | 139968643069712 postgres | omm | 10 | | 139968680818448 postgres | joe | 16390 | | 139968563377936 diff --git a/content/zh/docs/Developerguide/PG_STAT_ALL_INDEXES.md b/content/zh/docs/Developerguide/PG_STAT_ALL_INDEXES.md index cd5d5e18efadd4b85bf000d6196c6177986c50fc..e5d09dda1ae58dd962787590a086e1a3a99f9d8c 100644 --- a/content/zh/docs/Developerguide/PG_STAT_ALL_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_STAT_ALL_INDEXES.md @@ -33,7 +33,7 @@ PG\_STAT\_ALL\_INDEXES视图将包含当前数据库中的每个索引行,显 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -46,7 +46,7 @@ PG\_TABLES视图提供了对数据库中每个表访问的有用信息。 - diff --git a/content/zh/docs/Developerguide/PG_TDE_INFO.md b/content/zh/docs/Developerguide/PG_TDE_INFO.md index 262176679b9747b7820e32f14c816c00ab41724d..405cdfc95e941f4f2a23152b1d1578e1a716ee09 100644 --- a/content/zh/docs/Developerguide/PG_TDE_INFO.md +++ b/content/zh/docs/Developerguide/PG_TDE_INFO.md @@ -17,7 +17,7 @@ PG\_TDE\_INFO视图提供了openGauss加密信息。 - diff --git a/content/zh/docs/Developerguide/PG_THREAD_WAIT_STATUS.md b/content/zh/docs/Developerguide/PG_THREAD_WAIT_STATUS.md index 6ca28c4c7b12fe3c175294474fada40b4f3f3687..bf682bd274f461160ec43d5af99569abb6bc5f71 100644 --- a/content/zh/docs/Developerguide/PG_THREAD_WAIT_STATUS.md +++ b/content/zh/docs/Developerguide/PG_THREAD_WAIT_STATUS.md @@ -226,12 +226,12 @@ wait\_status列的等待状态有以下状态。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + +

名称

+ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

类型

+

类型

描述

-

template_name

-

name

-

机器学习模型的模板名,决定训练和预测调用的函数接口,目前只实现了rlstm,方便后续扩展。

-

model_name

-

name

-

模型的实例名,每个模型对应aiEngine在线学习进程中的一套参数、训练日志、模型系数。此列需为unique。

-

datname

-

name

-

该模型所服务的database名,每个模型只针对单个database。此参数决定训练时所使用的数据。

-

ip

-

name

-

AiEngine端所部署的host ip地址。

-

port

-

integer

-

AiEngine端所监听的端口号。

-

max_epoch

-

integer

-

模型每次训练的迭代次数上限。

-

learning_rate

-

real

-

模型训练的学习速率,推荐缺省值1。

-

dim_red

-

real

-

模型特征维度降维系数。

-

hidden_units

-

integer

-

模型隐藏层神经元个数。如果训练发现模型长期无法收敛,可以适量提升本参数。

-

batch_size

-

integer

-

模型每次迭代时一个batch的大小,尽量设为大于等于训练数据总量的值,加快模型的收敛速度。

-

feature_size

-

integer

-

[不需设置] 模型特征的长度,用于触发重新训练,模型训练后该参数自动更新。

-

available

-

boolean

-

[不需设置]标识模型是否收敛。

-

Is_training

-

boolean

-

[不需设置]标识模型是否正在训练。

-

label

-

"char"[]

-

模型的目标任务:

-

S: startup time

-

T: total time

-

R: rows

-

M: peak memory

-

目前受模型性能限制,推荐{S, T}或{R}。

-

max

-

bigint[]

-

[不需设置]标识模型各任务标签的最大值,用于触发重新训练。

-

acc

-

real[]

-

[不需设置]标识模型个任务的准确率。

-

description

-

text

-

模型注释。

+

描述

template_name

+

name

+

机器学习模型的模板名,决定训练和预测调用的函数接口,目前只实现了rlstm,方便后续扩展。

+

model_name

+

name

+

模型的实例名,每个模型对应aiEngine在线学习进程中的一套参数、训练日志、模型系数。此列需为unique。

+

datname

+

name

+

该模型所服务的database名,每个模型只针对单个database。此参数决定训练时所使用的数据。

+

ip

+

name

+

AiEngine端所部署的host ip地址。

+

port

+

integer

+

AiEngine端所监听的端口号。

+

max_epoch

+

integer

+

模型每次训练的迭代次数上限。

+

learning_rate

+

real

+

模型训练的学习速率,推荐缺省值1。

+

dim_red

+

real

+

模型特征维度降维系数。

+

hidden_units

+

integer

+

模型隐藏层神经元个数。如果训练发现模型长期无法收敛,可以适量提升本参数。

+

batch_size

+

integer

+

模型每次迭代时一个batch的大小,尽量设为大于等于训练数据总量的值,加快模型的收敛速度。

+

feature_size

+

integer

+

[不需设置] 模型特征的长度,用于触发重新训练,模型训练后该参数自动更新。

+

available

+

boolean

+

[不需设置]标识模型是否收敛。

+

Is_training

+

boolean

+

[不需设置]标识模型是否正在训练。

+

label

+

"char"[]

+

模型的目标任务:

+
  • S: startup time
  • T: total time
  • R: rows
  • M: peak memory
+

目前受模型性能限制,推荐{S, T}或{R}。

+

max

+

bigint[]

+

[不需设置]标识模型各任务标签的最大值,用于触发重新训练。

+

acc

+

real[]

+

[不需设置]标识模型个任务的准确率。

+

description

+

text

+

模型注释。

+
diff --git a/content/zh/docs/Developerguide/GS_SESSION_CPU_STATISTICS.md b/content/zh/docs/Developerguide/GS_SESSION_CPU_STATISTICS.md index ffe20fc40228ec205675fa08c79a38c127bd0552..794b41148c182d8f1db9f65a37e8fa66b66c915b 100644 --- a/content/zh/docs/Developerguide/GS_SESSION_CPU_STATISTICS.md +++ b/content/zh/docs/Developerguide/GS_SESSION_CPU_STATISTICS.md @@ -45,21 +45,21 @@ GS\_SESSION\_CPU\_STATISTICS视图显示和当前用户执行复杂作业正在

bigint

语句在数据库节点上的最小CPU时间,单位为ms。

+

语句在数据库节点上的最小CPU时间,单位为ms。

max_cpu_time

bigint

语句在数据库节点上的最大CPU时间,单位为ms。

+

语句在数据库节点上的最大CPU时间,单位为ms。

total_cpu_time

bigint

语句在数据库节点上的CPU总时间,单位为ms。

+

语句在数据库节点上的CPU总时间,单位为ms。

query

@@ -73,7 +73,7 @@ GS\_SESSION\_CPU\_STATISTICS视图显示和当前用户执行复杂作业正在

text

该字段不支持。

+

该字段不支持。

top_cpu_dn

diff --git a/content/zh/docs/Developerguide/GS_SESSION_MEMORY_STATISTICS.md b/content/zh/docs/Developerguide/GS_SESSION_MEMORY_STATISTICS.md index 24e8c110b840990e7538eb9c2d3b8b4d6a18f362..93432da8d6b70f0d49b8041e4c4d446066497436 100644 --- a/content/zh/docs/Developerguide/GS_SESSION_MEMORY_STATISTICS.md +++ b/content/zh/docs/Developerguide/GS_SESSION_MEMORY_STATISTICS.md @@ -45,24 +45,24 @@ GS\_SESSION\_MEMORY\_STATISTICS视图显示和当前用户执行复杂作业正

integer

语句在数据库节点上的最小内存峰值大小,单位MB。

+

语句在数据库节点上的最小内存峰值大小,单位MB。

max_peak_memory

integer

语句在数据库节点上的最大内存峰值大小,单位MB。

+

语句在数据库节点上的最大内存峰值大小,单位MB。

spill_info

text

语句在数据库节点上的下盘信息:

-

None:数据库节点均未下盘。

-

All:数据库节点均下盘。

-

[a:b]:数量为b个数据库节点中有a个数据库节点下盘。

+

语句在数据库节点上的下盘信息:

+

None:数据库节点均未下盘。

+

All:数据库节点均下盘。

+

[a:b]:数量为b个数据库节点中有a个数据库节点下盘。

query

@@ -76,7 +76,7 @@ GS\_SESSION\_MEMORY\_STATISTICS视图显示和当前用户执行复杂作业正

text

该字段不支持

+

该字段不支持。

top_mem_dn

diff --git a/content/zh/docs/Developerguide/GS_STAT_DB_CU.md b/content/zh/docs/Developerguide/GS_STAT_DB_CU.md index 5a67f50e066bc3d7d30bdaf9fde2ed484fd781dd..5c6f0fe3ee61f8c8babda581ad2b1550f50bfd2e 100644 --- a/content/zh/docs/Developerguide/GS_STAT_DB_CU.md +++ b/content/zh/docs/Developerguide/GS_STAT_DB_CU.md @@ -17,7 +17,7 @@ GS\_STAT\_DB\_CU视图查询openGauss各个节点,每个数据库的CU命中

text

节点名。

+

节点名称。

db_name

diff --git a/content/zh/docs/Developerguide/GS_STAT_SESSION_CU.md b/content/zh/docs/Developerguide/GS_STAT_SESSION_CU.md index 5d54823080f75b6435c6af8a71c64349e7bd47e5..792ef1634f47eba78878b93346e58bd43a62cf1b 100644 --- a/content/zh/docs/Developerguide/GS_STAT_SESSION_CU.md +++ b/content/zh/docs/Developerguide/GS_STAT_SESSION_CU.md @@ -17,7 +17,7 @@ GS\_STAT\_SESSION\_CU视图查询openGauss各个节点,当前运行session的C

text

节点名。

+

节点名称。

mem_hit

diff --git a/content/zh/docs/Developerguide/GS_THREAD_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/GS_THREAD_MEMORY_DETAIL.md new file mode 100644 index 0000000000000000000000000000000000000000..1a03378a75ddedc92771dad2cef8b84285734b01 --- /dev/null +++ b/content/zh/docs/Developerguide/GS_THREAD_MEMORY_DETAIL.md @@ -0,0 +1,83 @@ +# GS\_THREAD\_MEMORY\_DETAIL + +GS\_THREAD\_MEMORY\_DETAIL视图统计所有的线程的内存使用情况,以MemoryContext节点来统计。该视图在关闭线程池(enable\_thread\_pool = off)时等价于GS\_SESSION\_MEMORY\_DETAIL视图。 + +其中内存上下文“TempSmallContextGroup”,记录当前线程中所有内存上下文字段“totalsize”小于8192字节的信息汇总,并且内存上下文统计计数记录到“usedsize”字段中。所以在视图中,“TempSmallContextGroup”内存上下文中的“totalsize”和“freesize”是该线程中所有内存上下文“totalsize”小于8192字节的汇总总和,usedsize字段表示统计的内存上下文个数。 + +**表 1** GS\_SESSION\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

threadid

+

text

+

线程启动时间+线程标识(字符串信息为timestamp.sessionid)。

+

tid

+

bigint

+

线程标识。

+

thrdtype

+

text

+

线程类型。

+

contextname

+

text

+

内存上下文名称。

+

level

+

smallint

+

当前上下文在整体内存上下文中的层级。

+

parent

+

text

+

父内存上下文名称。

+

totalsize

+

bigint

+

当前内存上下文的内存总数,单位Byte。

+

freesize

+

bigint

+

当前内存上下文中已释放的内存总数,单位Byte。

+

usedsize

+

bigint

+

当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。

+
+ diff --git a/content/zh/docs/Developerguide/GS_TOTAL_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/GS_TOTAL_MEMORY_DETAIL.md index 41da6ff14e3ec150c9ab455a8467bb2f921b97d4..2b890cf6a903b1a8e25bfea4b6407278acc00493 100644 --- a/content/zh/docs/Developerguide/GS_TOTAL_MEMORY_DETAIL.md +++ b/content/zh/docs/Developerguide/GS_TOTAL_MEMORY_DETAIL.md @@ -24,7 +24,7 @@ GS\_TOTAL\_MEMORY\_DETAIL视图统计当前数据库节点使用内存的信息

text

内存类型,包括以下几种:
  • max_process_memory:openGauss实例所占用的内存大小。
  • process_used_memory:openGauss进程所使用的内存大小。
  • max_dynamic_memory:最大动态内存。
  • dynamic_used_memory:已使用的动态内存。
  • dynamic_peak_memory:内存的动态峰值。
  • dynamic_used_shrctx:最大动态共享内存上下文。
  • dynamic_peak_shrctx:共享内存上下文的动态峰值。
  • max_shared_memory:最大共享内存。
  • shared_used_memory:已使用的共享内存。
  • max_cstore_memory:列存所允许使用的最大内存。
  • cstore_used_memory:列存已使用的内存大小。
  • max_sctpcomm_memory:通信库所允许使用的最大内存。
  • sctpcomm_used_memory:通信库已使用的内存大小。
  • sctpcomm_peak_memory:通信库的内存峰值。
  • other_used_memory:其他已使用的内存大小。
+
内存类型,包括以下几种:
  • max_process_memory:openGauss实例所占用的内存大小。
  • process_used_memory:openGauss进程所使用的内存大小。
  • max_dynamic_memory:最大动态内存。
  • dynamic_used_memory:已使用的动态内存。
  • dynamic_peak_memory:内存的动态峰值。
  • dynamic_used_shrctx:最大动态共享内存上下文。
  • dynamic_peak_shrctx:共享内存上下文的动态峰值。
  • max_shared_memory:最大共享内存。
  • shared_used_memory:已使用的共享内存。
  • max_cstore_memory:列存所允许使用的最大内存。
  • cstore_used_memory:列存已使用的内存大小。
  • max_sctpcomm_memory:通信库所允许使用的最大内存。
  • sctpcomm_used_memory:通信库已使用的内存大小。
  • sctpcomm_peak_memory:通信库的内存峰值。
  • other_used_memory:其他已使用的内存大小。

bigint

数据库主节点实例:不统计。

-

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑读字节速率,单位KB/s。

+

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑读字节速率,单位KB/s。

logical_write

bigint

数据库主节点实例:不统计。

-

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑写字节速率,单位KB/s。

+

数据库主节点实例:不统计。

+

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑写字节速率,单位KB/s。

read_counts

bigint

数据库主节点实例:不统计。

-

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑读操作次数之和,单位次。

+

数据库主节点实例:不统计。

+

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑读操作次数之和,单位次。

write_counts

bigint

数据库主节点实例:不统计。

-

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑写操作次数之和,单位次。

+

数据库主节点实例:不统计。

+

数据库节点实例:该实例在本次统计间隙(10秒)内逻辑写操作次数之和,单位次。

integer

当前算子在数据库节点上的平均内存峰值(MB)。

+

当前算子在数据库节点平均内存峰值(MB)。

memory_skew_percent

@@ -108,7 +108,7 @@ GS\_WLM\_OPERATOR\_INFO系统表显示执行作业结束后的算子相关的记

integer

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为0。

+

若发生下盘,数据库节点盘的最小数据量(MB),默认为0。

max_spill_size

@@ -122,21 +122,21 @@ GS\_WLM\_OPERATOR\_INFO系统表显示执行作业结束后的算子相关的记

integer

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为0。

+

若发生下盘,数据库节点盘的平均数据量(MB),默认为0。

spill_skew_percent

integer

若发生下盘,数据库节点间下盘倾斜率。

+

若发生下盘,数据库节点间下盘倾斜率。

min_cpu_time

bigint

该算子在数据库节点上的最小执行时间(ms)。

+

该算子在数据库节点最小执行时间(ms)。

max_cpu_time

diff --git a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_STATISTICS.md b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_STATISTICS.md index 040031f005b43cc74bca985628e5774c0f3b9a57..8db4928c10c20e6eb84ee856e5b5f26850c52239 100644 --- a/content/zh/docs/Developerguide/GS_WLM_OPERATOR_STATISTICS.md +++ b/content/zh/docs/Developerguide/GS_WLM_OPERATOR_STATISTICS.md @@ -87,21 +87,21 @@ GS\_WLM\_OPERATOR\_STATISTICS视图显示当前用户正在执行的作业的算

integer

当前算子在数据库节点上的最小内存峰值(MB)。

+

当前算子在数据库节点上的最小内存峰值(MB)。

max_peak_memory

integer

当前算子在数据库节点上的最大内存峰值(MB)。

+

当前算子在数据库节点上的最大内存峰值(MB)。

average_peak_memory

integer

当前算子在数据库节点上的平均内存峰值(MB)。

+

当前算子在数据库节点上的平均内存峰值(MB)。

memory_skew_percent

@@ -115,56 +115,56 @@ GS\_WLM\_OPERATOR\_STATISTICS视图显示当前用户正在执行的作业的算

integer

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为0。

+

若发生下盘,数据库节点上下盘的最小数据量(MB),默认为0。

max_spill_size

integer

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为0。

+

若发生下盘,数据库节点上下盘的最大数据量(MB),默认为0。

average_spill_size

integer

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为0。

+

若发生下盘,数据库节点上下盘的平均数据量(MB),默认为0。

spill_skew_percent

integer

若发生下盘,数据库节点间下盘倾斜率。

+

若发生下盘,数据库节点间下盘倾斜率。

min_cpu_time

bigint

该算子在数据库节点上的最小执行时间(ms)。

+

该算子在数据库节点上的最小执行时间(ms)。

max_cpu_time

bigint

该算子在数据库节点上的最大执行时间(ms)。

+

该算子在数据库节点上的最大执行时间(ms)。

total_cpu_time

bigint

该算子在数据库节点上的总执行时间(ms)。

+

该算子在数据库节点上的总执行时间(ms)。

cpu_skew_percent

integer

数据库节点间执行时间的倾斜率。

+

数据库节点间执行时间的倾斜率。

warning

diff --git a/content/zh/docs/Developerguide/GS_WLM_PLAN_ENCODING_TABLE.md b/content/zh/docs/Developerguide/GS_WLM_PLAN_ENCODING_TABLE.md index 351765314bb265b58c6d805cac17aa2fec3321d5..e69ace9591868d148a19f6d3bf4812935a083838 100644 --- a/content/zh/docs/Developerguide/GS_WLM_PLAN_ENCODING_TABLE.md +++ b/content/zh/docs/Developerguide/GS_WLM_PLAN_ENCODING_TABLE.md @@ -2,7 +2,7 @@ GS\_WLM\_PLAN\_ENCODING\_TABLE系统表显示计划算子级的编码信息,为机器学习模型的提供包括startup time, total time, peak memory, rows等标签值的训练、预测集。 -**表 1** GS\_WLM\_PLAN\_ENCODING\_TABLE的字段 +**表 1** GS\_WLM\_PLAN\_ENCODING\_TABLE的字段 - - - - - - - - - - - - - - - - diff --git a/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_HISTORY.md b/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_HISTORY.md index 738fc0045e88020de9c843769a4abbdb9f9e4bab..5c6a3408a258d88ee9ab94ffc0b4559485a6c6ab 100644 --- a/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_HISTORY.md +++ b/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_HISTORY.md @@ -2,5 +2,5 @@ GS\_WLM\_PLAN\_OPERATOR\_HISTORY视图显示的是当前用户数据库主节点上执行作业结束后的执行计划算子级的相关记录。 -内核中的数据会定时被清理,清理周期为3分钟。当GUC参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为on时,视图中的记录每隔3分钟被转储到系统表[GS\_WLM\_PLAN\_OPERATOR\_INFO](GS_WLM_PLAN_OPERATOR_INFO.md)中一次,同时视图中的记录被删除;当GUC参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为off时,记录在视图中的存留时间达到超期时间(超期时间为3分钟)后会被删除。记录的数据同[表1](GS_WLM_PLAN_OPERATOR_INFO.md#zh-cn_topic_0111176227_table85181143511)。 +记录的数据同[表1](GS_WLM_PLAN_OPERATOR_INFO.md#zh-cn_topic_0111176227_table85181143511)。 diff --git a/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_INFO.md b/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_INFO.md index 94900322b3ad6f16cbe6b7d7a291b8ca2dd90c07..efc0fe48afc81bc46ef2cf0bfd311b91960f755a 100644 --- a/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_INFO.md +++ b/content/zh/docs/Developerguide/GS_WLM_PLAN_OPERATOR_INFO.md @@ -1,6 +1,6 @@ # GS\_WLM\_PLAN\_OPERATOR\_INFO -GS\_WLM\_PLAN\_OPERATOR\_INFO系统表显示执行作业结束后计划算子级的相关的记录。此数据是从内核中转储到系统表中的数据。当设置GUC参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为on时,系统会定时(周期为3分钟)将[GS\_WLM\_PLAN\_OPERATOR\_HISTORY](GS_WLM_PLAN_OPERATOR_HISTORY.md)中的记录导入此系统表,开启此功能会占用系统存储空间并对性能有一定影响,不建议用户使用。 +GS\_WLM\_PLAN\_OPERATOR\_INFO系统表显示执行作业结束后计划算子级的相关的记录。此数据是从内核中转储到系统表中的数据。 **表 1** GS\_WLM\_PLAN\_OPERATOR\_INFO的字段 @@ -13,11 +13,11 @@ GS\_WLM\_PLAN\_OPERATOR\_INFO系统表显示执行作业结束后计划算子级 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/content/zh/docs/Developerguide/GS_WLM_RESOURCE_POOL.md b/content/zh/docs/Developerguide/GS_WLM_RESOURCE_POOL.md index 7c1470224a07bf0c4317941b6a96561cddd4e531..9eb63f694e96ba15c64b8a62c2243e80394f603e 100644 --- a/content/zh/docs/Developerguide/GS_WLM_RESOURCE_POOL.md +++ b/content/zh/docs/Developerguide/GS_WLM_RESOURCE_POOL.md @@ -31,7 +31,7 @@ - - - - - - @@ -193,21 +193,21 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行 - - - - - - - - - - - - - - - - - - - - diff --git a/content/zh/docs/Developerguide/GS_WLM_SESSION_QUERY_INFO_ALL.md b/content/zh/docs/Developerguide/GS_WLM_SESSION_QUERY_INFO_ALL.md index 1362a61778228e08bbbae1d466410d5e414d6af2..a601a862e52ca72f2375ec1a1f33b9d819c365f8 100644 --- a/content/zh/docs/Developerguide/GS_WLM_SESSION_QUERY_INFO_ALL.md +++ b/content/zh/docs/Developerguide/GS_WLM_SESSION_QUERY_INFO_ALL.md @@ -1,6 +1,6 @@ # GS\_WLM\_SESSION\_QUERY\_INFO\_ALL -GS\_WLM\_SESSION\_INFO系统表显示数据库主节点执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。当设置GUC参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为on时,系统会定时(周期为3分钟)将内核中query信息导入GS\_WLM\_SESSION\_QUERY\_INFO\_ALL系统表。 +GS\_WLM\_SESSION\_INFO系统表显示当前数据库主节点执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。 **表 1** GS\_WLM\_SESSION\_QUERY\_INFO\_ALL字段 @@ -38,7 +38,7 @@ GS\_WLM\_SESSION\_INFO系统表显示数据库主节点执行作业结束后的 - - - @@ -193,112 +193,112 @@ GS\_WLM\_SESSION\_INFO系统表显示数据库主节点执行作业结束后的 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -200,21 +200,21 @@ GS\_WLM\_SESSION\_STATISTICS视图显示当前用户在数据库主节点上正 - - - - - - - - - - - - - - - - @@ -64,7 +64,7 @@ PG\_AGGREGATE系统表存储与聚集函数有关的信息。PG\_AGGREGATE里的 - diff --git a/content/zh/docs/Developerguide/PG_AM.md b/content/zh/docs/Developerguide/PG_AM.md index fd524e79948a8a994c749a810f63f621780c3e5a..b381c206176a2efcee148922440f73ae9176faa8 100644 --- a/content/zh/docs/Developerguide/PG_AM.md +++ b/content/zh/docs/Developerguide/PG_AM.md @@ -129,7 +129,7 @@ PG\_AM系统表存储有关索引访问方法的信息。系统支持的每种 - - diff --git a/content/zh/docs/Developerguide/PG_AMOP.md b/content/zh/docs/Developerguide/PG_AMOP.md index f6749f8e0e188836dbe4faa284fdf2a450a884f2..42ea933f6ead02dd56a07b7cf2e25fad247a3cb6 100644 --- a/content/zh/docs/Developerguide/PG_AMOP.md +++ b/content/zh/docs/Developerguide/PG_AMOP.md @@ -28,7 +28,7 @@ PG\_AMOP系统表存储有关和访问方法操作符族关联的信息。如果 - @@ -37,7 +37,7 @@ PG\_AMOP系统表存储有关和访问方法操作符族关联的信息。如果 - @@ -46,7 +46,7 @@ PG\_AMOP系统表存储有关和访问方法操作符族关联的信息。如果 - @@ -73,7 +73,7 @@ PG\_AMOP系统表存储有关和访问方法操作符族关联的信息。如果 - @@ -82,7 +82,7 @@ PG\_AMOP系统表存储有关和访问方法操作符族关联的信息。如果 - @@ -91,7 +91,7 @@ PG\_AMOP系统表存储有关和访问方法操作符族关联的信息。如果 - diff --git a/content/zh/docs/Developerguide/PG_AMPROC.md b/content/zh/docs/Developerguide/PG_AMPROC.md index 64901a83aeed8218166f0fbd23836c7333829b97..d31c8410f3821520763945444821f7101f31d522 100644 --- a/content/zh/docs/Developerguide/PG_AMPROC.md +++ b/content/zh/docs/Developerguide/PG_AMPROC.md @@ -28,7 +28,7 @@ PG\_AMPROC系统表存储有关与访问方法操作符族相关联的支持过 - @@ -37,7 +37,7 @@ PG\_AMPROC系统表存储有关与访问方法操作符族相关联的支持过 - @@ -46,7 +46,7 @@ PG\_AMPROC系统表存储有关与访问方法操作符族相关联的支持过 - diff --git a/content/zh/docs/Developerguide/PG_AUTHID.md b/content/zh/docs/Developerguide/PG_AUTHID.md index 1d666efd8a491d42c2278d49a60c3aa2c92c85ac..a2ac0815af997f4caff33638f8aba490eaf6f06e 100644 --- a/content/zh/docs/Developerguide/PG_AUTHID.md +++ b/content/zh/docs/Developerguide/PG_AUTHID.md @@ -160,7 +160,7 @@ openGauss中只有一份pg\_authid,不是每个数据库有一份。需要有 - - diff --git a/content/zh/docs/Developerguide/PG_CONSTRAINT.md b/content/zh/docs/Developerguide/PG_CONSTRAINT.md index f2af18642971b94a41913b7d32c0c317f89bd2b4..e2e0140b0b819a701bad0ffc26e3a6bceb4fcdbf 100644 --- a/content/zh/docs/Developerguide/PG_CONSTRAINT.md +++ b/content/zh/docs/Developerguide/PG_CONSTRAINT.md @@ -1,6 +1,6 @@ # PG\_CONSTRAINT -PG\_CONSTRAINT系统表存储表上的检查约束、主键、唯一约束和外键约束。 +PG\_CONSTRAINT系统表存储表上的检查约束、主键和唯一约束。 **表 1** PG\_CONSTRAINT字段 @@ -38,7 +38,7 @@ PG\_CONSTRAINT系统表存储表上的检查约束、主键、唯一约束和外 - - - @@ -102,7 +103,8 @@ PG\_CONSTRAINT系统表存储表上的检查约束、主键、唯一约束和外 - @@ -110,7 +112,8 @@ PG\_CONSTRAINT系统表存储表上的检查约束、主键、唯一约束和外 - @@ -160,28 +163,28 @@ PG\_CONSTRAINT系统表存储表上的检查约束、主键、唯一约束和外 - - - - - diff --git a/content/zh/docs/Developerguide/PG_DEPEND.md b/content/zh/docs/Developerguide/PG_DEPEND.md index bd2d2ff694404fb54443240ec8128957e489a32b..7c7c30828967cea75d4b03092f655a1041dc9d11 100644 --- a/content/zh/docs/Developerguide/PG_DEPEND.md +++ b/content/zh/docs/Developerguide/PG_DEPEND.md @@ -2,7 +2,7 @@ PG\_DEPEND系统表记录数据库对象之间的依赖关系。这个信息允许DROP命令找出哪些其它对象必须由DROP CASCADE删除,或者是在DROP RESTRICT的情况下避免删除。 -这个表的功能类似[PG\_SHDEPEND](PG_SHDEPEND.md#ZH-CN_TOPIC_0242385842),用于记录那些在openGauss之间共享的对象之间的依赖性关系。 +这个表的功能类似[PG\_SHDEPEND](PG_SHDEPEND.md),用于记录那些在openGauss之间共享的对象之间的依赖性关系。 **表 1** PG\_DEPEND字段 @@ -87,7 +87,7 @@ PG\_DEPEND系统表记录数据库对象之间的依赖关系。这个信息允 - DEPENDENCY\_NORMAL \(n\):独立创建的对象之间的一般关系。有依赖的对象可以在不影响被引用对象的情况下删除。被引用对象只有在声明了CASCADE的情况下删除,这时有依赖的对象也被删除。例子:一个表字段对其数据类型有一般依赖关系。 - DEPENDENCY\_AUTO \(a\):有依赖对象可以和被引用对象分别删除,并且如果删除了被引用对象则应该被自动删除(不管是RESTRICT或CASCADE模式)。例子:一个表上面的命名约束是在该表上的自动依赖关系,因此如果删除了表,它也会被删除。 -- DEPENDENCY\_INTERNAL \(i\):有依赖的对象是作为被引用对象的一部分创建的,实际上只是它的内部实现的一部分。 DROP有依赖对象是不能直接允许的(将告诉用户发出一条删除被引用对象的DROP)。一个对被引用对象的DROP将传播到有依赖对象,不管是否声明了CASCADE。例子:一个创建来强制外键约束的触发器在该约束的[PG\_CONSTRAINT](PG_CONSTRAINT.md#ZH-CN_TOPIC_0242385806)记录上是标记为内部依赖的。 +- DEPENDENCY\_INTERNAL \(i\):有依赖的对象是作为被引用对象的一部分创建的,实际上只是它的内部实现的一部分。 DROP有依赖对象是不能直接允许的(将告诉用户发出一条删除被引用对象的DROP)。一个对被引用对象的DROP将传播到有依赖对象,不管是否声明了CASCADE。 - DEPENDENCY\_EXTENSION \(e\):依赖对象是被依赖对象extension的一个成员(请参见[PG\_EXTENSION](PG_EXTENSION.md))。依赖对象只可以通过在被依赖对象上DROP EXTENSION删除。函数上这个依赖类型和内部依赖一样动作,但是它为了清晰和简化gs\_dump保持分开。 - DEPENDENCY\_PIN \(p\):没有依赖对象;这种类型的记录标志着系统本身依赖于被引用对象,因此这个对象决不能被删除。这种类型的记录只有在initdb的时候创建。有依赖对象的字段里是零。 diff --git a/content/zh/docs/Developerguide/PG_DESCRIPTION.md b/content/zh/docs/Developerguide/PG_DESCRIPTION.md index 74a2dab0c5f9f0fc971a4748c49cd0785f4ad8b3..61b8f9828bfbd026fa2a3a29b99cf87fc5fc26f2 100644 --- a/content/zh/docs/Developerguide/PG_DESCRIPTION.md +++ b/content/zh/docs/Developerguide/PG_DESCRIPTION.md @@ -2,7 +2,7 @@ PG\_DESCRIPTION系统表可以给每个数据库对象存储一个可选的描述(注释)。许多内置的系统对象的描述提供了PG\_DESCRIPTION的初始内容。 -这个表的功能类似[PG\_SHDESCRIPTION](PG_SHDESCRIPTION.md#ZH-CN_TOPIC_0242385843),用于记录openGauss范围内共享对象的注释。 +这个表的功能类似[PG\_SHDESCRIPTION](PG_SHDESCRIPTION.md),用于记录openGauss范围内共享对象的注释。 **表 1** PG\_DESCRIPTION字段 @@ -30,7 +30,7 @@ PG\_DESCRIPTION系统表可以给每个数据库对象存储一个可选的描 - diff --git a/content/zh/docs/Developerguide/PG_ENUM.md b/content/zh/docs/Developerguide/PG_ENUM.md index bb0fdc33e3ded94782535ff7643655a3dc92c63d..f6fb76fce2bc8b52f0d9ae1e7ddbfa3acdbfd3f3 100644 --- a/content/zh/docs/Developerguide/PG_ENUM.md +++ b/content/zh/docs/Developerguide/PG_ENUM.md @@ -28,7 +28,7 @@ PG\_ENUM系统表包含显示每个枚举类型值和标签的记录。给定枚 - diff --git a/content/zh/docs/Developerguide/PG_EXT_STATS.md b/content/zh/docs/Developerguide/PG_EXT_STATS.md index bd1f0bdfd950428c749b72309b828a1c3ec831c1..d33cfd227bf4a6f638b6fcf6863b7fc015b3e085 100644 --- a/content/zh/docs/Developerguide/PG_EXT_STATS.md +++ b/content/zh/docs/Developerguide/PG_EXT_STATS.md @@ -1,6 +1,6 @@ # PG\_EXT\_STATS -PG\_EXT\_STATS视图提供对存储在[PG\_STATISTIC\_EXT](PG_STATISTIC_EXT.md#ZH-CN_TOPIC_0242385846)表里面的扩展统计信息的访问。扩展统计信息目前包括多列统计信息。 +PG\_EXT\_STATS视图提供对存储在[PG\_STATISTIC\_EXT](PG_STATISTIC_EXT.md)表里面的扩展统计信息的访问。扩展统计信息目前包括多列统计信息。 **表 1** PG\_EXT\_STATS字段 @@ -19,7 +19,7 @@ PG\_EXT\_STATS视图提供对存储在[PG\_STATISTIC\_EXT](PG_STATISTIC_EXT.md#Z - @@ -37,7 +37,7 @@ PG\_EXT\_STATS视图提供对存储在[PG\_STATISTIC\_EXT](PG_STATISTIC_EXT.md#Z - diff --git a/content/zh/docs/Developerguide/PG_FOREIGN_SERVER.md b/content/zh/docs/Developerguide/PG_FOREIGN_SERVER.md index 9b63fcc8f86554e8c3edc26749b2f79eec6531aa..71eb445b4f62762aa5c570f6eec4449e1978167c 100644 --- a/content/zh/docs/Developerguide/PG_FOREIGN_SERVER.md +++ b/content/zh/docs/Developerguide/PG_FOREIGN_SERVER.md @@ -46,7 +46,7 @@ PG\_FOREIGN\_SERVER系统表存储外部服务器定义。一个外部服务器 - diff --git a/content/zh/docs/Developerguide/PG_INDEXES.md b/content/zh/docs/Developerguide/PG_INDEXES.md index 08436cd9a92cc6029692e1d250dad0557e24d4ec..28b9a768d2cc46ae56a76778d5e3174bf936aa7b 100644 --- a/content/zh/docs/Developerguide/PG_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_INDEXES.md @@ -19,7 +19,7 @@ PG\_INDEXES视图提供对数据库中每个索引的有用信息的访问。 - @@ -46,7 +46,7 @@ PG\_INDEXES视图提供对数据库中每个索引的有用信息的访问。 - diff --git a/content/zh/docs/Developerguide/PG_JOB_PROC.md b/content/zh/docs/Developerguide/PG_JOB_PROC.md index 4d4c22b1e9b7cef1bcb063d43578f69ebc2e8201..1ec3800d74e2bccc5bbac24d28bf62b4b8c2562c 100644 --- a/content/zh/docs/Developerguide/PG_JOB_PROC.md +++ b/content/zh/docs/Developerguide/PG_JOB_PROC.md @@ -1,6 +1,6 @@ # PG\_JOB\_PROC -PG\_JOB\_PROC系统表对应PG\_JOB表中每个任务的作业内容(包括:PL/SQL代码块、匿名块)。将存储过程信息独立出来,是因为A中这个字段是varchar\(4000\)的,如果放到PG\_JOB中,被加载到共享内存的时候,会占用不必要的空间,所以在使用的时候再进行查询获取。 +PG\_JOB\_PROC系统表对应PG\_JOB表中每个任务的作业内容(包括:PL/SQL代码块、匿名块)。将存储过程信息独立出来,如果放到PG\_JOB中,被加载到共享内存的时候,会占用不必要的空间,所以在使用的时候再进行查询获取。 **表 1** PG\_JOB\_PROC字段 @@ -24,7 +24,7 @@ PG\_JOB\_PROC系统表对应PG\_JOB表中每个任务的作业内容(包括: - - diff --git a/content/zh/docs/Developerguide/PG_LOCKS.md b/content/zh/docs/Developerguide/PG_LOCKS.md index 6323f375aa8ba57d751f1112858be817f9ec7dab..84de727c11dfa58f972d5167c90da5a440e8535a 100644 --- a/content/zh/docs/Developerguide/PG_LOCKS.md +++ b/content/zh/docs/Developerguide/PG_LOCKS.md @@ -28,7 +28,7 @@ PG\_LOCKS视图存储各打开事务所持有的锁信息。 - - - diff --git a/content/zh/docs/Developerguide/PG_OBJECT.md b/content/zh/docs/Developerguide/PG_OBJECT.md index 0378fc7a0143ec183495735c6f2a0574184ac273..e4a73974ff63ba8eb3937d8fa542d1e51867ec73 100644 --- a/content/zh/docs/Developerguide/PG_OBJECT.md +++ b/content/zh/docs/Developerguide/PG_OBJECT.md @@ -54,7 +54,7 @@ PG\_OBJECT系统表存储限定类型对象(普通表,索引,序列,视 >![](public_sys-resources/icon-notice.gif) **须知:** >- 无法记录初始化数据库(initdb)过程中所创建或修改的对象,即PG\_OBJECT无法查询到该对象记录。 ->- 对于升级至openGauss V500R001C00版本的数据库,无法记录升级以前所创建的对象,即PG\_OBJECT无法查询到该对象记录。 +>- 对于升级后的数据库,无法记录升级以前所创建的对象,即PG\_OBJECT无法查询到该对象记录。 >- 对于上述两类对象再次修改时,会记录其修改时间(mtime),由于无法得知该对象创建时间,因此ctime为空。 >- ctime和mtime所记录的时间为用户当次操作所属事务的起始时间。 >- 由扩容引起的对象修改时间也会被记录。 diff --git a/content/zh/docs/Developerguide/PG_OPCLASS.md b/content/zh/docs/Developerguide/PG_OPCLASS.md index 176387246a54f89ea34b330167a41cecaeb36ac4..10050edfbc34fe225e0cb91e0bb92bf4b6a4f976 100644 --- a/content/zh/docs/Developerguide/PG_OPCLASS.md +++ b/content/zh/docs/Developerguide/PG_OPCLASS.md @@ -30,7 +30,7 @@ PG\_OPCLASS系统表定义索引访问方法操作符类。 - @@ -48,7 +48,7 @@ PG\_OPCLASS系统表定义索引访问方法操作符类。 - @@ -66,7 +66,7 @@ PG\_OPCLASS系统表定义索引访问方法操作符类。 - @@ -75,7 +75,7 @@ PG\_OPCLASS系统表定义索引访问方法操作符类。 - @@ -93,7 +93,7 @@ PG\_OPCLASS系统表定义索引访问方法操作符类。 - diff --git a/content/zh/docs/Developerguide/PG_OPERATOR.md b/content/zh/docs/Developerguide/PG_OPERATOR.md index 9ea52785b02287fe3927f09a0bc651090ff85864..798d342c749ead0f7861cf2d26b17dd15e77a088 100644 --- a/content/zh/docs/Developerguide/PG_OPERATOR.md +++ b/content/zh/docs/Developerguide/PG_OPERATOR.md @@ -37,7 +37,7 @@ PG\_OPERATOR系统表存储有关操作符的信息。 - @@ -82,7 +82,7 @@ PG\_OPERATOR系统表存储有关操作符的信息。 - @@ -91,7 +91,7 @@ PG\_OPERATOR系统表存储有关操作符的信息。 - @@ -100,7 +100,7 @@ PG\_OPERATOR系统表存储有关操作符的信息。 - @@ -109,7 +109,7 @@ PG\_OPERATOR系统表存储有关操作符的信息。 - @@ -118,7 +118,7 @@ PG\_OPERATOR系统表存储有关操作符的信息。 - diff --git a/content/zh/docs/Developerguide/PG_OPFAMILY.md b/content/zh/docs/Developerguide/PG_OPFAMILY.md index ec37dc0ae94b7b48c30f0014292bc5cc4f401ed6..24dc0e8852edd8041e574a13a076e7074f6f6e7b 100644 --- a/content/zh/docs/Developerguide/PG_OPFAMILY.md +++ b/content/zh/docs/Developerguide/PG_OPFAMILY.md @@ -30,7 +30,7 @@ PG\_OPFAMILY系统表定义操作符族。 - @@ -48,7 +48,7 @@ PG\_OPFAMILY系统表定义操作符族。 - @@ -65,5 +65,5 @@ PG\_OPFAMILY系统表定义操作符族。

名称

@@ -27,46 +27,39 @@ GS\_WLM\_PLAN\_ENCODING\_TABLE系统表显示计划算子级的编码信息,

查询对应的执行计划的plan node id。

plan_node_id

+

startup_time

integer

-

查询对应的执行计划的plan node id。

-

startup_time

-

bignit

+

bignit

该算子处理第一条数据的开始时间。

total_time

+

total_time

bigint

该算子到结束时候总的执行时间(ms)。

rows

+

rows

bigint

+

bigint

当前算子执行的行数信息。

+

当前算子执行的行数信息。

peak_memory

+

peak_memory

integer

+

integer

当前算子在数据库节点上的最大内存峰值(MB)。

+

当前算子在数据库节点上的最大内存峰值(MB)。

encode

+

encode

text

+

text

当前计划算子的编码信息。

+

当前计划算子的编码信息。

datname

+

datname

name

+

name

收集计划信息所在的database名

+

收集计划信息所在的database名。

queryid

@@ -34,32 +34,32 @@ GS\_WLM\_PLAN\_OPERATOR\_INFO系统表显示执行作业结束后计划算子级

查询对应的执行计划的plan node id。

startup_time

+

startup_time

bigint

+

bigint

该算子处理第一条数据的开始时间。

total_time

+

total_time

bigint

该算子到结束时候总的执行时间(ms)。

actual_rows

+

actual_rows

bigint

+

bigint

实际执行的行数信息。

+

实际执行的行数信息。

max_peak_memory

+

max_peak_memory

integer

+

integer

当前算子在数据库节点上的最大内存峰值(MB)。

+

当前算子在数据库节点上的最大内存峰值(MB)。

query_dop

@@ -69,67 +69,67 @@ GS\_WLM\_PLAN\_OPERATOR\_INFO系统表显示执行作业结束后计划算子级

当前算子执行时的并行度。

parent_node_id

+

parent_node_id

integer

+

integer

当前算子的父节点node id。

+

当前算子的父节点node id。

left_child_id

+

left_child_id

integer

+

integer

当前算子的左孩子节点node id。

+

当前算子的左孩子节点node id。

right_child_id

+

right_child_id

integer

+

integer

当前算子的右孩子节点node id

+

当前算子的右孩子节点node id。

operation

+

operation

text

+

text

当前算子进行的操作名称。

+

当前算子进行的操作名称。

orientation

+

orientation

text

+

text

当前算子的对齐方式。

+

当前算子的对齐方式。

strategy

+

strategy

text

+

text

当前算子操作的实现方法。

+

当前算子操作的实现方法。

options

+

options

text

+

text

当前算子操作的选择方式。

+

当前算子操作的选择方式。

condition

+

condition

text

+

text

当前算子操作的过滤条件。

+

当前算子操作的过滤条件。

projection

+

projection

text

+

text

当前算子的映射关系。

+

当前算子的映射关系。

name

该字段不支持。

+

该字段不支持。

parentid

diff --git a/content/zh/docs/Developerguide/GS_WLM_SESSION_HISTORY.md b/content/zh/docs/Developerguide/GS_WLM_SESSION_HISTORY.md index 9880fe3695f1fa304f24a91a3c3244b5f635168b..ec39deee50d6476fdb1c8e69e58faa3a39929517 100644 --- a/content/zh/docs/Developerguide/GS_WLM_SESSION_HISTORY.md +++ b/content/zh/docs/Developerguide/GS_WLM_SESSION_HISTORY.md @@ -1,6 +1,6 @@ # GS\_WLM\_SESSION\_HISTORY -GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行作业结束后的负载管理记录。openGauss中的数据会定时被清理,清理周期为3分钟。当GUC参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为on时,视图中的记录每隔3分钟被转储到系统表[GS\_WLM\_SESSION\_QUERY\_INFO\_ALL](GS_WLM_SESSION_QUERY_INFO_ALL.md)中一次,同时视图中的记录被删除;当GUC参数[enable\_resource\_record](负载管理.md#zh-cn_topic_0237124729_zh-cn_topic_0059777791_s77bd1023b63c4cd489760aa33f08d1ea)为off时,记录在视图中的存留时间达到超期时间(超期时间为3分钟)后会被删除。 +GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行作业结束后的负载管理记录。 **表 1** GS\_WLM\_SESSION\_HISTORY的字段 @@ -143,7 +143,7 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行

text

该字段不支持

+

该字段不支持

estimate_memory

@@ -157,14 +157,14 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行

integer

语句在数据库节点上的最小内存峰值,单位MB。

+

语句在数据库节点上的最小内存峰值,单位MB。

max_peak_memory

integer

语句在数据库节点上的最大内存峰值,单位MB。

+

语句在数据库节点上的最大内存峰值,单位MB。

average_peak_memory

@@ -178,14 +178,14 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行

integer

语句数据库节点间的内存使用倾斜率。

+

语句数据库节点间的内存使用倾斜率。

spill_info

text

语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All: 数据库节点均下盘。
  • [a:b]: 数量为b个数据库节点中有a个数据库节点下盘。
+
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All: 数据库节点均下盘。
  • [a:b]: 数量为b个数据库节点中有a个数据库节点下盘。

integer

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

+

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

max_spill_size

integer

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

+

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

average_spill_size

integer

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

+

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

spill_skew_percent

@@ -221,49 +221,49 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行

bigint

语句在数据库节点上的最小执行时间,单位ms。

+

语句在数据库节点上的最小执行时间,单位ms。

max_dn_time

bigint

语句在数据库节点上的最大执行时间,单位ms。

+

语句在数据库节点上的最大执行时间,单位ms。

average_dn_time

bigint

语句在数据库节点上的平均执行时间,单位ms。

+

语句在数据库节点上的平均执行时间,单位ms。

dntime_skew_percent

integer

语句在数据库节点间的执行时间倾斜率。

+

语句在数据库节点间的执行时间倾斜率。

min_cpu_time

bigint

语句在数据库节点上的最小CPU时间,单位ms。

+

语句在数据库节点上的最小CPU时间,单位ms。

max_cpu_time

bigint

语句在数据库节点上的最大CPU时间,单位ms。

+

语句在数据库节点上的最大CPU时间,单位ms。

total_cpu_time

bigint

语句在数据库节点上的CPU总时间,单位ms。

+

语句在数据库节点上的CPU总时间,单位ms。

cpu_skew_percent

@@ -277,21 +277,21 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行

integer

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

+

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

max_peak_iops

integer

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

+

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

average_peak_iops

integer

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

+

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

iops_skew_percent

@@ -334,14 +334,14 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行

text

该字段不支持。

+

该字段不支持。

cpu_top1_node_name

text

当前数据库节点名称。

+

当前数据库节点名称。

cpu_top2_node_name

@@ -376,7 +376,7 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行

text

当前数据库节点名称。

+

当前数据库节点名称。

mem_top2_node_name

@@ -411,7 +411,7 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行

bigint

当前数据库节点cpu使用率。

+

当前数据库节点cpu使用率。

cpu_top2_value

@@ -446,7 +446,7 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行

bigint

当前数据库节点内存使用量。

+

当前数据库节点内存使用量。

mem_top2_value

@@ -481,14 +481,14 @@ GS\_WLM\_SESSION\_HISTORY视图显示当前用户在数据库主节点上执行

text

当前数据库节点内存使用量信息。

+

当前数据库节点内存使用量信息。

top_cpu_dn

text

当前数据库节点cpu使用量信息。

+

当前数据库节点cpu使用量信息。

text

语句执行的数据库主节点名称。

+

语句执行的数据库主节点名称。

username

@@ -164,7 +164,7 @@ GS\_WLM\_SESSION\_INFO系统表显示数据库主节点执行作业结束后的

integer

语句在数据库节点上的最大内存峰值,单位MB。

+

语句在数据库节点上的最大内存峰值,单位MB。

average_peak_memory

@@ -185,7 +185,7 @@ GS\_WLM\_SESSION\_INFO系统表显示数据库主节点执行作业结束后的

text

语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All: 数据库节点均下盘。
  • [a:b]: 数量为b个数据库节点中有a个数据库节点下盘。
+
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All: 数据库节点均下盘。
  • [a:b]: 数量为b个数据库节点中有a个数据库节点下盘。

integer

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

+

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

max_spill_size

integer

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

+

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

average_spill_size

integer

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

+

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

spill_skew_percent

integer

若发生下盘,数据库节点间下盘倾斜率。

+

若发生下盘,数据库节点间下盘倾斜率。

min_dn_time

bigint

语句在数据库节点上的最小执行时间,单位ms。

+

语句在数据库节点上的最小执行时间,单位ms。

max_dn_time

bigint

语句在数据库节点上的最大执行时间,单位ms。

+

语句在数据库节点上的最大执行时间,单位ms。

average_dn_time

bigint

语句在数据库节点上的平均执行时间,单位ms。

+

语句在数据库节点上的平均执行时间,单位ms。

dntime_skew_percent

integer

语句在数据库节点间的执行时间倾斜率。

+

语句在数据库节点间的执行时间倾斜率。

min_cpu_time

bigint

语句在数据库节点上的最小CPU时间,单位ms。

+

语句在数据库节点上的最小CPU时间,单位ms。

max_cpu_time

bigint

语句在数据库节点上的最大CPU时间,单位ms。

+

语句在数据库节点上的最大CPU时间,单位ms。

total_cpu_time

bigint

语句在数据库节点上的CPU总时间,单位ms。

+

语句在数据库节点上的CPU总时间,单位ms。

cpu_skew_percent

integer

语句在数据库节点间的CPU时间倾斜率。

+

语句在数据库节点间的CPU时间倾斜率。

min_peak_iops

integer

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

+

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

max_peak_iops

integer

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

+

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

average_peak_iops

integer

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

+

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

iops_skew_percent

integer

语句在数据库节点间的IO倾斜率。

+

语句在数据库节点间的IO倾斜率。

warning

@@ -334,7 +334,7 @@ GS\_WLM\_SESSION\_INFO系统表显示数据库主节点执行作业结束后的

text

语句所属用户对应的逻辑openGauss

+

语句所属用户对应的逻辑openGauss。

cpu_top1_node_name

@@ -344,34 +344,6 @@ GS\_WLM\_SESSION\_INFO系统表显示数据库主节点执行作业结束后的

cpu使用率第1的节点名称。

cpu_top2_node_name

-

text

-

cpu使用率第2的节点名称。

-

cpu_top3_node_name

-

text

-

cpu使用率第3的节点名称。

-

cpu_top4_node_name

-

text

-

cpu使用率第4的节点名称。

-

cpu_top5_node_name

-

text

-

cpu使用率第5的节点名称。

-

mem_top1_node_name

text

@@ -379,34 +351,6 @@ GS\_WLM\_SESSION\_INFO系统表显示数据库主节点执行作业结束后的

内存使用量第1的节点名称。

mem_top2_node_name

-

text

-

内存使用量第5的节点名称。

-

mem_top3_node_name

-

text

-

内存使用量第5的节点名称。

-

mem_top4_node_name

-

text

-

内存使用量第5的节点名称。

-

mem_top5_node_name

-

text

-

内存使用量第5的节点名称。

-

cpu_top1_value

bigint

@@ -414,34 +358,6 @@ GS\_WLM\_SESSION\_INFO系统表显示数据库主节点执行作业结束后的

cpu使用率。

cpu_top2_value

-

bigint

-

cpu使用率。

-

cpu_top3_value

-

bigint

-

cpu使用率。

-

cpu_top4_value

-

bigint

-

cpu使用率。

-

cpu_top5_value

-

bigint

-

cpu使用率。

-

mem_top1_value

bigint

@@ -449,34 +365,6 @@ GS\_WLM\_SESSION\_INFO系统表显示数据库主节点执行作业结束后的

内存使用量。

mem_top2_value

-

bigint

-

内存使用量。

-

mem_top3_value

-

bigint

-

内存使用量。

-

mem_top4_value

-

bigint

-

内存使用量。

-

mem_top5_value

-

bigint

-

内存使用量。

-

top_mem_dn

text

diff --git a/content/zh/docs/Developerguide/GS_WLM_SESSION_STATISTICS.md b/content/zh/docs/Developerguide/GS_WLM_SESSION_STATISTICS.md index 24c760c7e2f1e45840aef80c50db8e73881011e7..e34fe7c371d9ff6b56e63a87e8e720aa2c94a0c8 100644 --- a/content/zh/docs/Developerguide/GS_WLM_SESSION_STATISTICS.md +++ b/content/zh/docs/Developerguide/GS_WLM_SESSION_STATISTICS.md @@ -38,7 +38,7 @@ GS\_WLM\_SESSION\_STATISTICS视图显示当前用户在数据库主节点上正

text

语句执行的数据库主节点名称。

+

语句执行的数据库主节点名称。

username

@@ -136,7 +136,7 @@ GS\_WLM\_SESSION\_STATISTICS视图显示当前用户在数据库主节点上正

text

该字段不支持。

+

该字段不支持。

resource_pool

@@ -164,14 +164,14 @@ GS\_WLM\_SESSION\_STATISTICS视图显示当前用户在数据库主节点上正

integer

语句在数据库节点上的最小内存峰值,单位MB。

+

语句在数据库节点上的最小内存峰值,单位MB。

max_peak_memory

integer

语句在数据库节点上的最大内存峰值,单位MB。

+

语句在数据库节点上的最大内存峰值,单位MB。

average_peak_memory

@@ -185,14 +185,14 @@ GS\_WLM\_SESSION\_STATISTICS视图显示当前用户在数据库主节点上正

integer

语句在数据库节点间的内存使用倾斜率。

+

语句在数据库节点间的内存使用倾斜率。

spill_info

text

语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为b个数据库节点中有a个数据库节点下盘。
+
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为b个数据库节点中有a个数据库节点下盘。

integer

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

+

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

max_spill_size

integer

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

+

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

average_spill_size

integer

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

+

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

spill_skew_percent

@@ -228,77 +228,77 @@ GS\_WLM\_SESSION\_STATISTICS视图显示当前用户在数据库主节点上正

bigint

语句在数据库节点上的最小执行时间,单位ms。

+

语句在数据库节点上的最小执行时间,单位ms。

max_dn_time

bigint

语句在数据库节点上的最大执行时间,单位ms。

+

语句在数据库节点上的最大执行时间,单位ms。

average_dn_time

bigint

语句在数据库节点上的平均执行时间,单位ms。

+

语句在数据库节点上的平均执行时间,单位ms。

dntime_skew_percent

integer

语句在数据库节点间的执行时间倾斜率。

+

语句在数据库节点间的执行时间倾斜率。

min_cpu_time

bigint

语句在数据库节点上的最小CPU时间,单位ms。

+

语句在数据库节点上的最小CPU时间,单位ms。

max_cpu_time

bigint

语句在数据库节点上的最大CPU时间,单位ms。

+

语句在数据库节点上的最大CPU时间,单位ms。

total_cpu_time

bigint

语句在数据库节点上的CPU总时间,单位ms。

+

语句在数据库节点上的CPU总时间,单位ms。

cpu_skew_percent

integer

语句在数据库节点间的CPU时间倾斜率。

+

语句在数据库节点间的CPU时间倾斜率。

min_peak_iops

integer

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

+

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

max_peak_iops

integer

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

+

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

average_peak_iops

integer

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

+

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

iops_skew_percent

@@ -341,7 +341,7 @@ GS\_WLM\_SESSION\_STATISTICS视图显示当前用户在数据库主节点上正

text

该字段不支持

+

该字段不支持。

top_mem_dn

diff --git "a/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260\350\257\264\346\230\216.md" "b/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260\350\257\264\346\230\216.md" index d8346e59830d0f0045a017e6df26f8c7b5008080..d93ed553bd416647641b105ff1cd656131036099 100644 --- "a/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260\350\257\264\346\230\216.md" +++ "b/content/zh/docs/Developerguide/GUC\345\217\202\346\225\260\350\257\264\346\230\216.md" @@ -14,8 +14,6 @@ - **[双机复制](双机复制.md)** -- **[内存表](内存表.md)** - - **[查询规划](查询规划.md)** - **[错误报告和日志](错误报告和日志.md)** @@ -44,15 +42,13 @@ - **[审计](审计.md)** -- **[事务监控](事务监控.md)** - - **[升级参数](升级参数.md)** - **[其它选项](其它选项.md)** - **[等待事件](等待事件.md)** -- **[Query](Query.md)** +- **[Query](Query-22.md)** - **[系统性能快照](系统性能快照.md)** diff --git "a/content/zh/docs/Developerguide/Hint\347\232\204\351\224\231\350\257\257-\345\206\262\347\252\201\345\217\212\345\221\212\350\255\246.md" "b/content/zh/docs/Developerguide/Hint\347\232\204\351\224\231\350\257\257-\345\206\262\347\252\201\345\217\212\345\221\212\350\255\246.md" new file mode 100644 index 0000000000000000000000000000000000000000..ce60d4772663d13a18cccdb0ce36d39b6d5276ac --- /dev/null +++ "b/content/zh/docs/Developerguide/Hint\347\232\204\351\224\231\350\257\257-\345\206\262\347\252\201\345\217\212\345\221\212\350\255\246.md" @@ -0,0 +1,63 @@ +# Hint的错误、冲突及告警 + +Plan Hint的结果会体现在计划的变化上,可以通过explain来查看变化。 + +Hint中的错误不会影响语句的执行,只是不能生效,该错误会根据语句类型以不同方式提示用户。对于explain语句,hint的错误会以warning形式显示在界面上,对于非explain语句,会以debug1级别日志显示在日志中,关键字为PLANHINT。 + +hint的错误分为以下类型: + +- 语法错误 + + 语法规则树归约失败,会报错,指出出错的位置。 + + 例如:hint关键字错误,leading hint或join hint指定2个表以下,其它hint未指定表等。一旦发现语法错误,则立即终止hint的解析,所以此时只有错误前面的解析完的hint有效。 + + 例如: + + ``` + 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\)不冲突。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >leading hint中的多个表会进行拆解。例如:leading \(\(t1 t2 t3\)\)会拆解成:leading\(\(t1 t2\)\) leading\(\(\(t1 t2\) t3\)\),此时如果存在leading\(\(t2 t1\)\),则两者冲突,后面的会被丢弃。(例外:指定内外表的hint若与不指定内外表的hint重复,则始终丢弃不指定内外表的hint。) + + +- 子链接提升后hint失效 + + 子链接提升后的hint失效,会给出提示。通常出现在子链接中存在多个表连接的场景。提升后,子链接中的多个表不再作为一个整体出现在join中。 + +- 列类型不支持重分布 + - 对于skew hint来说,目的是为了进行重分布时的调优,所以当hint列的类型不支持重分布时,hint将无效。 + +- hint未被使用 + - 非等值join使用hashjoin hint或mergejoin hint + - 不包含索引的表使用indexscan hint或indexonlyscan hint + - 通常只有在索引列上使用过滤条件才会生成相应的索引路径,全表扫描将不会使用索引,因此使用indexscan hint或indexonlyscan hint将不会使用 + - indexonlyscan只有输出列仅包含索引列才会使用,否则指定时hint不会被使用 + - 多个表存在等值连接时,仅尝试有等值连接条件的表的连接,此时没有关联条件的表之间的路径将不会生成,所以指定相应的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参数处于关闭状态。 + + + diff --git a/content/zh/docs/Developerguide/I-O.md b/content/zh/docs/Developerguide/I-O.md new file mode 100644 index 0000000000000000000000000000000000000000..8f3319bd5de30d1f64736bb7e29a2619a9d34e37 --- /dev/null +++ b/content/zh/docs/Developerguide/I-O.md @@ -0,0 +1,76 @@ +# I/O + +通过iostat、pidstat命令或openGauss健康检查工具查看openGauss内节点I/O繁忙度和吞吐量,分析是否存在由于I/O导致的性能瓶颈。 + +## 查看I/O状况 + +查询服务器I/O的方法主要有以下三种方式: + +- 使用iostat命令查看I/O情况。此命令主要关注单个硬盘的I/O使用率和每秒读取、写入的数量。 + + ``` + iostat -xm 1 //1为间隔时间 + Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util + sdc 0.01 519.62 2.35 44.10 0.31 2.17 109.66 0.68 14.62 2.80 15.25 0.31 1.42 + sdb 0.01 515.95 5.84 44.78 0.89 2.16 123.51 0.72 14.19 1.55 15.84 0.31 1.55 + sdd 0.02 519.93 2.36 43.91 0.32 2.17 110.16 0.65 14.12 2.58 14.74 0.30 1.38 + sde 0.02 520.26 2.34 45.17 0.31 2.18 107.46 0.80 16.86 2.92 17.58 0.34 1.63 + sda 12.07 15.72 3.97 5.01 0.07 0.08 34.11 0.28 30.64 10.11 46.92 0.98 0.88 + ``` + + “rMB/s”为每秒读取的MB数,“wMB/s”为每秒写入的MB数,“%util”为硬盘使用率。 + +- 使用pidstat命令查看I/O情况。此命令主要关注单个进程每秒读取、写入的数量。 + + ``` + pidstat -d 1 10 //1为间隔时间,10表示查看占用I/O最多的Top10进程 + 03:17:12 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command + 03:17:13 PM 1006 36134 0.00 59436.00 0.00 gaussdb + + ``` + + “kB\_rd/s”为每秒读取的kB数,“kB\_wr/s”为每秒写入的kB数。 + +- 使用gs\_checkperf工具对openGauss进行性能检查,需要以omm用户登录。 + + ``` + gs_checkperf + Cluster statistics information: + Host CPU busy time ratio : .69 % + MPPDB CPU time % in busy time : .35 % + Shared Buffer Hit ratio : 99.92 % + In-memory sort ratio : 100.00 % + Physical Reads : 8581 + Physical Writes : 2603 + DB size : 281 MB + Total Physical writes : 1944 + Active SQL count : 3 + Session count : 11 + ``` + + 显示结果包括每个节点的I/O使用情况,文件读写次数和时间。 + + 也可以使用gs\_checkperf --detail命令查询每个节点的详细性能信息。 + + +## 性能参数分析 + +1. 检查磁盘空间使用率,建议不要超过60%。 + + ``` + df -T + ``` + +2. 若I/O持续过高,建议尝试以下方式降低I/O。 + - 降低并发数。 + - 对查询相关表做VACUUM FULL。 + + ``` + vacuum full tablename; + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >建议用户在系统空闲时进行VACUUM FULL操作,VACUUM FULL操作会造成短时间内I/O负载重,反而不利于降低I/O。 + + + diff --git a/content/zh/docs/Developerguide/INSERT.md b/content/zh/docs/Developerguide/INSERT.md index bab8c69bc4af3146bff97b0608facbf90cd7112a..5b08dbbb9a315136cb19a890c1cc13f866cf2e5f 100644 --- a/content/zh/docs/Developerguide/INSERT.md +++ b/content/zh/docs/Developerguide/INSERT.md @@ -24,7 +24,7 @@ INSERT INTO table_name [ ( column_name [, ...] ) ] { DEFAULT VALUES | VALUES {( { expression | DEFAULT } [, ...] ) }[, ...] | query } - [ ON DUPLICATE KEY UPDATE { NOTHING | column_name = { expression | DEFAULT } } [, ...] ] + [ ON DUPLICATE KEY UPDATE { column_name = { expression | DEFAULT } } [, ...] ] [ RETURNING {* | {output_expression [ [ AS ] output_name ] }[, ...]} ]; ``` @@ -104,7 +104,7 @@ INSERT INTO table_name [ ( column_name [, ...] ) ] - **ON DUPLICATE KEY UPDATE** - 对于带有唯一约束(UNIQUE INDEX或PRIMARY KEY)的表,如果插入数据违反唯一约束,则对冲突行执行UPDATE子句完成更新。如果UPDATE子句为NOTHING,则不做任何操作。 + 对于带有唯一约束(UNIQUE INDEX或PRIMARY KEY)的表,如果插入数据违反唯一约束,则对冲突行执行UPDATE子句完成更新。 对于不带唯一约束的表,则仅执行插入。 @@ -115,9 +115,7 @@ INSERT INTO table_name [ ( column_name [, ...] ) ] - 如果表中存在多个唯一约束,如果所插入数据违反多个唯一约束,对于检测到冲突的第一行进行更新,其他冲突行不更新(检查顺序与索引维护具有强相关性,一般先创建的索引先进行冲突检查)。 - 分布列、唯一索引列不允许UPDATE。 - - 不支持列存 - - 。 - + - 不支持列存。 ## 示例 diff --git a/content/zh/docs/Developerguide/INSTANCE_TIME.md b/content/zh/docs/Developerguide/INSTANCE_TIME.md new file mode 100644 index 0000000000000000000000000000000000000000..7406849bbef0c35a6d69ef65d8d494a7c38d08f6 --- /dev/null +++ b/content/zh/docs/Developerguide/INSTANCE_TIME.md @@ -0,0 +1,50 @@ +# INSTANCE\_TIME + +提供当前集群节点下的各种时间消耗信息,主要分为以下类型: + +- 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:IO上的时间花销。 + +**表 1** INSTANCE\_TIME字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

stat_id

+

integer

+

统计编号。

+

stat_name

+

text

+

类型名称。

+

value

+

bigint

+

时间值(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/Instance.md b/content/zh/docs/Developerguide/Instance.md new file mode 100644 index 0000000000000000000000000000000000000000..c200bb30e3250b3179eb34d3d1b98a55afaab839 --- /dev/null +++ b/content/zh/docs/Developerguide/Instance.md @@ -0,0 +1,7 @@ +# Instance + +- **[INSTANCE\_TIME](INSTANCE_TIME.md)** + +- **[GLOBAL\_INSTANCE\_TIME](GLOBAL_INSTANCE_TIME.md)** + + diff --git "a/content/zh/docs/Developerguide/Ispell\350\257\215\345\205\270.md" "b/content/zh/docs/Developerguide/Ispell\350\257\215\345\205\270.md" index b6476244cfbd7991cada4830391b34bbe0c93cb5..34301e4c30db31b734f7d230fcbb3ec06eb0cfe1 100644 --- "a/content/zh/docs/Developerguide/Ispell\350\257\215\345\205\270.md" +++ "b/content/zh/docs/Developerguide/Ispell\350\257\215\345\205\270.md" @@ -8,7 +8,7 @@ openGauss不提供任何预定义的Ispell类型词典或词典文件。dict文 1. 获取词典定义文件和词缀文件。 - 用户可以使用开源词典(OpenOffice上可以获取),直接获取的开源词典后缀名可能为.aff和.dic,此时需要将扩展名改为.affix和.dict。此外,对于某些词典文件,还需要使用下面的命令把字符转换成 UTF-8 编码,比如挪威语词典: + 用户可以使用开源词典,直接获取的开源词典后缀名可能为.aff和.dic,此时需要将扩展名改为.affix和.dict。此外,对于某些词典文件,还需要使用下面的命令把字符转换成 UTF-8 编码,比如挪威语词典: ``` iconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff @@ -26,7 +26,7 @@ openGauss不提供任何预定义的Ispell类型词典或词典文件。dict文 ); ``` - 其中,词典文件全名为nn\_no.dict和nn\_no.affix,所在目录为当前连接数据库主节点的/home/dicts/下 。关于创建词典的语法和更多参数,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370586)。 + 其中,词典文件全名为nn\_no.dict和nn\_no.affix,所在目录为当前连接数据库主节点的/home/dicts/下 。关于创建词典的语法和更多参数,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md)。 3. 使用Ispell词典进行复合词拆分。 diff --git "a/content/zh/docs/Developerguide/JDBC\345\214\205-\351\251\261\345\212\250\347\261\273\345\222\214\347\216\257\345\242\203\347\261\273.md" "b/content/zh/docs/Developerguide/JDBC\345\214\205-\351\251\261\345\212\250\347\261\273\345\222\214\347\216\257\345\242\203\347\261\273.md" new file mode 100644 index 0000000000000000000000000000000000000000..7305a80be73fc9cf6c7fec5153ab0d1d217bd16c --- /dev/null +++ "b/content/zh/docs/Developerguide/JDBC\345\214\205-\351\251\261\345\212\250\347\261\273\345\222\214\347\216\257\345\242\203\347\261\273.md" @@ -0,0 +1,65 @@ +# JDBC包、驱动类和环境类 + +## JDBC包 + +在源代码目录下执行build.sh,获得驱动jar包postgresql.jar,包位置在源代码目录下。从发布包中获取, 包名为openGauss-x.x.x-操作系统版本号-64bit-Jdbc.tar.gz。 + +驱动包与PostgreSQL保持兼容,其中类名、类结构与PostgreSQL驱动完全一致,曾经运行于PostgreSQL的应用程序可以直接移植到当前系统使用。 + +## 驱动类 + +在创建数据库连接之前,需要加载数据库驱动类“org.postgresql.Driver”。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>由于openGauss在JDBC的使用上与PG的使用方法保持兼容,所以同时在同一进程内使用两个JDBC驱动的时候,可能会类名冲突。 + +## 环境类 + +客户端需配置JDK1.8,配置方法如下: + +1. DOS窗口输入“java -version”,查看JDK版本,确认为JDK1.8版本。如果未安装JDK,请从官方网站下载安装包并安装。 +2. 根据如下步骤配置系统环境变量。 + 1. 右键单击“我的电脑“,选择“属性“。 + 2. 在“系统“页面左侧导航栏单击“高级系统设置“。 + 3. 在“系统属性“页面,“高级“页签上单击“环境变量“。 + 4. 在“环境变量“页面上,“系统变量“区域单击“新建“或“编辑“配置系统变量。变量说明请参见[表1](#zh-cn_topic_0237120378_zh-cn_topic_0213179123_table1625616152473)。 + + **表 1** 变量说明 + + + + + + + + + + + + + + + + + + + + +

变量名

+

操作

+

变量值

+

JAVA_HOME

+
  • 若存在,则单击“编辑”。
  • 若不存在,则单击“新建”。
+

JAVA的安装目录。

+

例如:C:\Program Files\Java\jdk1.8.0_131

+

Path

+

编辑

+
  • 若配置了JAVA_HOME,则在变量值的最前面加上: %JAVA_HOME%\bin;
  • 若未配置JAVA_HOME,则在变量值的最前面加上 JAVA安装的全路径:

    C:\Program Files\Java\jdk1.8.0_131\bin;

    +
+

CLASSPATH

+

新建

+

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;

+
+ + + diff --git "a/content/zh/docs/Developerguide/JDBC\346\216\245\345\217\243\345\217\202\350\200\203.md" "b/content/zh/docs/Developerguide/JDBC\346\216\245\345\217\243\345\217\202\350\200\203.md" new file mode 100644 index 0000000000000000000000000000000000000000..f867d97a7f8c0e11083b61bdcbd0108b8e3f329c --- /dev/null +++ "b/content/zh/docs/Developerguide/JDBC\346\216\245\345\217\243\345\217\202\350\200\203.md" @@ -0,0 +1,4 @@ +# JDBC接口参考 + +请参见[JDBC](JDBC.md)。 + diff --git "a/content/zh/docs/Developerguide/JSON\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/JSON\345\207\275\346\225\260.md" index bcf39bd19dd3368b1acb9d0dadd9788244c84efd..14de71e4dc1ccd1a075a1a06c81e27b611d152e2 100644 --- "a/content/zh/docs/Developerguide/JSON\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/JSON\345\207\275\346\225\260.md" @@ -1,6 +1,6 @@ # JSON函数 -JSON函数表示可以用于JSON类型(请参考[JSON类型](JSON类型.md#ZH-CN_TOPIC_0242370422))数据的函数。 +JSON函数表示可以用于JSON类型(请参考[JSON类型](JSON类型.md))数据的函数。 - array\_to\_json\(anyarray \[, pretty\_bool\]\) diff --git "a/content/zh/docs/Developerguide/JSON\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/JSON\347\261\273\345\236\213.md" index e00d749f3306208a91e483688e18e2e810fcdf55..94fb56e7e455dd77322f6dd0aca9615f443de97e 100644 --- "a/content/zh/docs/Developerguide/JSON\347\261\273\345\236\213.md" +++ "b/content/zh/docs/Developerguide/JSON\347\261\273\345\236\213.md" @@ -2,5 +2,5 @@ JSON数据类型可以用来存储JSON(JavaScript Object Notation)数据。数据可以存储为text,但是JSON数据类型更有利于检查每个存储的数值是可用的JSON值。 -JSON类型相关的支持函数请参见[JSON函数](JSON函数.md#ZH-CN_TOPIC_0242370441)。 +JSON类型相关的支持函数请参见[JSON函数](JSON函数.md)。 diff --git "a/content/zh/docs/Developerguide/Join\346\226\271\345\274\217\347\232\204Hint.md" "b/content/zh/docs/Developerguide/Join\346\226\271\345\274\217\347\232\204Hint.md" new file mode 100644 index 0000000000000000000000000000000000000000..cb45dd4c7714f0b8d8043684a0a69d0c8f3c63db --- /dev/null +++ "b/content/zh/docs/Developerguide/Join\346\226\271\345\274\217\347\232\204Hint.md" @@ -0,0 +1,35 @@ +# Join方式的Hint + +## 功能描述 + +指明Join使用的方法,可以为Nested Loop,Hash Join和Merge Join。 + +## 语法格式 + +``` +[no] nestloop|hashjoin|mergejoin(table_list) +``` + +## 参数说明 + +- **no**表示hint的join方式不使用。 + +- **table\_list**为表示hint表集合的字符串,该字符串中的表与[join\_table\_list](Join顺序的Hint.md#zh-cn_topic_0237121533_section1280444714345)相同,只是中间不允许出现括号指定join的优先级。 + +例如: + +no nestloop\(t1 t2 t3\)表示:生成t1,t2,t3三表连接计划时,不使用nestloop。三表连接计划可能是t2 t3先join,再跟t1 join,或t1 t2先join,再跟t3 join。此hint只hint最后一次join的join方式,对于两表连接的方法不hint。如果需要,可以单独指定,例如:任意表均不允许nestloop连接,且希望t2 t3先join,则增加hint:no nestloop\(t2 t3\)。 + +## 示例 + +对[示例](Plan-Hint调优概述.md#zh-cn_topic_0237121532_section671421102912)中原语句使用如下hint: + +``` +explain +select /*+ nestloop(store_sales store_returns item) */ i_product_name product_name ... +``` + +该hint表示:生成store\_sales,store\_returns和item三表的结果集时,最后的两表关联使用nestloop。生成计划如下所示: + +![](figures/zh-cn_image_0253032870.png) + diff --git "a/content/zh/docs/Developerguide/Join\351\241\272\345\272\217\347\232\204Hint.md" "b/content/zh/docs/Developerguide/Join\351\241\272\345\272\217\347\232\204Hint.md" new file mode 100644 index 0000000000000000000000000000000000000000..c9f207293dce92a79e946c4f5578af09edb65c3e --- /dev/null +++ "b/content/zh/docs/Developerguide/Join\351\241\272\345\272\217\347\232\204Hint.md" @@ -0,0 +1,62 @@ +# Join顺序的Hint + +## 功能描述 + +指明join的顺序,包括内外表顺序。 + +## 语法格式 + +- 仅指定join顺序,不指定内外表顺序。 + +``` +leading(join_table_list) +``` + +- 同时指定join顺序和内外表顺序,内外表顺序仅在最外层生效。 + +``` +leading((join_table_list)) +``` + +## 参数说明 + +**join\_table\_list**为表示表join顺序的hint字符串,可以包含当前层的任意个表(别名),或对于子查询提升的场景,也可以包含子查询的hint别名,同时任意表可以使用括号指定优先级,表之间使用空格分隔。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>表只能用单个字符串表示,不能带schema。 +>表如果存在别名,需要优先使用别名来表示该表。 + +join table list中指定的表需要满足以下要求,否则会报语义错误。 + +- list中的表必须在当前层或提升的子查询中存在。 +- list中的表在当前层或提升的子查询中必须是唯一的。如果不唯一,需要使用不同的别名进行区分。 +- 同一个表只能在list里出现一次。 +- 如果表存在别名,则list中的表需要使用别名。 + +例如: + +leading\(t1 t2 t3 t4 t5\)表示:t1, t2, t3, t4, t5先join,五表join顺序及内外表不限。 + +leading\(\(t1 t2 t3 t4 t5\)\)表示:t1和t2先join,t2做内表;再和t3 join,t3做内表;再和t4 join,t4做内表;再和t5 join,t5做内表。 + +leading\(t1 \(t2 t3 t4\) t5\)表示:t2, t3, t4先join,内外表不限;再和t1, t5 join,内外表不限。 + +leading\(\(t1 \(t2 t3 t4\) t5\)\)表示:t2, t3, t4先join,内外表不限;在最外层,t1再和t2, t3, t4的join表join,t1为外表,再和t5 join,t5为内表。 + +leading\(\(t1 \(t2 t3\) t4 t5\)\) leading\(\(t3 t2\)\)表示:t2, t3先join,t2做内表;然后再和t1 join,t2, t3的join表做内表;然后再依次跟t4, t5做join,t4, t5做内表。 + +## 示例 + +对[示例](Plan-Hint调优概述.md#zh-cn_topic_0237121532_section671421102912)中原语句使用如下hint: + +``` +explain +select /*+ leading((((((store_sales store) promotion) item) customer) ad2) store_returns) leading((store store_sales))*/ i_product_name product_name ... +``` + +该hint表示:表之间的join关系是:store\_sales和store先join, store\_sales做内表,然后依次跟promotion, item, customer, ad2, store\_returns做join。生成计划如下所示: + +![](figures/zh-cn_image_0253030479.png) + +图中计划顶端warning的提示详见[Hint的错误、冲突及告警](Hint的错误-冲突及告警.md)的说明。 + diff --git "a/content/zh/docs/Developerguide/LLVM\344\275\277\347\224\250\345\273\272\350\256\256.md" "b/content/zh/docs/Developerguide/LLVM\344\275\277\347\224\250\345\273\272\350\256\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..6d76d5ffc67fd69707cecc38a7b18b4e8740104d --- /dev/null +++ "b/content/zh/docs/Developerguide/LLVM\344\275\277\347\224\250\345\273\272\350\256\256.md" @@ -0,0 +1,12 @@ +# LLVM使用建议 + +目前LLVM在数据库内核侧已默认打开,用户可结合上述的分析进行配置,总体建议如下: + +1. 设置合理的work\_mem,在允许的条件下尽可能设置较大的work\_mem,如果出现大量下盘,则建议关闭LLVM动态编译优化\(通过设置enable\_codegen=off实现\)。 +2. 设置合理的codegen\_cost\_threshold\(默认值为10000\),确保小数据量场景下避免使用LLVM动态编译优化。当codegen\_cost\_threshold的值设定后,因使用LLVM动态编译优化引入性能劣化,则建议增加codegen\_cost\_threshold的取值。 +3. 对于表达式计算使用LLVM动态编译优化,如果存在大量的调用C-函数的场景,建议关闭LLVM动态编译优化。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >在资源许可的情况下,数据量越大,可获得的性能提升效果越好。 + + diff --git "a/content/zh/docs/Developerguide/LLVM\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" "b/content/zh/docs/Developerguide/LLVM\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" new file mode 100644 index 0000000000000000000000000000000000000000..ad0cd7914ce2b38284c2574401ce3d414875e13f --- /dev/null +++ "b/content/zh/docs/Developerguide/LLVM\351\200\202\347\224\250\345\234\272\346\231\257\344\270\216\351\231\220\345\210\266.md" @@ -0,0 +1,35 @@ +# LLVM适用场景与限制 + +## 适用场景 + +- 支持LLVM的表达式 + + 查询语句中存在以下的表达式支持LLVM优化: + + 1. Case…when… 表达式 + 2. In表达式 + 3. Bool表达式 \(And/Or/Not\) + 4. BooleanTest表达式 \(IS\_NOT\_KNOWN/IS\_UNKNOWN/IS\_TRUE/IS\_NOT\_TRUE/IS\_FALSE/IS\_NOT\_FALSE\) + 5. NullTest表达式 \(IS\_NOT\_NULL/IS\_NULL\) + 6. Operator表达式 + 7. Function表达式 \(lpad, substring, btrim, rtrim, length\) + 8. Nullif表达式 + + 表达式计算支持的数据类型包括bool, tinyint, smallint, int, bigint, float4, float8, numeric, date, time, timetz, timestamp, timestamptz, interval, bpchar, varchar, text, oid。 + + 仅当表达式出现在向量化执行引擎中Scan节点的filter、Hash Join节点中的complicate hash condition、hash join filter、hash join target, Nested Loop节点中的filter、join filter, Merge Join节点的merge join filter, merge join target, Group节点中的filter表达式时,才会考虑是否使用LLVM动态编译优化。 + +- 支持LLVM的算子: + + 1. Join :HashJoin + 2. Agg :HashAgg + 3. Sort + + 其中HashJoin算子仅支持Hash Inner Join,对应的hash cond仅支持int4、bigint、bpchar类型的比较;HashAgg算子仅支持针对bigint、numeric类型的sum及avg操作,且group by语句仅支持int4、bigint、bpchar,text,varchar,timestamp类型操作,同时支持count\(\*\)聚集操作。Sort算子仅支持对int4,bigint,numeric,bpchar,text,varchar数据类型的比较操作。除此之外,无法使用LLVM动态编译优化,具体可通过explain performance工具进行显示。 + + +## 非适用场景 + +- 不支持小数据量表使用LLVM动态编译优化。 +- 不支持生成非向量化执行路径的查询作业。 + diff --git a/content/zh/docs/Developerguide/LOCAL_REL_IOSTAT.md b/content/zh/docs/Developerguide/LOCAL_REL_IOSTAT.md new file mode 100644 index 0000000000000000000000000000000000000000..2b5d560e9761c99f6fe0481e9e066b782314b9e9 --- /dev/null +++ b/content/zh/docs/Developerguide/LOCAL_REL_IOSTAT.md @@ -0,0 +1,46 @@ +# LOCAL\_REL\_IOSTAT + +获取当前节点中数据文件IO状态的累计值,显示为所有数据文件IO状态的总和。 + +**表 1** LOCAL\_REL\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

phyrds

+

bigint

+

读物理文件的数目。

+

phywrts

+

bigint

+

写物理文件的数目。

+

phyblkrd

+

bigint

+

读物理文件的块的数目。

+

phyblkwrt

+

bigint

+

写物理文件的块的数目。

+
+ diff --git a/content/zh/docs/Developerguide/LOCAL_THREADPOOL_STATUS.md b/content/zh/docs/Developerguide/LOCAL_THREADPOOL_STATUS.md new file mode 100644 index 0000000000000000000000000000000000000000..95b7baf0b40b4642293d10227523ecea05275e43 --- /dev/null +++ b/content/zh/docs/Developerguide/LOCAL_THREADPOOL_STATUS.md @@ -0,0 +1,69 @@ +# LOCAL\_THREADPOOL\_STATUS + +LOCAL\_THREADPOOL\_STATUS视图显示线程池下工作线程及会话的状态信息。该视图仅在线程池开启(enable\_thread\_pool = on)时生效。 + +**表 1** LOCAL\_THREADPOOL\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

group_id

+

integer

+

线程池组ID。

+

bind_numa_id

+

integer

+

该线程池组绑定的NUMA ID。

+

bind_cpu_number

+

integer

+

该线程池组绑定的CPU信息。如果未绑定CPU,该值为NULL。

+

listener

+

integer

+

该线程池组的Listener线程数量。

+

worker_info

+

text

+

线程池中线程相关信息,包括以下信息:

+
  • default:该线程池组中的初始线程数量。
  • new:该线程池组中新增线程的数量。
  • expect:该线程池组中预期线程的数量。
  • actual:该线程池组中实际线程的数量。
  • idle:该线程池组中空闲线程的数量。
  • pending:该线程池组中等待线程的数量。
+

session_info

+

text

+

线程池中会话相关信息,包括以下信息:

+
  • total:该线程池组中所有的会话数量。
  • waiting:该线程池组中等待调度的会话数量。
  • running:该线程池中正在执行的会话数量。
  • idle:该线程池组中空闲的会话数量。
+
+ diff --git a/content/zh/docs/Developerguide/LOCK.md b/content/zh/docs/Developerguide/LOCK.md index b26c0c3382665b9ea234975505e5f8090b3dbc7e..fd02cace014c649f08543250e9ca8d641c0871ee 100644 --- a/content/zh/docs/Developerguide/LOCK.md +++ b/content/zh/docs/Developerguide/LOCK.md @@ -1,306 +1,7 @@ -# LOCK +# Lock -## 功能描述 +- **[LOCKS](LOCKS.md)** -LOCK TABLE获取表级锁。 +- **[GLOBAL\_LOCKS](GLOBAL_LOCKS.md)** -openGauss在为一个引用了表的命令自动请求锁时,尽可能选择最小限制的锁模式。如果用户需要一种更为严格的锁模式,可以使用LOCK命令。例如,一个应用是在Read Committed隔离级别上运行事务,并且它需要保证表中的数据在事务的运行过程中不被修改。为实现这个目的,则可以在查询之前对表使用SHARE锁模式进行锁定。这样将防止数据不被并发修改,从而保证后续的查询可以读到已提交的持久化的数据。因为SHARE锁模式与任何写操作需要的ROW EXCLUSIVE模式冲突,并且LOCK TABLE name IN SHARE MODE语句将等到所有当前持有ROW EXCLUSIVE模式锁的事务提交或回滚后才能执行。因此,一旦获得该锁,就不会存在未提交的写操作,并且其他操作也只能等到该锁释放之后才能开始。 - -## 注意事项 - -- LOCK TABLE只能在一个事务块的内部有用,因为锁在事务结束时就会被释放。出现在任意事务块外面的LOCK TABLE都会报错。 -- 如果没有声明锁模式,缺省为最严格的模式ACCESS EXCLUSIVE。 -- LOCK TABLE ... IN ACCESS SHARE MODE需要在目标表上有SELECT权限。所有其他形式的LOCK需要UPDATE和/或DELETE权限。 -- 没有UNLOCK TABLE命令,锁总是在事务结束时释放。 -- LOCK TABLE只处理表级的锁,因此那些带“ROW”字样的锁模式都是有歧义的。这些模式名称通常可理解为用户试图在一个被锁定的表中获取行级的锁。同样,ROW EXCLUSIVE模式也是一个可共享的表级锁。注意,只要是涉及到LOCK TABLE ,所有锁模式都有相同的语意,区别仅在于规则中锁与锁之间是否冲突,规则请参见[表1](#zh-cn_topic_0237122168_zh-cn_topic_0059778442_ta3d4fbc3c92c4f2994f7a9f5583a6ba5)。 - -## 语法格式 - -``` -LOCK [ TABLE ] {[ ONLY ] name [, ...]| {name [ * ]} [, ...]} - [ IN {ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE} MODE ] - [ NOWAIT ]; -``` - -## 参数说明 - -**表 1** 冲突的锁模式 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

请求的锁模式/当前锁模式

-

ACCESS SHARE

-

ROW SHARE

-

ROW EXCLUSIVE

-

SHARE UPDATE EXCLUSIVE

-

SHARE

-

SHARE ROW EXCLUSIVE

-

EXCLUSIVE

-

ACCESS EXCLUSIVE

-

ACCESS SHARE

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

X

-

ROW SHARE

-

-

-

-

-

-

-

-

-

-

-

-

-

X

-

X

-

ROW EXCLUSIVE

-

-

-

-

-

-

-

-

-

X

-

X

-

X

-

X

-

SHARE UPDATE EXCLUSIVE

-

-

-

-

-

-

-

X

-

X

-

X

-

X

-

X

-

SHARE

-

-

-

-

-

X

-

X

-

-

-

X

-

X

-

X

-

SHARE ROW EXCLUSIVE

-

-

-

-

-

X

-

X

-

X

-

X

-

X

-

X

-

EXCLUSIVE

-

-

-

X

-

X

-

X

-

X

-

X

-

X

-

X

-

ACCESS EXCLUSIVE

-

X

-

X

-

X

-

X

-

X

-

X

-

X

-

X

-
- -LOCK的参数说明如下所示: - -- **name** - - 要锁定的表的名称,可以有模式修饰。 - - LOCK TABLE命令中声明的表的顺序就是上锁的顺序。 - - 取值范围:已存在的表名。 - -- **ONLY** - - 如果指定ONLY,只有该表被锁定。如果没有声明,该表和他的所有子表将都被锁定。 - -- **ACCESS SHARE** - - ACCESS锁只允许对表进行读取,而禁止对表进行修改。所有对表进行读取而不修改的SQL语句都会自动请求这种锁。例如,SELECT命令会自动在被引用的表上请求一个这种锁。 - -- **ROW SHARE** - - ROW SHARE锁允许对表进行并发读取,禁止对表进行其他操作。 - - SELECT FOR UPDATE和SELECT FOR SHARE命令会自动在目标表上请求ROW SHARE锁(且所有被引用但不是FOR SHARE/FOR UPDATE的其他表上,还会自动加上ACCESS SHARE锁)。 - -- **ROW EXCLUSIVE** - - 与ROW SHARE锁相同,ROW EXCLUSIVE允许并发读取表,但是禁止修改表中数据。UPDATE,DELETE,INSERT命令会自动在目标表上请求这个锁(且所有被引用的其他表上还会自动加上的ACCESS SHARE锁)。通常情况下,所有会修改表数据的命令都会请求表的ROW EXCLUSIVE锁。 - -- **SHARE UPDATE EXCLUSIVE** - - 这个模式保护一个表的模式不被并发修改,以及禁止在目标表上执行垃圾回收命令(VACUUM )。 - - VACUUM(不带FULL选项),ANALYZE,CREATE INDEX CONCURRENTLY命令会自动请求这样的锁。 - -- **SHARE** - - SHARE锁允许并发的查询,但是禁止对表进行修改。 - - CREATE INDEX(不带CONCURRENTLY选项)语句会自动请求这种锁。 - -- **SHARE ROW EXCLUSIVE** - - SHARE ROW EXCLUSIVE锁禁止对表进行任何的并发修改,而且是独占锁,因此一个会话中只能获取一次。 - - 任何SQL语句都不会自动请求这个锁模式。 - -- **EXCLUSIVE** - - EXCLUSIVE锁允许对目标表进行并发查询,但是禁止任何其他操作。 - - 这个模式只允许并发加ACCESS SHARE锁,也就是说,只有对表的读动作可以和持有这个锁模式的事务并发执行。 - - 任何SQL语句都不会在用户表上自动请求这个锁模式。然而在某些操作的时候,会在某些系统表上请求它。 - -- **ACCESS EXCLUSIVE** - - 这个模式保证其所有者(事务)是可以访问该表的唯一事务。 - - ALTER TABLE,DROP TABLE,TRUNCATE,REINDEX,CLUSTER,VACUUM FULL命令会自动请求这种锁。 - - 在LOCK TABLE命令没有明确声明需要的锁模式时,它是缺省锁模式。 - -- **NOWAIT** - - 声明LOCK TABLE不去等待任何冲突的锁释放,如果无法立即获取该锁,该命令退出并且发出一个错误信息。 - - 在不指定NOWAIT的情况下获取表级锁时,如果有其他互斥锁存在的话,则等待其他锁的释放。 - - -## 示例 - -``` ---向一个外键表上插入数据时,在有主键的表上使用SHARE锁。 -postgres=# START TRANSACTION; - -postgres=# LOCK TABLE tpcds.reason IN SHARE MODE; - -postgres=# SELECT r_reason_desc FROM tpcds.reason WHERE r_reason_sk=5; -r_reason_desc ------------ - Parts missing -(1 row) - -postgres=# COMMIT; - ---在执行删除操作时对一个有主键的表进行 SHARE ROW EXCLUSIVE 锁。 -postgres=# CREATE TABLE tpcds.reason_t1 AS TABLE tpcds.reason; - -postgres=# START TRANSACTION; - -postgres=# LOCK TABLE tpcds.reason_t1 IN SHARE ROW EXCLUSIVE MODE; - -postgres=# DELETE FROM tpcds.reason_t1 WHERE r_reason_desc IN(SELECT r_reason_desc FROM tpcds.reason_t1 WHERE r_reason_sk < 6 ); - -postgres=# DELETE FROM tpcds.reason_t1 WHERE r_reason_sk = 7; - -postgres=# COMMIT; - ---删除表tpcds.reason_t1。 -postgres=# DROP TABLE tpcds.reason_t1; -``` diff --git a/content/zh/docs/Developerguide/LOCKS.md b/content/zh/docs/Developerguide/LOCKS.md new file mode 100644 index 0000000000000000000000000000000000000000..4b36ecc83168959a53461c6853ec21b7b7282cc6 --- /dev/null +++ b/content/zh/docs/Developerguide/LOCKS.md @@ -0,0 +1,138 @@ +# 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

+

对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是零;如果这个对象不是普通数据库对象,则为NULL。

+

virtualtransaction

+

text

+

持有此锁或者在等待此锁的事务的虚拟ID。

+

pid

+

bigint

+

持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。

+

sessionid

+

bigint

+

持有或者等待这个锁的会话ID。如果锁是被一个预备事务持有的,则为NULL。

+

mode

+

text

+

这个线程持有的或者是期望的锁模式。

+

granted

+

boolean

+
  • 如果锁是持有锁,则为TRUE。
  • 如果锁是等待锁,则为FALSE。
+

fastpath

+

boolean

+

如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。

+
+ diff --git "a/content/zh/docs/Developerguide/Linux\344\270\213\351\205\215\347\275\256\346\225\260\346\215\256\346\272\220.md" "b/content/zh/docs/Developerguide/Linux\344\270\213\351\205\215\347\275\256\346\225\260\346\215\256\346\272\220.md" new file mode 100644 index 0000000000000000000000000000000000000000..d34b8c827a0da37b2244936028d74354264e9cdf --- /dev/null +++ "b/content/zh/docs/Developerguide/Linux\344\270\213\351\205\215\347\275\256\346\225\260\346\215\256\346\272\220.md" @@ -0,0 +1,446 @@ +# Linux下配置数据源 + +将openGauss提供的ODBC DRIVER(psqlodbcw.so)配置到数据源中便可使用。配置数据源需要配置“odbc.ini”和“odbcinst.ini”两个文件(在编译安装unixODBC过程中生成且默认放在“/usr/local/etc”目录下),并在服务器端进行配置。 + +## 操作步骤 + +1. 获取unixODBC源码包。 + + 获取参考地址:http://sourceforge.net/projects/unixodbc/files/unixODBC/2.3.0/unixODBC-2.3.0.tar.gz/download + +2. 安装unixODBC。如果机器上已经安装了其他版本的unixODBC,可以直接覆盖安装。 + + 目前不支持unixODBC-2.2.1版本。以unixODBC-2.3.0版本为例,在客户端执行如下命令安装unixODBC。默认安装到“/usr/local”目录下,生成数据源文件到 “/usr/local/etc”目录下,库文件生成在“/usr/local/lib”目录。 + + ``` + tar zxvf unixODBC-2.3.0.tar.gz + cd unixODBC-2.3.0 + #修改configure文件(如果不存在,那么请修改configure.ac),找到LIB_VERSION + #将它的值修改为"1:0:0",这样将编译出*.so.1的动态库,与psqlodbcw.so的依赖关系相同。 + vim configure + + ./configure --enable-gui=no #如果要在鲲鹏服务器上编译,请追加一个configure参数: --build=aarch64-unknown-linux-gnu + make + #安装可能需要root权限 + make install + ``` + +3. 替换客户端openGauss驱动程序。 + 1. 将openGauss-1.0.0-ODBC.tar.gz解压到“/usr/local/lib”目录下。解压会得到“psqlodbcw.la”和“psqlodbcw.so”两个文件。 + 2. 将openGauss-1.0.0-ODBC.tar.gz解压后lib目录中的库拷贝到“/usr/local/lib”目录下。 + +4. 配置数据源。 + 1. 配置ODBC驱动文件。 + + 在“/usr/local/etc/odbcinst.ini”文件中追加以下内容。 + + ``` + [GaussMPP] + Driver64=/usr/local/lib/psqlodbcw.so + setup=/usr/local/lib/psqlodbcw.so + ``` + + odbcinst.ini文件中的配置参数说明如[表1](#zh-cn_topic_0237120407_zh-cn_topic_0059778464_td564f21e7c8e458bbd741b09896f5d91)所示。 + + **表 1** odbcinst.ini文件配置参数 + + + + + + + + + + + + + + + + + + + + +

参数

+

描述

+

示例

+

[DriverName]

+

驱动器名称,对应数据源DSN中的驱动名。

+

[DRIVER_N]

+

Driver64

+

驱动动态库的路径。

+

Driver64=/xxx/odbc/lib/psqlodbcw.so

+

setup

+

驱动安装路径,与Driver64中动态库的路径一致。

+

setup=/xxx/odbc/lib/psqlodbcw.so

+
+ + 2. 配置数据源文件。 + + 在“/usr/local/etc/odbc.ini ”文件中追加以下内容。 + + ``` + [MPPODBC] + Driver=GaussMPP + Servername=10.10.0.13(数据库Server IP) + Database=postgres (数据库名) + Username=omm (数据库用户名) + Password= (数据库用户密码) + Port=8000 (数据库监听端口) + Sslmode=allow + ``` + + odbc.ini文件配置参数说明如[表2](#zh-cn_topic_0237120407_zh-cn_topic_0059778464_t55845a6555f2454297b64ce47ad3d648)所示。 + + **表 2** odbc.ini文件配置参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

描述

+

示例

+

[DSN]

+

数据源的名称。

+

[MPPODBC]

+

Driver

+

驱动名,对应odbcinst.ini中的DriverName。

+

Driver=DRIVER_N

+

Servername

+

服务器的IP地址。

+

Servername=10.145.130.26

+

Database

+

要连接的数据库的名称。

+

Database=postgres

+

Username

+

数据库用户名称。

+

Username=omm

+

Password

+

数据库用户密码。

+

Password=

+
说明:

ODBC驱动本身已经对内存密码进行过清理,以保证用户密码在连接后不会再在内存中保留。

+

但是如果配置了此参数,由于UnixODBC对数据源文件等进行缓存,可能导致密码长期保留在内存中。

+

推荐在应用程序连接时,将密码传递给相应API,而非写在数据源配置文件中。同时连接成功后,应当及时清理保存密码的内存段。

+
+

Port

+

服务器的端口号。

+

Port=8000

+

Sslmode

+

开启SSL模式

+

Sslmode=allow

+

UseServerSidePrepare

+

是否开启数据库端扩展查询协议。

+

可选值0或1,默认为1,表示打开扩展查询协议。

+

UseServerSidePrepare=1

+

UseBatchProtocol

+

是否开启批量查询协议(打开可提高DML性能);可选值0或者1,默认为1。

+

当此值为0时,不使用批量查询协议(主要用于与早期数据库版本通信兼容)。

+

当此值为1,并且数据库support_batch_bind参数存在且为on时,将打开批量查询协议。

+

UseBatchProtocol=1

+

ConnectionExtraInfo

+

GUC参数connection_info(参见connection_info)中显示驱动部署路径和进程属主用户的开关。

+

ConnectionExtraInfo=1

+
说明:

默认值为0。当设置为1时,ODBC驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在connection_info参数(参见connection_info)里;同时可以在PG_STAT_ACTIVITY中查询到。

+
+
+ + 其中关于Sslmode的选项的允许值,具体信息见下表: + + **表 3** sslmode的可选项及其描述 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

sslmode

+

是否会启用SSL加密

+

描述

+

disable

+

+

不使用SSL安全连接。

+

allow

+

可能

+

如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。

+

prefer

+

可能

+

如果数据库支持,那么建议使用SSL安全加密连接,但不验证数据库服务器的真实性。

+

require

+

+

必须使用SSL安全连接,但是只做了数据加密,而并不验证数据库服务器的真实性。

+

verify-ca

+

+

必须使用SSL安全连接,并且验证数据库是否具有可信证书机构签发的证书。

+

verify-full

+

+

必须使用SSL安全连接,在verify-ca的验证范围之外,同时验证数据库所在主机的主机名是否与证书内容一致。openGauss不支持此模式。

+
+ +5. 生成SSL证书,具体请参见[证书生成](证书生成.md)。 +6. 替换SSL证书,具体请参见[证书替换](证书替换.md)。 +7. 配置数据库服务器。 + 1. 以操作系统用户omm登录数据库主节点。 + 2. 执行如下命令增加对外提供服务的网卡IP或者主机名(英文逗号分隔),其中NodeName为当前节点名称: + + ``` + gs_guc reload -N NodeName -I all -c "listen_addresses='localhost,192.168.0.100,10.11.12.13'" + ``` + + 在DR(Direct Routing,LVS的直接路由DR模式)模式中需要将虚拟IP地址(10.11.12.13)加入到服务器的监听地址列表中。 + + listen\_addresses也可以配置为“\*”或“0.0.0.0”,此配置下将监听所有网卡,但存在安全风险,不推荐用户使用,推荐用户按照需要配置IP或者主机名,打开监听。 + + 3. 执行如下命令在数据库主节点配置文件中增加一条认证规则。(这里假设客户端IP地址为10.11.12.13,即远程连接的机器的IP地址) + + ``` + gs_guc reload -N all -I all -h "host all jack 10.11.12.13/32 sha256" + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- -N all表示openGauss中的所有主机。 + >- -I all表示主机中的所有实例。 + >- -h表示指定需要在“pg\_hba.conf”增加的语句。 + >- all表示允许客户端连接到任意的数据库。 + >- jack表示连接数据库的用户。 + >- 10.11.12.13/_32_表示只允许IP地址为10.11.12.13的主机连接。在使用过程中,请根据用户的网络进行配置修改。32表示子网掩码为1的位数,即255.255.255.255 + >- sha256表示连接时jack用户的密码使用sha256算法加密。 + + 如果将ODBC客户端配置在和要连接的数据库主节点在同一台机器上,则可使用local trust认证方式,如下: + + ``` + local all all xxx.xxx.xxx.xxx/32 trust + ``` + + 如果将ODBC客户端配置在和要连接的数据库主节点在不同机器上,则需要使用sha256认证方式,如下: + + ``` + host all all xxx.xxx.xxx.xxx/32 sha256 + ``` + + 4. 重启openGauss。 + + ``` + gs_om -t stop + gs_om -t start + ``` + +8. 配置环境变量。 + + ``` + vim ~/.bashrc + ``` + + 在配置文件中追加以下内容。 + + ``` + export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH + export ODBCSYSINI=/usr/local/etc + export ODBCINI=/usr/local/etc/odbc.ini + ``` + +9. 执行如下命令使设置生效。 + + ``` + source ~/.bashrc + ``` + + +## 测试数据源配置 + +执行isql -v GaussODBC\(数据源名称\)命令。 + +- 如果显示如下信息,表明配置正确,连接成功。 + + ``` + +---------------------------------------+ + | Connected! | + | | + | sql-statement | + | help [tablename] | + | quit | + | | + +---------------------------------------+ + SQL> + ``` + +- 若显示ERROR信息,则表明配置错误。请检查上述配置是否正确。 + +## 常见问题处理 + +- \[UnixODBC\]\[Driver Manager\]Can't open lib 'xxx/xxx/psqlodbcw.so' : file not found. + + 此问题的可能原因: + + - odbcinst.ini文件中配置的路径不正确 + + 确认的方法:'ls'一下错误信息中的路径,以确保该psqlodbcw.so文件存在,同时具有执行权限。 + + - psqlodbcw.so的依赖库不存在,或者不在系统环境变量中 + + 确认的办法:ldd一下错误信息中的路径,如果是缺少libodbc.so.1等UnixODBC的库,那么按照“操作步骤”中的方法重新配置UnixODBC,并确保它的安装路径下的lib目录添加到了LD\_LIBRARY\_PATH中;如果是缺少其他库,请将ODBC驱动包中的lib目录添加到LD\_LIBRARY\_PATH中。 + + +- \[UnixODBC\]connect to server failed: no such file or directory + + 此问题可能的原因: + + - 配置了错误的/不可达的数据库地址,或者端口 + + 请检查数据源配置中的Servername及Port配置项。 + + - 服务器监听不正确 + + 如果确认Servername及Port配置正确,请根据“操作步骤”中数据库服务器的相关配置,确保数据库监听了合适的网卡及端口。 + + - 防火墙及网闸设备 + + 请确认防火墙设置,将数据库的通信端口添加到可信端口中。 + + 如果有网闸设备,请确认一下相关的设置。 + + +- \[unixODBC\]The password-stored method is not supported. + + 此问题可能原因: + + 数据源中未配置sslmode配置项。 + + 解决办法: + + 请配置该选项至allow或以上选项。此配置的更多信息,见[表3](#zh-cn_topic_0237120407_zh-cn_topic_0059778464_table22136585143846)。 + +- Server common name "xxxx" does not match host name "xxxxx" + + 此问题的原因: + + 使用了SSL加密的“verify-full”选项,驱动程序会验证证书中的主机名与实际部署数据库的主机名是否一致。 + + 解决办法: + + 碰到此问题可以使用“verify-ca”选项,不再校验主机名;或者重新生成一套与数据库所在主机名相同的CA证书。 + +- Driver's SQLAllocHandle on SQL\_HANDLE\_DBC failed + + 此问题的可能原因: + + 可执行文件(比如UnixODBC的isql,以下都以isql为例)与数据库驱动(psqlodbcw.so)依赖于不同的odbc的库版本:libodbc.so.1或者libodbc.so.2。此问题可以通过如下方式确认: + + ``` + ldd `which isql` | grep odbc + ldd psqlodbcw.so | grep odbc + ``` + + 这时,如果输出的libodbc.so最后的后缀数字不同或者指向不同的磁盘物理文件,那么基本就可以断定是此问题。isql与psqlodbcw.so都会要求加载libodbc.so,这时如果它们加载的是不同的物理文件,便会导致两套完全同名的函数列表,同时出现在同一个可见域里(UnixODBC的libodbc.so.\*的函数导出列表完全一致),产生冲突,无法加载数据库驱动。 + + 解决办法: + + 确定一个要使用的UnixODBC,然后卸载另外一个(比如卸载库版本号为.so.2的UnixODBC),然后将剩下的.so.1的库,新建一个同名但是后缀为.so.2的软链接,便可解决此问题。 + +- FATAL: Forbid remote connection with trust method! + + 由于安全原因,数据库主节点禁止openGauss内部其他节点无认证接入。 + + 如果要在openGauss内部访问数据库主节点,请将ODBC程序部署在数据库主节点所在机器,服务器地址使用"127.0.0.1"。建议业务系统单独部署在openGauss外部,否则可能会影响数据库运行性能。 + +- \[unixODBC\]\[Driver Manager\]Invalid attribute value + + 在使用SQL on other GaussDB功能时碰到此问题,有可能是unixODBC的版本并非推荐版本,建议通过“odbcinst --version”命令排查环境中的unixODBC版本。 + +- authentication method 10 not supported. + + 使用开源客户端碰到此问题,可能原因: + + 数据库中存储的口令校验只存储了SHA256格式哈希,而开源客户端只识别MD5校验,双方校验方法不匹配报错。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 数据库并不存储用户口令,只存储用户口令的哈希码。 + >- 数据库当用户更新用户口令或者新建用户时,会同时存储两种格式的哈希码,这时将兼容开源的认证协议。 + >- 但是当老版本升级到新版本时,由于哈希的不可逆性,所以数据库无法还原用户口令,进而生成新格式的哈希,所以仍然只保留了SHA256格式的哈希,导致仍然无法使用MD5做口令认证。 + + 要解决该问题,可以更新用户口令(参见[ALTER USER](ALTER-USER.md));或者新建一个用户(参见[CREATE USER](CREATE-USER.md)),赋于同等权限,使用新用户连接数据库。 + +- unsupported frontend protocol 3.51: server supports 1.0 to 3.0 + + 目标数据库版本过低,或者目标数据库为开源数据库。请使用对应版本的数据库驱动连接目标数据库。 + +- FATAL: GSS authentication method is not allowed because XXXX user password is not disabled. + + 目标数据库主节点的pg\_hba.conf里配置了当前客户端IP使用"gss"方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到"sha256"后再试。配置方法见[7](#zh-cn_topic_0237120407_zh-cn_topic_0059778464_l4c0173b8af93447e91aba24005e368e5)。 + + diff --git a/content/zh/docs/Developerguide/MEMORY_NODE_DETAIL.md b/content/zh/docs/Developerguide/MEMORY_NODE_DETAIL.md new file mode 100644 index 0000000000000000000000000000000000000000..37a1d7a8faf4b02285fa35d29058c441c496d05b --- /dev/null +++ b/content/zh/docs/Developerguide/MEMORY_NODE_DETAIL.md @@ -0,0 +1,40 @@ +# MEMORY\_NODE\_DETAIL + +显示某个数据库节点内存使用情况。 + +**表 1** MEMORY\_NODE\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

节点名称。

+

memorytype

+

text

+
内存的名称。
  • max_process_memory:openGauss实例所占用的内存大小。
  • process_used_memory:进程所使用的内存大小。
  • max_dynamic_memory:最大动态内存。
  • dynamic_used_memory:已使用的动态内存。
  • dynamic_peak_memory:内存的动态峰值。
  • dynamic_used_shrctx:最大动态共享内存上下文。
  • dynamic_peak_shrctx:共享内存上下文的动态峰值。
  • max_shared_memory:最大共享内存。
  • shared_used_memory:已使用的共享内存。
  • max_cstore_memory:列存所允许使用的最大内存。
  • cstore_used_memory:列存已使用的内存大小。
  • max_sctpcomm_memory:sctp通信所允许使用的最大内存。
  • sctpcomm_used_memory:sctp通信已使用的内存大小。
  • sctpcomm_peak_memory:sctp通信的内存峰值。
  • other_used_memory:其他已使用的内存大小。
  • gpu_max_dynamic_memory:GPU最大动态内存。
  • gpu_dynamic_used_memory:GPU已使用的动态内存。
  • gpu_dynamic_peak_memory:GPU内存的动态峰值。
  • pooler_conn_memory:链接池申请内存计数。
  • pooler_freeconn_memory:链接池空闲连接的内存计数。
  • storage_compress_memory:存储模块压缩使用的内存大小。
  • udf_reserved_memory:UDF预留的内存大小。
+
+

memorymbytes

+

integer

+

内存使用的大小,单位为MB。

+
+ diff --git a/content/zh/docs/Developerguide/MERGE-INTO.md b/content/zh/docs/Developerguide/MERGE-INTO.md index 5ab5278bd3801f727d19a467b6a9c4c9d2ba4554..ae339b47907ffb7bce33655eedd551ba2f60837e 100644 --- a/content/zh/docs/Developerguide/MERGE-INTO.md +++ b/content/zh/docs/Developerguide/MERGE-INTO.md @@ -32,7 +32,7 @@ ON ( condition ) - **INTO子句** - 指定正在更新或插入的目标表。目标表为复制表时,暂不支持目标表中某列默认值为volatile函数(如自增列)。 + 指定正在更新或插入的目标表。目标表为复制表时,暂不支持目标表中某列默认值为volatile函数(如自增列),enable\_stream\_operator=off时目标表需要包含主键或带有unique not null。 - **talbe\_name** diff --git a/content/zh/docs/Developerguide/MOVE.md b/content/zh/docs/Developerguide/MOVE.md index c7c59c9498eaab3610ad9f8daedc5fc0912013c9..53e5b18030520e3017db88495778722ff83250f6 100644 --- a/content/zh/docs/Developerguide/MOVE.md +++ b/content/zh/docs/Developerguide/MOVE.md @@ -2,7 +2,7 @@ ## 功能描述 -MOVE在不检索数据的情况下重新定位一个游标。MOVE的作用类似于[FETCH](FETCH.md#ZH-CN_TOPIC_0242370629)命令,但只是重定位游标而不返回行。 +MOVE在不检索数据的情况下重新定位一个游标。MOVE的作用类似于[FETCH](FETCH.md)命令,但只是重定位游标而不返回行。 ## 注意事项 @@ -71,5 +71,5 @@ postgres=# END; ## 相关链接 -[CLOSE](CLOSE.md#ZH-CN_TOPIC_0242370555),[FETCH](FETCH.md#ZH-CN_TOPIC_0242370629) +[CLOSE](CLOSE.md),[FETCH](FETCH.md) diff --git a/content/zh/docs/Developerguide/Memory.md b/content/zh/docs/Developerguide/Memory.md new file mode 100644 index 0000000000000000000000000000000000000000..364a39f44b2cea5f710ff12ab93ce733caf49ddb --- /dev/null +++ b/content/zh/docs/Developerguide/Memory.md @@ -0,0 +1,11 @@ +# Memory + +- **[MEMORY\_NODE\_DETAIL](MEMORY_NODE_DETAIL.md)** + +- **[GLOBAL\_MEMORY\_NODE\_DETAIL](GLOBAL_MEMORY_NODE_DETAIL.md)** + +- **[SHARED\_MEMORY\_DETAIL](SHARED_MEMORY_DETAIL.md)** + +- **[GLOBAL\_SHARED\_MEMORY\_DETAIL](GLOBAL_SHARED_MEMORY_DETAIL.md)** + + diff --git a/content/zh/docs/Developerguide/ODBC.md b/content/zh/docs/Developerguide/ODBC.md index 552f999ba87326b877f8a8b02fb2f355f19acb65..874d8ccdf84e1c625baefd5fe3e837805fbc95ef 100644 --- a/content/zh/docs/Developerguide/ODBC.md +++ b/content/zh/docs/Developerguide/ODBC.md @@ -46,6 +46,6 @@ ODBC接口是一套提供给用户的API函数,本节将对部分常用接口 - **[SQLSetStmtAttr](SQLSetStmtAttr.md)** -- **[示例](示例.md)** +- **[示例](示例-2.md)** diff --git "a/content/zh/docs/Developerguide/ODBC\345\214\205\345\217\212\344\276\235\350\265\226\347\232\204\345\272\223\345\222\214\345\244\264\346\226\207\344\273\266.md" "b/content/zh/docs/Developerguide/ODBC\345\214\205\345\217\212\344\276\235\350\265\226\347\232\204\345\272\223\345\222\214\345\244\264\346\226\207\344\273\266.md" new file mode 100644 index 0000000000000000000000000000000000000000..6a7174f62bae280f6a9ebe5300f4f9cb725250ab --- /dev/null +++ "b/content/zh/docs/Developerguide/ODBC\345\214\205\345\217\212\344\276\235\350\265\226\347\232\204\345\272\223\345\222\214\345\244\264\346\226\207\344\273\266.md" @@ -0,0 +1,6 @@ +# ODBC包及依赖的库和头文件 + +## Linux下的ODBC包 + +从发布包中获取,包名为openGauss-1.0.0-ODBC.tar.gz。Linux环境下,开发应用程序要用到unixODBC提供的头文件(sql.h、sqlext.h等)和库libodbc.so。这些头文件和库可从unixODBC-2.3.0的安装包中获得。 + diff --git "a/content/zh/docs/Developerguide/ODBC\346\216\245\345\217\243\345\217\202\350\200\203.md" "b/content/zh/docs/Developerguide/ODBC\346\216\245\345\217\243\345\217\202\350\200\203.md" new file mode 100644 index 0000000000000000000000000000000000000000..14d6a96e88fa7ba2c9cd84a47b7b8872acce1d9a --- /dev/null +++ "b/content/zh/docs/Developerguide/ODBC\346\216\245\345\217\243\345\217\202\350\200\203.md" @@ -0,0 +1,4 @@ +# ODBC接口参考 + +请参见[ODBC](ODBC.md)。 + diff --git a/content/zh/docs/Developerguide/OPERATOR_HISTORY.md b/content/zh/docs/Developerguide/OPERATOR_HISTORY.md new file mode 100644 index 0000000000000000000000000000000000000000..9cfb048ef94413cb93ace682e971721812cb2f49 --- /dev/null +++ b/content/zh/docs/Developerguide/OPERATOR_HISTORY.md @@ -0,0 +1,4 @@ +# OPERATOR\_HISTORY + +OPERATOR\_HISTORY视图显示的是当前用户数据库主节点上执行作业结束后的算子的相关记录。记录的数据同[表1](GS_WLM_OPERATOR_INFO.md#zh-cn_topic_0237122263_zh-cn_topic_0111176227_table85181143511)。 + diff --git a/content/zh/docs/Developerguide/OPERATOR_HISTORY_TABLE.md b/content/zh/docs/Developerguide/OPERATOR_HISTORY_TABLE.md new file mode 100644 index 0000000000000000000000000000000000000000..cee6bb81186e0ae18ca12f6e4215f4c33cb24c20 --- /dev/null +++ b/content/zh/docs/Developerguide/OPERATOR_HISTORY_TABLE.md @@ -0,0 +1,173 @@ +# OPERATOR\_HISTORY\_TABLE + +OPERATOR\_HISTORY\_TABLE系统表显示执行作业结束后的算子相关的记录。此数据是从内核中转储到系统表中的数据。 + +**表 1** OPERATOR\_HISTORY\_TABLE的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

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)。

+

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
+
+
+ diff --git a/content/zh/docs/Developerguide/OPERATOR_RUNTIME.md b/content/zh/docs/Developerguide/OPERATOR_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..66ddcbbd154c43959770cf7813b90fa0a55eaff9 --- /dev/null +++ b/content/zh/docs/Developerguide/OPERATOR_RUNTIME.md @@ -0,0 +1,180 @@ +# OPERATOR\_RUNTIME + +OPERATOR\_RUNTIME视图显示当前用户正在执行的作业的算子相关信息。 + +**表 1** 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
+
+
+ diff --git a/content/zh/docs/Developerguide/OS.md b/content/zh/docs/Developerguide/OS.md new file mode 100644 index 0000000000000000000000000000000000000000..4cf29ed06a7f09472a3c6f5eb0f50e1d38b64a9e --- /dev/null +++ b/content/zh/docs/Developerguide/OS.md @@ -0,0 +1,11 @@ +# OS + +- **[OS\_RUNTIME](OS_RUNTIME.md)** + +- **[GLOBAL\_OS\_RUNTIME](GLOBAL_OS_RUNTIME.md)** + +- **[OS\_THREADS](OS_THREADS.md)** + +- **[GLOBAL\_OS\_THREADS](GLOBAL_OS_THREADS.md)** + + diff --git a/content/zh/docs/Developerguide/OS_RUNTIME.md b/content/zh/docs/Developerguide/OS_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..92957e18bdd6906cb7da61586fac2d2789b3e9e3 --- /dev/null +++ b/content/zh/docs/Developerguide/OS_RUNTIME.md @@ -0,0 +1,53 @@ +# OS\_RUNTIME + +显示当前操作系统运行的状态信息。 + +**表 1** OS\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

id

+

integer

+

编号。

+

name

+

text

+

操作系统运行状态名称。

+

value

+

numeric

+

操作系统运行状态值。

+

comments

+

text

+

操作系统运行状态注释。

+

cumulative

+

boolean

+

操作系统运行状态的值是否为累加值。

+
+ diff --git a/content/zh/docs/Developerguide/OS_THREADS.md b/content/zh/docs/Developerguide/OS_THREADS.md new file mode 100644 index 0000000000000000000000000000000000000000..2b456dba142caad9145263ccfccba6b94979127c --- /dev/null +++ b/content/zh/docs/Developerguide/OS_THREADS.md @@ -0,0 +1,53 @@ +# OS\_THREADS + +提供当前节点下所有线程的状态信息。 + +**表 1** OS\_THREADS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

pid

+

bigint

+

数据库进程中正在运行的线程号。

+

lwpid

+

integer

+

与pid对应的轻量级线程号。

+

thread_name

+

text

+

与pid对应的线程名称。

+

creation_time

+

timestamp with time zone

+

与pid对应的线程创建的时间。

+
+ diff --git a/content/zh/docs/Developerguide/Object.md b/content/zh/docs/Developerguide/Object.md new file mode 100644 index 0000000000000000000000000000000000000000..feb0719eeb6a46e5b68434b69ba6a9c7f2e18ba1 --- /dev/null +++ b/content/zh/docs/Developerguide/Object.md @@ -0,0 +1,87 @@ +# Object + +- **[STAT\_USER\_TABLES](STAT_USER_TABLES.md)** + +- **[SUMMARY\_STAT\_USER\_TABLES](SUMMARY_STAT_USER_TABLES.md)** + +- **[GLOBAL\_STAT\_USER\_TABLES](GLOBAL_STAT_USER_TABLES.md)** + +- **[STAT\_USER\_INDEXES](STAT_USER_INDEXES.md)** + +- **[SUMMARY\_STAT\_USER\_INDEXES](SUMMARY_STAT_USER_INDEXES.md)** + +- **[GLOBAL\_STAT\_USER\_INDEXES](GLOBAL_STAT_USER_INDEXES.md)** + +- **[STAT\_SYS\_TABLES](STAT_SYS_TABLES.md)** + +- **[SUMMARY\_STAT\_SYS\_TABLES](SUMMARY_STAT_SYS_TABLES.md)** + +- **[GLOBAL\_STAT\_SYS\_TABLES](GLOBAL_STAT_SYS_TABLES.md)** + +- **[STAT\_SYS\_INDEXES](STAT_SYS_INDEXES.md)** + +- **[SUMMARY\_STAT\_SYS\_INDEXES](SUMMARY_STAT_SYS_INDEXES.md)** + +- **[GLOBAL\_STAT\_SYS\_INDEXES](GLOBAL_STAT_SYS_INDEXES.md)** + +- **[STAT\_ALL\_TABLES](STAT_ALL_TABLES.md)** + +- **[SUMMARY\_STAT\_ALL\_TABLES](SUMMARY_STAT_ALL_TABLES.md)** + +- **[GLOBAL\_STAT\_ALL\_TABLES](GLOBAL_STAT_ALL_TABLES.md)** + +- **[STAT\_ALL\_INDEXES](STAT_ALL_INDEXES.md)** + +- **[SUMMARY\_STAT\_ALL\_INDEXES](SUMMARY_STAT_ALL_INDEXES.md)** + +- **[GLOBAL\_STAT\_ALL\_INDEXES](GLOBAL_STAT_ALL_INDEXES.md)** + +- **[STAT\_DATABASE](STAT_DATABASE.md)** + +- **[SUMMARY\_STAT\_DATABASE](SUMMARY_STAT_DATABASE.md)** + +- **[GLOBAL\_STAT\_DATABASE](GLOBAL_STAT_DATABASE.md)** + +- **[STAT\_DATABASE\_CONFLICTS](STAT_DATABASE_CONFLICTS.md)** + +- **[SUMMARY\_STAT\_DATABASE\_CONFLICTS](SUMMARY_STAT_DATABASE_CONFLICTS.md)** + +- **[GLOBAL\_STAT\_DATABASE\_CONFLICTS](GLOBAL_STAT_DATABASE_CONFLICTS.md)** + +- **[STAT\_XACT\_ALL\_TABLES](STAT_XACT_ALL_TABLES.md)** + +- **[SUMMARY\_STAT\_XACT\_ALL\_TABLES](SUMMARY_STAT_XACT_ALL_TABLES.md)** + +- **[GLOBAL\_STAT\_XACT\_ALL\_TABLES](GLOBAL_STAT_XACT_ALL_TABLES.md)** + +- **[STAT\_XACT\_SYS\_TABLES](STAT_XACT_SYS_TABLES.md)** + +- **[SUMMARY\_STAT\_XACT\_SYS\_TABLES](SUMMARY_STAT_XACT_SYS_TABLES.md)** + +- **[GLOBAL\_STAT\_XACT\_SYS\_TABLES](GLOBAL_STAT_XACT_SYS_TABLES.md)** + +- **[STAT\_XACT\_USER\_TABLES](STAT_XACT_USER_TABLES.md)** + +- **[SUMMARY\_STAT\_XACT\_USER\_TABLES](SUMMARY_STAT_XACT_USER_TABLES.md)** + +- **[GLOBAL\_STAT\_XACT\_USER\_TABLES](GLOBAL_STAT_XACT_USER_TABLES.md)** + +- **[STAT\_XACT\_USER\_FUNCTIONS](STAT_XACT_USER_FUNCTIONS.md)** + +- **[SUMMARY\_STAT\_XACT\_USER\_FUNCTIONS](SUMMARY_STAT_XACT_USER_FUNCTIONS.md)** + +- **[GLOBAL\_STAT\_XACT\_USER\_FUNCTIONS](GLOBAL_STAT_XACT_USER_FUNCTIONS.md)** + +- **[STAT\_BAD\_BLOCK](STAT_BAD_BLOCK.md)** + +- **[SUMMARY\_STAT\_BAD\_BLOCK](SUMMARY_STAT_BAD_BLOCK.md)** + +- **[GLOBAL\_STAT\_BAD\_BLOCK](GLOBAL_STAT_BAD_BLOCK.md)** + +- **[STAT\_USER\_FUNCTIONS](STAT_USER_FUNCTIONS.md)** + +- **[SUMMARY\_STAT\_USER\_FUNCTIONS](SUMMARY_STAT_USER_FUNCTIONS.md)** + +- **[GLOBAL\_STAT\_USER\_FUNCTIONS](GLOBAL_STAT_USER_FUNCTIONS.md)** + + diff --git a/content/zh/docs/Developerguide/Operator.md b/content/zh/docs/Developerguide/Operator.md new file mode 100644 index 0000000000000000000000000000000000000000..4ee33c1c8317eca066c82b93e285a95476be0633 --- /dev/null +++ b/content/zh/docs/Developerguide/Operator.md @@ -0,0 +1,15 @@ +# Operator + +- **[OPERATOR\_HISTORY\_TABLE](OPERATOR_HISTORY_TABLE.md)** + +- **[OPERATOR\_HISTORY](OPERATOR_HISTORY.md)** + +- **[OPERATOR\_RUNTIME](OPERATOR_RUNTIME.md)** + +- **[GLOBAL\_OPERATOR\_HISTORY](GLOBAL_OPERATOR_HISTORY.md)** + +- **[GLOBAL\_OPERATOR\_HISTORY\_TABLE](GLOBAL_OPERATOR_HISTORY_TABLE.md)** + +- **[GLOBAL\_OPERATOR\_RUNTIME](GLOBAL_OPERATOR_RUNTIME.md)** + + diff --git a/content/zh/docs/Developerguide/PG_AGGREGATE.md b/content/zh/docs/Developerguide/PG_AGGREGATE.md index f5c24dd1a65700948385cdce0a68fd8c7435605f..42f3ad7e6b7b19af52626d10dce209a43a8cfece 100644 --- a/content/zh/docs/Developerguide/PG_AGGREGATE.md +++ b/content/zh/docs/Developerguide/PG_AGGREGATE.md @@ -55,7 +55,7 @@ PG\_AGGREGATE系统表存储与聚集函数有关的信息。PG\_AGGREGATE里的

oid

PG_OPERATOR.oid

+

PG_OPERATOR.oid

关联排序操作符(如果没有则为零)。

oid

PG_TYPE.oid

+

PG_TYPE.oid

此聚集函数的内部转换(状态)数据的数据类型。

-

是否允许在一个这种类型的索引上openGauss

+

是否允许在一个这种类型的索引上集群。

ampredlocks

@@ -145,7 +145,7 @@ PG\_AM系统表存储有关索引访问方法的信息。系统支持的每种

oid

PG_TYPE.oid

+

PG_TYPE.oid

存储在索引里数据的类型,如果不是一个固定的类型则为0。

oid

PG_OPFAMILY.oid

+

PG_OPFAMILY.oid

这个项的操作符族。

oid

PG_TYPE.oid

+

PG_TYPE.oid

操作符的左输入类型。

oid

PG_TYPE.oid

+

PG_TYPE.oid

操作符的右输入类型。

oid

PG_OPERATOR.oid

+

PG_OPERATOR.oid

该操作符的OID。

oid

PG_AM.oid

+

PG_AM.oid

索引访问方式操作符族。

oid

PG_OPFAMILY.oid

+

PG_OPFAMILY.oid

如果是一个排序操作符,则为这个项排序所依据的btree操作符族;如果是一个搜索操作符,则为0。

oid

PG_OPFAMILY.oid

+

PG_OPFAMILY.oid

该项的操作符族。

oid

PG_TYPE.oid

+

PG_TYPE.oid

相关操作符的左输入数据类型。

oid

PG_TYPE.oid

+

PG_TYPE.oid

相关操作符的右输入数据类型。

oid

该字段不支持

+

该字段不支持。

roltempspace

diff --git a/content/zh/docs/Developerguide/PG_COLLATION.md b/content/zh/docs/Developerguide/PG_COLLATION.md index 72919528f07c4061ad83cc55e96592d8ab548d3b..bfb0569d9fe38cced4e7b1c845a620590e080913 100644 --- a/content/zh/docs/Developerguide/PG_COLLATION.md +++ b/content/zh/docs/Developerguide/PG_COLLATION.md @@ -37,7 +37,7 @@ PG\_COLLATION系统表描述可用的排序规则,本质上从一个SQL名称

oid

PG_NAMESPACE.oid

+

PG_NAMESPACE.oid

包含这个排序规则的名称空间的OID。

"char"

  • c = 检查约束
  • f = 外键约束
  • p = 主键约束
  • u = 唯一约束
  • t = 触发器约束
+
  • c = 检查约束
  • p = 主键约束
  • u = 唯一约束
  • t = 触发器约束

condeferrable

@@ -87,14 +87,15 @@ PG\_CONSTRAINT系统表存储表上的检查约束、主键、唯一约束和外

oid

如果是外键,则为参考的表;否则为0。

+

如果是外键,则为参考的表;否则为0。由于当前不支持外键,所以值恒为0。

confupdtype

"char"

外键更新动作代码。
  • a = 没动作
  • r = 限制
  • c = 级联
  • n =设置为null
  • d =设置为缺省
+
外键更新动作代码。
  • a = 没动作
  • r = 限制
  • c = 级联
  • n =设置为null
  • d =设置为缺省

    由于当前不支持外键,所以值为空。

    +

"char"

外键删除动作代码。
  • a = 没动作
  • r = 限制
  • c = 级联
  • n =设置为null
  • d =设置为缺省
+
外键删除动作代码。
  • a = 没动作
  • r = 限制
  • c = 级联
  • n =设置为null
  • d =设置为缺省

    由于当前不支持外键,所以值为空。

    +

"char"

外键匹配类型。
  • f = 全部
  • p = 部分
  • u = 简单(未指定)
+
外键匹配类型。
  • f = 全部
  • p = 部分
  • u = 简单(未指定)

    由于当前不支持外键,所以值为空。

    +

smallint[]

如果是一个外键,是参考的字段的列表。

+

如果是一个外键,是参考的字段的列表。由于当前不支持外键,所以值为空。

conpfeqop

oid[]

如果是一个外键,是做PK=FK比较的相等操作符ID的列表。

+

如果是一个外键,是做PK=FK比较的相等操作符ID的列表。由于当前不支持外键,所以值为空。

conppeqop

oid[]

如果是一个外键,是做PK=PK比较的相等操作符ID的列表。

+

如果是一个外键,是做PK=PK比较的相等操作符ID的列表。由于当前不支持外键,所以值为空。

conffeqop

oid[]

如果是一个外键,是做FK=FK比较的相等操作符ID的列表。

+

如果是一个外键,是做FK=FK比较的相等操作符ID的列表。由于当前不支持外键,所以值为空。

conexclop

diff --git a/content/zh/docs/Developerguide/PG_CONVERSION.md b/content/zh/docs/Developerguide/PG_CONVERSION.md index d6c6cea9ba466e8f20f5a1d570f82f87b981f33f..bfbbda8244fbd05669f6be286f5670ef89d1187b 100644 --- a/content/zh/docs/Developerguide/PG_CONVERSION.md +++ b/content/zh/docs/Developerguide/PG_CONVERSION.md @@ -37,7 +37,7 @@ PG\_CONVERSION系统表描述编码转换信息。

oid

PG_NAMESPACE.oid

+

PG_NAMESPACE.oid

包含这个转换的名称空间的OID。

oid

PG_CLASS.oid

+

PG_CLASS.oid

这个对象出现的系统表的OID。

oid

PG_TYPE.oid

+

PG_TYPE.oid

拥有这个枚举值的pg_type记录的OID。

name

PG_NAMESPACE.nspname

+

PG_NAMESPACE.nspname

包含表的模式名。

int2vector

PG_STATISTIC_EXT.stakey

+

PG_STATISTIC_EXT.stakey

统计信息扩展的多列信息。

oid

PG_FOREIGN_DATA_WRAPPER.oid

+

PG_FOREIGN_DATA_WRAPPER.oid

这个外部服务器的外部数据封装器的OID。

name

PG_NAMESPACE.nspname

+

PG_NAMESPACE.nspname

包含表和索引的模式名称。

name

PG_TABLESPACE.nspname

+

PG_TABLESPACE.nspname

包含索引的表空间名称。

integer

外键,关联pg_job表中的job_id。

+

关联pg_job表中的job_id。

what

diff --git a/content/zh/docs/Developerguide/PG_LARGEOBJECT.md b/content/zh/docs/Developerguide/PG_LARGEOBJECT.md index cb9df0f0b22abd03874e2cc31d45e9c8305c06f8..abedb2ceb3d0fa3f06f6bb970d9b6add3a5376fb 100644 --- a/content/zh/docs/Developerguide/PG_LARGEOBJECT.md +++ b/content/zh/docs/Developerguide/PG_LARGEOBJECT.md @@ -21,7 +21,7 @@ PG\_LARGEOBJECT系统表保存那些标记着“大对象”的数据。一个

oid

PG_LARGEOBJECT_METADATA.oid

+

PG_LARGEOBJECT_METADATA.oid

包含本页的大对象的标识符。

oid

PG_DATABASE.oid

+

PG_DATABASE.oid

被锁定对象所在数据库的OID。

  • 如果被锁定的对象是共享对象,则OID为0。
  • 如果是一个事务ID,则为NULL。
diff --git a/content/zh/docs/Developerguide/PG_NAMESPACE.md b/content/zh/docs/Developerguide/PG_NAMESPACE.md index 4819bca881becc7f67be39135cfdda916d8435e4..8e264257df5ca1c9ac20aa99ae6cc68f56984bc7 100644 --- a/content/zh/docs/Developerguide/PG_NAMESPACE.md +++ b/content/zh/docs/Developerguide/PG_NAMESPACE.md @@ -38,14 +38,14 @@ PG\_NAMESPACE系统表存储名称空间,即存储schema相关的信息。

bigint

数据库节点上创建此命名空间时的时间线。此字段为内部使用,仅在数据库节点上有效。

+

在数据库节点上创建此命名空间时的时间线。此字段为内部使用,仅在数据库节点上有效。

nspacl

aclitem[]

访问权限。具体请参见GRANTREVOKE

+

访问权限。

oid

PG_AM.oid

+

PG_AM.oid

操作符类所服务的索引访问方法。

oid

PG_NAMESPACE.oid

+

PG_NAMESPACE.oid

这个操作符类的名称空间。

oid

PG_OPFAMILY.oid

+

PG_OPFAMILY.oid

包含该操作符类的操作符族。

oid

PG_TYPE.oid

+

PG_TYPE.oid

操作符类索引的数据类型。

oid

PG_TYPE.oid

+

PG_TYPE.oid

索引数据的类型,如果和opcintype相同则为零。

oid

PG_NAMESPACE.oid

+

PG_NAMESPACE.oid

包含此操作符的名称空间的OID。

oid

PG_TYPE.oid

+

PG_TYPE.oid

左操作数的类型。

oid

PG_TYPE.oid

+

PG_TYPE.oid

右操作数的类型。

oid

PG_TYPE.oid

+

PG_TYPE.oid

结果类型。

oid

PG_OPERATOR.oid

+

PG_OPERATOR.oid

此操作符的交换符,如果存在的话。

oid

PG_OPERATOR.oid

+

PG_OPERATOR.oid

此操作符的反转器,如果存在的话。

oid

PG_AM.oid

+

PG_AM.oid

操作符族使用的索引方法。

oid

PG_NAMESPACE.oid

+

PG_NAMESPACE.oid

这个操作符的名称空间。

-定义一个操作符族的大多数信息不在它的PG\_OPFAMILY行里面,而是在相关的行[PG\_AMOP](PG_AMOP.md#ZH-CN_TOPIC_0242385795),[PG\_AMPROC](PG_AMPROC.md#ZH-CN_TOPIC_0242385796)和[PG\_OPCLASS](PG_OPCLASS.md#ZH-CN_TOPIC_0242385831)里。 +定义一个操作符族的大多数信息不在它的PG\_OPFAMILY行里面,而是在相关的行[PG\_AMOP](PG_AMOP.md),[PG\_AMPROC](PG_AMPROC.md)和[PG\_OPCLASS](PG_OPCLASS.md)里。 diff --git a/content/zh/docs/Developerguide/PG_PREPARED_XACTS.md b/content/zh/docs/Developerguide/PG_PREPARED_XACTS.md index 32c0afba76035764e09fa08300c2938913b53e84..190a00ec709ecb267d5b8e3353275d5992b95fc1 100644 --- a/content/zh/docs/Developerguide/PG_PREPARED_XACTS.md +++ b/content/zh/docs/Developerguide/PG_PREPARED_XACTS.md @@ -55,7 +55,7 @@ PG\_PREPARED\_XACTS视图显示当前准备好进行两阶段提交的事务的

name

PG_DATABASE.datname

+

PG_DATABASE.datname

执行该事务所在的数据库名。

aclitem[]

访问权限。具体请参见GRANTREVOKE

+

访问权限。

prodefaultargpos

@@ -228,7 +228,7 @@ PG\_PROC系统表存储函数或过程的信息。

Boolean

表示该函数是否支持重载,主要针对A风格的函数,默认值是false。

+

表示该函数是否支持重载,默认值是false。

oid

PG_TYPE.oid

+

PG_TYPE.oid

范围类型的OID。

oid

PG_TYPE.oid

+

PG_TYPE.oid

这个范围类型的元素类型(子类型)的OID。

oid

PG_COLLATION.oid

+

PG_COLLATION.oid

用于范围比较的排序规则的OID,如果没有则为零。

oid

PG_OPCLASS.oid

+

PG_OPCLASS.oid

用于范围比较的子类型的操作符类的OID。

name

表示资源池所在的逻辑openGauss的名称。

+

表示资源池所在的逻辑openGauss的名称。

is_foreign

diff --git a/content/zh/docs/Developerguide/PG_ROLES.md b/content/zh/docs/Developerguide/PG_ROLES.md index 30ebb6627a0a07fe5f17970197e4f1002ca6feb7..495e0f5e669b4ac4a4fdb0873324bf1e08a9d516 100644 --- a/content/zh/docs/Developerguide/PG_ROLES.md +++ b/content/zh/docs/Developerguide/PG_ROLES.md @@ -1,6 +1,6 @@ # PG\_ROLES -PG\_ROLES视图提供访问数据库角色的相关信息。 +PG\_ROLES视图提供访问数据库角色的相关信息,默认只有初始化用户和具有sysadmin属性的用户可以查看,其他用户需要赋权后才可以查看。 **表 1** PG\_ROLES字段 @@ -228,7 +228,7 @@ PG\_ROLES视图提供访问数据库角色的相关信息。

-

该字段不支持。

+

该字段不支持。

oid

PG_NAMESPACE.oid

+

PG_NAMESPACE.oid

这个对象的名称空间的OID,如果适用;否则为NULL。

text

PG_SECLABEL.provider

+

PG_SECLABEL.provider

与这个标签相关的标签提供者。

text

PG_SECLABEL.label

+

PG_SECLABEL.label

适用于这个对象的安全标签。

integer

在作业运行时,作业io峰值中,数据库节点的最小值。

+

在作业运行时,作业io峰值中,数据库节点最小值。

maxpeakiops

@@ -75,7 +75,7 @@ PG\_SESSION\_IOSTAT视图显示当前用户执行作业正在运行时的IO负

text

该字段不支持

+

该字段不支持。

bool

该字段不支持

+

该字段不支持。

node_group

text

该字段不支持

+

该字段不支持。

oid

PG_DATABASE.oid

+

PG_DATABASE.oid

依赖对象所在的数据库的OID ,如果是共享对象,则为零。

-

用户定义C函数库文件路径。

+

用户定义函数库文件路径。

bigint

此表缓存命中数。

+

该表缓存命中数。

idx_blks_read

@@ -66,28 +66,28 @@ PG\_STATIO\_ALL\_TABLES视图将包含当前数据库中每个表(包括TOAST

bigint

此表的TOAST表读取的磁盘块数(如果存在)。

+

该表的TOAST表读取的磁盘块数(如果存在)。

toast_blks_hit

bigint

此表的TOAST表命中缓冲区数(如果存在)。

+

该表的TOAST表命中缓冲区数(如果存在)。

tidx_blks_read

bigint

此表的TOAST表索引读取的磁盘块数(如果存在)。

+

该表的TOAST表索引读取的磁盘块数(如果存在)。

tidx_blks_hit

bigint

此表的TOAST表索引命中缓冲区数(如果存在)。

+

该表的TOAST表索引命中缓冲区数(如果存在)。

bigint

此表缓存命中数。

+

该表缓存命中数。

idx_blks_read

@@ -66,28 +66,28 @@ PG\_STATIO\_SYS\_TABLES视图显示命名空间中所有系统表的IO状态信

bigint

此表的TOAST表读取的磁盘块数(如果存在)。

+

该表的TOAST表读取的磁盘块数(如果存在)。

toast_blks_hit

bigint

此表的TOAST表命中缓冲区数(如果存在)。

+

该表的TOAST表命中缓冲区数(如果存在)。

tidx_blks_read

bigint

此表的TOAST表索引读取的磁盘块数(如果存在)。

+

该表的TOAST表索引读取的磁盘块数(如果存在)。

tidx_blks_hit

bigint

此表的TOAST表索引命中缓冲区数(如果存在)。

+

该表的TOAST表索引命中缓冲区数(如果存在)。

bigint

此表缓存命中数。

+

该表缓存命中数。

idx_blks_read

@@ -66,28 +66,28 @@ PG\_STATIO\_USER\_TABLES视图显示命名空间中所有用户关系表的IO状

bigint

此表的TOAST表读取的磁盘块数(如果存在)。

+

该表的TOAST表读取的磁盘块数(如果存在)。

toast_blks_hit

bigint

此表的TOAST表命中缓冲区数(如果存在)。

+

该表的TOAST表命中缓冲区数(如果存在)。

tidx_blks_read

bigint

此表的TOAST表索引读取的磁盘块数(如果存在)。

+

该表的TOAST表索引读取的磁盘块数(如果存在)。

tidx_blks_hit

bigint

此表的TOAST表索引命中缓冲区数(如果存在)。

+

该表的TOAST表索引命中缓冲区数(如果存在)。

real

标识全局统计信息中数据库节点上字段里唯一的非NULL数据值的数目。

+

标识全局统计信息中数据库节点上字段里唯一的非NULL数据值的数目。

  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。

real

标识全局统计信息中数据库节点上字段里唯一的非NULL数据值的数目。
  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。
+
标识全局统计信息中数据库节点上字段里唯一的非NULL数据值的数目。
  • 一个大于零的数值是独立数值的实际数目。
  • 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。
  • 零值表示独立数值的数目未知。

name

PG_NAMESPACE.nspname

+

PG_NAMESPACE.nspname

包含表的模式名。

name

PG_ATTRIBUTE.attname

+

PG_ATTRIBUTE.attname

字段的名称。

name

索引中模式名。

+

索引的模式名。

relname

diff --git a/content/zh/docs/Developerguide/PG_STAT_ALL_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_ALL_TABLES.md index c4ea196f7fc3760ad0d725717f920a6d87efd916..7be1cb07d45b090b1c1cb334cfea0b2d3b6fa587 100644 --- a/content/zh/docs/Developerguide/PG_STAT_ALL_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_ALL_TABLES.md @@ -24,7 +24,7 @@ PG\_STAT\_ALL\_TABLES视图将包含当前数据库中每个表的一行(包

name

此表的模式名。

+

该表的模式名。

relname

@@ -38,7 +38,7 @@ PG\_STAT\_ALL\_TABLES视图将包含当前数据库中每个表的一行(包

bigint

此表发起的顺序扫描数。

+

该表发起的顺序扫描数。

seq_tup_read

@@ -52,7 +52,7 @@ PG\_STAT\_ALL\_TABLES视图将包含当前数据库中每个表的一行(包

bigint

此表发起的索引扫描数。

+

该表发起的索引扫描数。

idx_tup_fetch

@@ -108,28 +108,28 @@ PG\_STAT\_ALL\_TABLES视图将包含当前数据库中每个表的一行(包

timestamp with time zone

最后一次手动清理此表的时间(不计算VACUUM FULL)。

+

最后一次手动清理该表的时间(不计算VACUUM FULL)。

last_autovacuum

timestamp with time zone

上次被autovacuum守护进程清理此表的时间。

+

上次被autovacuum守护进程清理该表的时间。

last_analyze

timestamp with time zone

上次手动分析此表的时间。

+

上次手动分析该表的时间。

last_autoanalyze

timestamp with time zone

上次被autovacuum守护进程分析此表的时间。

+

上次被autovacuum守护进程分析该表的时间。

vacuum_count

diff --git a/content/zh/docs/Developerguide/PG_STAT_DATABASE.md b/content/zh/docs/Developerguide/PG_STAT_DATABASE.md index f9dd7e052516c71c9d4aca92cc382c26735a204e..c668d03608fd9da98c99a6efba7df62e3cd24f77 100644 --- a/content/zh/docs/Developerguide/PG_STAT_DATABASE.md +++ b/content/zh/docs/Developerguide/PG_STAT_DATABASE.md @@ -101,7 +101,7 @@ PG\_STAT\_DATABASE视图将包含openGauss中每个数据库的数据库统计

bigint

由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见PG_STAT_DATABASE_CONFLICTS获取更多信息。

+

由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见PG_STAT_DATABASE_CONFLICTS获取更多信息。

temp_files

diff --git a/content/zh/docs/Developerguide/PG_STAT_SYS_INDEXES.md b/content/zh/docs/Developerguide/PG_STAT_SYS_INDEXES.md index 33e03b4238453904c6050edb90cad5b8c9f51426..4c04eb999720d5f98d78f2eecd3bd04f016ef16d 100644 --- a/content/zh/docs/Developerguide/PG_STAT_SYS_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_STAT_SYS_INDEXES.md @@ -31,7 +31,7 @@ PG\_STAT\_SYS\_INDEXES视图显示pg\_catalog、information\_schema模式中所

name

索引中模式名。

+

索引的模式名。

relname

diff --git a/content/zh/docs/Developerguide/PG_STAT_SYS_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_SYS_TABLES.md index 1a5b887f76d1cce19dfc0ec0419125ccaa682304..0a7fdd2da86d6311322e07b82ed83e2d5c395a92 100644 --- a/content/zh/docs/Developerguide/PG_STAT_SYS_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_SYS_TABLES.md @@ -24,7 +24,7 @@ PG\_STAT\_SYS\_TABLES视图显示pg\_catalog、information\_schema模式的所

name

此表的模式名。

+

该表的模式名。

relname

@@ -38,7 +38,7 @@ PG\_STAT\_SYS\_TABLES视图显示pg\_catalog、information\_schema模式的所

bigint

此表发起的顺序扫描数。

+

该表发起的顺序扫描数。

seq_tup_read

@@ -52,7 +52,7 @@ PG\_STAT\_SYS\_TABLES视图显示pg\_catalog、information\_schema模式的所

bigint

此表发起的索引扫描数。

+

该表发起的索引扫描数。

idx_tup_fetch

@@ -108,7 +108,7 @@ PG\_STAT\_SYS\_TABLES视图显示pg\_catalog、information\_schema模式的所

timestamp with time zone

最后一次此表是手动清理的(不计算VACUUM FULL)。

+

最后一次该表是手动清理的(不计算VACUUM FULL)。

last_autovacuum

diff --git a/content/zh/docs/Developerguide/PG_STAT_USER_INDEXES.md b/content/zh/docs/Developerguide/PG_STAT_USER_INDEXES.md index 96f57a552bddd00047d5eefcfd7c6a6d1f3920a8..9590d2435904b584049bceee4e14fa3ef9cc9f3c 100644 --- a/content/zh/docs/Developerguide/PG_STAT_USER_INDEXES.md +++ b/content/zh/docs/Developerguide/PG_STAT_USER_INDEXES.md @@ -31,7 +31,7 @@ PG\_STAT\_USER\_INDEXES视图显示数据库中用户自定义普通表和toast

name

索引中模式名。

+

索引的模式名。

relname

diff --git a/content/zh/docs/Developerguide/PG_STAT_USER_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_USER_TABLES.md index 9e9cea38076d4d3e440fe33f005274205e9df53a..8f9d63ebba27218b7daa5c16076846455ce646dd 100644 --- a/content/zh/docs/Developerguide/PG_STAT_USER_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_USER_TABLES.md @@ -24,7 +24,7 @@ PG\_STAT\_USER\_TABLES视图显示所有命名空间中用户自定义普通表

name

此表的模式名。

+

该表的模式名。

relname

@@ -38,7 +38,7 @@ PG\_STAT\_USER\_TABLES视图显示所有命名空间中用户自定义普通表

bigint

此表发起的顺序扫描数。

+

该表发起的顺序扫描数。

seq_tup_read

@@ -52,7 +52,7 @@ PG\_STAT\_USER\_TABLES视图显示所有命名空间中用户自定义普通表

bigint

此表发起的索引扫描数。

+

该表发起的索引扫描数。

idx_tup_fetch

@@ -108,7 +108,7 @@ PG\_STAT\_USER\_TABLES视图显示所有命名空间中用户自定义普通表

timestamp with time zone

最后一次此表是手动清理的(不计算VACUUM FULL)。

+

最后一次该表是手动清理的(不计算VACUUM FULL)。

last_autovacuum

diff --git a/content/zh/docs/Developerguide/PG_STAT_XACT_ALL_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_XACT_ALL_TABLES.md index af1a9cf5378706c9eccd31df96a75f95e1b51fa5..1389ef8e5711696d50715bb614fb07cf8552aa62 100644 --- a/content/zh/docs/Developerguide/PG_STAT_XACT_ALL_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_XACT_ALL_TABLES.md @@ -24,7 +24,7 @@ PG\_STAT\_XACT\_ALL\_TABLES视图显示命名空间中所有普通表和toast表

name

此表的模式名。

+

该表的模式名。

relname

@@ -38,7 +38,7 @@ PG\_STAT\_XACT\_ALL\_TABLES视图显示命名空间中所有普通表和toast表

bigint

此表发起的顺序扫描数。

+

该表发起的顺序扫描数。

seq_tup_read

@@ -52,7 +52,7 @@ PG\_STAT\_XACT\_ALL\_TABLES视图显示命名空间中所有普通表和toast表

bigint

此表发起的索引扫描数。

+

该表发起的索引扫描数。

idx_tup_fetch

diff --git a/content/zh/docs/Developerguide/PG_STAT_XACT_SYS_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_XACT_SYS_TABLES.md index 2178da031cffcf9a0438178f408d78d3e2ba71a0..c4802d421bfde2ad02801856cfb53b6bbb33ae82 100644 --- a/content/zh/docs/Developerguide/PG_STAT_XACT_SYS_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_XACT_SYS_TABLES.md @@ -24,7 +24,7 @@ PG\_STAT\_XACT\_SYS\_TABLES视图显示命名空间中系统表的事务状态

name

此表的模式名。

+

该表的模式名。

relname

@@ -38,7 +38,7 @@ PG\_STAT\_XACT\_SYS\_TABLES视图显示命名空间中系统表的事务状态

bigint

此表发起的顺序扫描数。

+

该表发起的顺序扫描数。

seq_tup_read

@@ -52,7 +52,7 @@ PG\_STAT\_XACT\_SYS\_TABLES视图显示命名空间中系统表的事务状态

bigint

此表发起的索引扫描数。

+

该表发起的索引扫描数。

idx_tup_fetch

diff --git a/content/zh/docs/Developerguide/PG_STAT_XACT_USER_TABLES.md b/content/zh/docs/Developerguide/PG_STAT_XACT_USER_TABLES.md index b7d870fe68e4679a39a5d290961e2f205c2ba429..dac480c2654248c4b15709d441ee85cba8316a1b 100644 --- a/content/zh/docs/Developerguide/PG_STAT_XACT_USER_TABLES.md +++ b/content/zh/docs/Developerguide/PG_STAT_XACT_USER_TABLES.md @@ -24,7 +24,7 @@ PG\_STAT\_XACT\_USER\_TABLES视图显示命名空间中用户表的事务状态

name

此表的模式名。

+

该表的模式名。

relname

@@ -38,7 +38,7 @@ PG\_STAT\_XACT\_USER\_TABLES视图显示命名空间中用户表的事务状态

bigint

此表发起的顺序扫描数。

+

该表发起的顺序扫描数。

seq_tup_read

@@ -52,7 +52,7 @@ PG\_STAT\_XACT\_USER\_TABLES视图显示命名空间中用户表的事务状态

bigint

此表发起的索引扫描数。

+

该表发起的索引扫描数。

idx_tup_fetch

diff --git a/content/zh/docs/Developerguide/PG_TABLES.md b/content/zh/docs/Developerguide/PG_TABLES.md index 7d5642516f0a4e9af84c3ecfa60d5ba2effd9f82..f558a7e9b3d8b8ed37a3dd56aa4bd660776b31c3 100644 --- a/content/zh/docs/Developerguide/PG_TABLES.md +++ b/content/zh/docs/Developerguide/PG_TABLES.md @@ -19,7 +19,7 @@ PG\_TABLES视图提供了对数据库中每个表访问的有用信息。

name

PG_NAMESPACE.nspname

+

PG_NAMESPACE.nspname

包含表的模式名。

name

PG_TABLESPACE.spcname

+

PG_TABLESPACE.spcname

包含表的表空间,默认为NULL。

Boolean

是否加密openGauss
  • f:非加密openGauss
  • t:加密openGauss
+
是否加密openGauss。
  • f:非加密openGauss。
  • t:加密openGauss。

synchronize quit

steam plan结束时,等待stream线程组内的线程统一退出。

+

stream plan结束时,等待stream线程组内的线程统一退出。

nodegroup destroy

+

wait stream nodegroup destroy

steam plan结束时,等待销毁stream node group。

+

stream plan结束时,等待销毁stream node group。

wait active statement

@@ -239,86 +239,6 @@ wait\_status列的等待状态有以下状态。

等待作业执行,正在资源负载管控中。

gtm connect

-

等待与GTM建连。

-

gtm get gxid

-

等待从GTM获取事务xid。

-

gtm get snapshot

-

等待从GTM获取事务快照snapshot。

-

gtm begin trans

-

等待GTM开始事务。

-

gtm commit trans

-

等待GTM提交事务。

-

gtm rollback trans

-

等待GTM执行事务回滚。

-

gtm start prepare trans

-

等待GTM开始两阶段事务的prepare阶段。

-

gtm prepare trans

-

等待GTM完成两阶段事务的prepare阶段。

-

gtm open sequence

-

等待GTM打开sequence。

-

gtm close sequence

-

等待GTM关闭sequence。

-

gtm create sequence

-

等待GTM创建sequence。

-

gtm alter sequence

-

等待GTM修改sequence。

-

gtm get sequence val

-

等待从GTM获取sequence的下一个值。

-

gtm set sequence val

-

等待GTM设置sequence的值。

-

gtm drop sequence

-

等待GTM删除sequence。

-

gtm rename sequece

-

等待GTM重命名sequence。

-

analyze: [relname], [phase]

当前正在对表relname执行analyze。如果状态包含phase信息,则为autovacuum,表示是数据库自动开启AutoVacuum线程执行的analyze分析操作。

@@ -367,6 +287,26 @@ wait\_status列的等待状态有以下状态。

当前是Material算子,write file表示Material算子正在将数据写入磁盘。

NestLoop

+

当前是NestLoop算子。

+

wait memory

+

等待内存获取。

+

wait sync consumer next step

+

Stream算子等待消费者执行。

+

wait sync producer next step

+

Stream算子等待生产者执行。

+
@@ -505,7 +445,7 @@ wait\_status列的等待状态有以下状态。

NodeTableLock

-

用于保护存放数据库节点信息的共享结构。

+

用于保护存放数据库节点信息的共享结构。

PoolerLock

@@ -593,11 +533,6 @@ wait\_status列的等待状态有以下状态。

用于串行更新特定结构中记录的主备机的xlog flush位置点。

-

GTMHostInfoLock

- -

用于避免并发访问或者修改GTM主机信息。

- -

ReplicationSlotAllocationLock

用于主备复制时保护主机端的流复制槽的分配。

@@ -655,7 +590,7 @@ wait\_status列的等待状态有以下状态。

JobShmemLock

-

用于MPP兼容A定时任务功能中保护定时读取的全局变量。

+

用于定时任务功能中保护定时读取的全局变量。

OBSRuntimeLock

@@ -728,6 +663,266 @@ wait\_status列的等待状态有以下状态。

用于保证当前只有一个线程在创建Barrier。

+

dummyServerInfoCacheLock

+ +

用于保护缓存加速openGauss连接信息的全局哈希表。

+ + +

RPNumberLock

+ +

用于加速openGauss的数据库节点对正在执行计划的任务线程的计数。

+ + +

ClusterRPLock

+ +

用于加速openGauss的CCN中维护的openGauss负载数据的并发存取控制。

+ + +

CBMParseXlogLock

+ +

Cbm 解析xlog时的保护锁

+ + +

RelfilenodeReuseLock

+ +

避免错误地取消已重用的列属性文件的链接。

+ + +

RcvWriteLock

+ +

防止并发调用WalDataRcvWrite。

+ + +

PercentileLock

+ +

用于保护全局PercentileBuffer

+ + +

CSNBufMappingLock

+ +

保护csn页面

+ + +

UniqueSQLMappingLock

+ +

用于保护uniquesql hash table

+ + +

DelayDDLLock

+ +

防止并发ddl。

+ + +

CLOG Ctl

+ +

用于避免并发访问或者修改Clog控制数据结构

+ + +

Async Ctl

+ +

保护Async buffer

+ + +

MultiXactOffset Ctl

+ +

保护MultiXact offet的slru buffer

+ + +

MultiXactMember Ctl

+ +

保护MultiXact member的slrubuffer

+ + +

OldSerXid SLRU Ctl

+ +

保护old xids的slru buffer

+ + +

ReplicationSlotLock

+ +

用于保护ReplicationSlot

+ + +

PGPROCLock

+ +

用于保护pgproc

+ + +

MetaCacheLock

+ +

用于保护MetaCache

+ + +

DataCacheLock

+ +

用于保护datacache

+ + +

InstrUserLock

+ +

用于保护InstrUserHTAB。

+ + +

BadBlockStatHashLock

+ +

用于保护global_bad_block_stat hash表。

+ + +

BufFreelistLock

+ +

用于保证共享缓冲区空闲列表操作的原子性。

+ + +

CUSlotListLock

+ +

用于控制列存缓冲区槽位的并发操作。

+ + +

AddinShmemInitLock

+ +

保护共享内存对象的初始化。

+ + +

AlterPortLock

+ +

保护协调节点更改注册端口号的操作。

+ + +

FdwPartitionCaheLock

+ +

HDFS分区表缓冲区的管理锁。

+ + +

DfsConnectorCacheLock

+ +

DFSConnector缓冲区的管理锁。

+ + +

DfsSpaceCacheLock

+ +

HDFS表空间管理缓冲区的管理锁。

+ + +

FullBuildXlogCopyStartPtrLock

+ +

用于保护全量Build中Xlog拷贝的操作。

+ + +

DfsUserLoginLock

+ +

用于HDFS用户登录以及认证。

+ + +

LogicalReplicationSlotPersistentDataLock

+ +

用于保护逻辑复制过程中复制槽位的数据。

+ + +

WorkloadSessionInfoLock

+ +

保护负载管理session info内存hash表访问。

+ + +

InstrWorkloadLock

+ +

保护负载管理统计信息的内存hash表访问。

+ + +

PgfdwLock

+ +

用于管理实例向Foreign server建立连接。

+ + +

InstanceTimeLock

+ +

用于获取实例中会话的时间信息。

+ + +

XlogRemoveSegLock

+ +

保护Xlog段文件的回收操作。

+ + +

DnUsedSpaceHashLock

+ +

用于更新会话对应的空间使用信息。

+ + +

CsnMinLock

+ +

用于计算CSNmin。

+ + +

GPCCommitLock

+ +

用于保护全局Plan Cache hash表的添加操作。

+ + +

GPCClearLock

+ +

用于保护全局Plan Cache hash表的清除操作。

+ + +

GPCTimelineLock

+ +

用于保护全局Plan Cache hash表检查Timeline的操作。

+ + +

TsTagsCacheLock

+ +

用于时序tag缓存管理。

+ + +

InstanceRealTLock

+ +

用于保护共享实例统计信息hash表的更新操作。

+ + +

CLogBufMappingLock

+ +

用于提交日志缓存管理。

+ + +

GPCMappingLock

+ +

用于全局Plan Cache缓存管理。

+ + +

GPCPrepareMappingLock

+ +

用于全局Plan Cache缓存管理。

+ + +

BufferIOLock

+ +

保护共享缓冲区页面的IO操作。

+ + +

BufferContentLock

+ +

保护共享缓冲区页面内容的读取、修改。

+ + +

CSNLOG Ctl

+ +

用于CSN日志管理。

+ + +

DoubleWriteLock

+ +

用于双写的管理操作。

+ + +

RowPageReplicationLock

+ +

用于管理行存储的数据页复制。

+ + +

extension

+ +

其他轻量锁。

+ + @@ -992,6 +1187,46 @@ wait\_status列的等待状态有以下状态。

写入WAL文件。

+

DoubleWriteFileRead

+ +

双写 文件读取。

+ + +

DoubleWriteFileSync

+ +

双写 文件强制刷盘。

+ + +

DoubleWriteFileWrite

+ +

双写 文件写入。

+ + +

PredoProcessPending

+ +

并行日志回放中当前记录回放等待其它记录回放完成。

+ + +

PredoApply

+ +

并行日志回放中等待当前工作线程等待其他线程回放至本线程LSN。

+ + +

DisableConnectFileRead

+ +

HA锁分片逻辑文件读取。

+ + +

DisableConnectFileSync

+ +

HA锁分片逻辑文件强制刷盘。

+ + +

DisableConnectFileWrite

+ +

HA锁分片逻辑文件写入。

+ + diff --git a/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO.md b/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO.md index 27d2e1f64bb2d0cb8aaa44ce63536adbe41f81ba..cfdce4794d950e002947695909ecd6d9a7477444 100644 --- a/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO.md +++ b/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO.md @@ -94,48 +94,48 @@ PG\_TOTAL\_USER\_RESOURCE\_INFO视图显示所有用户资源使用情况,需

bigint

-

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业read的字节总数(单位KB)。

-

数据库节点:实例启动至当前时间为止,该用户复杂作业read的字节总数(单位KB)。

+

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业read的字节总数(单位KB)。

+

数据库节点:实例启动至当前时间为止,该用户复杂作业read的字节总数(单位KB)。

write_kbytes

bigint

-

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业write的字节总数(单位KB)。

-

数据库节点:实例启动至当前时间为止,该用户复杂作业write的字节总数(单位KB)。

+

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业write的字节总数(单位KB)。

+

数据库节点:实例启动至当前时间为止,该用户复杂作业write的字节总数(单位KB)。

read_counts

bigint

-

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业read的次数之和(单位次)。

-

数据库节点:实例启动至当前时间为止,该用户复杂作业read的次数之和(单位次)。

+

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业read的次数之和(单位次)。

+

数据库节点:实例启动至当前时间为止,该用户复杂作业read的次数之和(单位次)。

write_counts

bigint

-

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业write的次数之和(单位次)。

-

数据库节点:实例启动至当前时间为止,该用户复杂作业write的次数之和(单位次)。

+

数据库主节点:过去5秒内,该用户在数据库节点上复杂作业write的次数之和(单位次)。

+

数据库节点:实例启动至当前时间为止,该用户复杂作业write的次数之和(单位次)。

read_speed

double precision

-

数据库主节点:过去5秒内,该用户在单个数据库节点上复杂作业read平均速率(单位KB/s)。

-

数据库节点:过去5秒内,该用户在该数据库节点上复杂作业read平均速率(单位KB/s)。

+

数据库主节点:过去5秒内,该用户在单个数据库节点上复杂作业read平均速率(单位KB/s)。

+

数据库节点:过去5秒内,该用户在该数据库节点上复杂作业read平均速率(单位KB/s)。

write_speed

double precision

-

数据库主节点:过去5秒内,该用户在单个数据库节点上复杂作业write平均速率(单位KB/s)。

-

数据库节点:过去5秒内,该用户在该数据库节点上复杂作业write平均速率(单位KB/s)。

+

数据库主节点:过去5秒内,该用户在单个数据库节点上复杂作业write平均速率(单位KB/s)。

+

数据库节点:过去5秒内,该用户在该数据库节点上复杂作业write平均速率(单位KB/s)。

diff --git a/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID.md b/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID.md index 0e7105ae4a5af4e2b8898c4f809717e640eb3aaf..e440e5a96e0fd02e361be76d964a92c5e77d2b29 100644 --- a/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID.md +++ b/content/zh/docs/Developerguide/PG_TOTAL_USER_RESOURCE_INFO_OID.md @@ -87,7 +87,7 @@ PG\_TOTAL\_USER\_RESOURCE\_INFO\_OID视图显示所有用户资源使用情况

bigint

-

可使用的临时空间总大小,单位KB,值为-1表示未限制。

+

可使用的下盘空间总大小,单位KB,值为-1表示未限制。

diff --git a/content/zh/docs/Developerguide/PG_TS_CONFIG.md b/content/zh/docs/Developerguide/PG_TS_CONFIG.md index 277389df09e42613ee22d6fd2b8677a7700bc518..816872f7d832d9c316bbd2f2d9e1e5c4edae9a56 100644 --- a/content/zh/docs/Developerguide/PG_TS_CONFIG.md +++ b/content/zh/docs/Developerguide/PG_TS_CONFIG.md @@ -2,7 +2,7 @@ PG\_TS\_CONFIG系统表包含表示文本搜索配置的记录。一个配置指定一个特定的文本搜索解析器和一个为了每个解析器的输出类型使用的字典的列表。 -解析器在PG\_TS\_CONFIG记录中显示,但是字典映射的标记是由[PG\_TS\_CONFIG\_MAP](PG_TS_CONFIG_MAP.md#ZH-CN_TOPIC_0242385851)里面的辅助记录定义的。 +解析器在PG\_TS\_CONFIG记录中显示,但是字典映射的标记是由[PG\_TS\_CONFIG\_MAP](PG_TS_CONFIG_MAP.md)里面的辅助记录定义的。 **表 1** PG\_TS\_CONFIG字段 @@ -39,7 +39,7 @@ PG\_TS\_CONFIG系统表包含表示文本搜索配置的记录。一个配置指

oid

-

PG_NAMESPACE.oid

+

PG_NAMESPACE.oid

包含这个配置的名称空间的OID。

@@ -57,7 +57,7 @@ PG\_TS\_CONFIG系统表包含表示文本搜索配置的记录。一个配置指

oid

-

PG_TS_PARSER.oid

+

PG_TS_PARSER.oid

这个配置的文本搜索解析器的OID。

diff --git a/content/zh/docs/Developerguide/PG_TS_CONFIG_MAP.md b/content/zh/docs/Developerguide/PG_TS_CONFIG_MAP.md index 95ea1a8431b7cf5143706ee7ff3daf4d42bbc40b..012e50882c835c9892f405ad662529850838b8cc 100644 --- a/content/zh/docs/Developerguide/PG_TS_CONFIG_MAP.md +++ b/content/zh/docs/Developerguide/PG_TS_CONFIG_MAP.md @@ -19,9 +19,9 @@ PG\_TS\_CONFIG\_MAP系统表包含为每个文本搜索配置的解析器的每

oid

-

PG_TS_CONFIG.oid

+

PG_TS_CONFIG.oid

-

拥有这个映射记录的PG_TS_CONFIG记录的OID。

+

拥有这个映射记录的PG_TS_CONFIG记录的OID。

maptokentype

@@ -46,7 +46,7 @@ PG\_TS\_CONFIG\_MAP系统表包含为每个文本搜索配置的解析器的每

oid

-

PG_TS_DICT.oid

+

PG_TS_DICT.oid

要咨询的文本搜索字典的OID。

diff --git a/content/zh/docs/Developerguide/PG_TS_DICT.md b/content/zh/docs/Developerguide/PG_TS_DICT.md index 5b17128b6f3d4d7eca932e50344285278d206d3a..cd622a30d245cf3a131806eab2b4db2190e93bbe 100644 --- a/content/zh/docs/Developerguide/PG_TS_DICT.md +++ b/content/zh/docs/Developerguide/PG_TS_DICT.md @@ -39,7 +39,7 @@ PG\_TS\_DICT系统表包含定义文本搜索字典的记录。字典取决于

oid

-

PG_NAMESPACE.oid

+

PG_NAMESPACE.oid

包含这个字典的名称空间的OID。

@@ -57,7 +57,7 @@ PG\_TS\_DICT系统表包含定义文本搜索字典的记录。字典取决于

oid

-

PG_TS_TEMPLATE.oid

+

PG_TS_TEMPLATE.oid

这个字典的文本搜索模板的OID。

diff --git a/content/zh/docs/Developerguide/PG_TS_PARSER.md b/content/zh/docs/Developerguide/PG_TS_PARSER.md index 725df7ca5d7010e3c5e5c57df37ae358379aa8c7..abf1a580faf8e390e61e99b1fe4d014d397f084a 100644 --- a/content/zh/docs/Developerguide/PG_TS_PARSER.md +++ b/content/zh/docs/Developerguide/PG_TS_PARSER.md @@ -1,6 +1,6 @@ # PG\_TS\_PARSER -PG\_TS\_PARSER系统表包含定义文本解析器的记录。解析器负责分裂输入文本为词位,并且为每个词位分配标记类型。因为解析器必须通过C语言级别的函数实现,所以新解析器必须由数据库系统管理员创建。 +PG\_TS\_PARSER系统表包含定义文本解析器的记录。解析器负责分裂输入文本为词位,并且为每个词位分配标记类型。新解析器必须由数据库系统管理员创建。 **表 1** PG\_TS\_PARSER字段 @@ -37,7 +37,7 @@ PG\_TS\_PARSER系统表包含定义文本解析器的记录。解析器负责分

oid

-

PG_NAMESPACE.oid

+

PG_NAMESPACE.oid

包含这个解析器的名称空间的OID。

diff --git a/content/zh/docs/Developerguide/PG_TS_TEMPLATE.md b/content/zh/docs/Developerguide/PG_TS_TEMPLATE.md index c7127859f197a5d1b3b2f848be2fa92d017647ff..86d7d54b3d192bc8cc9d47568ae3405cf015721a 100644 --- a/content/zh/docs/Developerguide/PG_TS_TEMPLATE.md +++ b/content/zh/docs/Developerguide/PG_TS_TEMPLATE.md @@ -37,7 +37,7 @@ PG\_TS\_TEMPLATE系统表包含定义文本搜索模板的记录。模板是文

oid

-

PG_NAMESPACE.oid

+

PG_NAMESPACE.oid

包含这个模板的名称空间的OID。

diff --git a/content/zh/docs/Developerguide/PG_TYPE.md b/content/zh/docs/Developerguide/PG_TYPE.md index 8f3a26ad5ed1644c0eb787faa2c65244452a27a3..0e79556fa26f09172f603f751ca75fb7a740c860 100644 --- a/content/zh/docs/Developerguide/PG_TYPE.md +++ b/content/zh/docs/Developerguide/PG_TYPE.md @@ -228,7 +228,8 @@ PG\_TYPE系统表存储数据类型的相关信息。

text

-

如果某类型没有相关缺省值,则取值是NULL。如果typdefaultbin不是NULL,则typdefault必须包含一个typdefaultbin代表的缺省表达式的人类可读的版本。如果typdefaultbin为NULL但typdefault不是,typdefault则是该类型缺省值的外部表现形式,可以把它交给该类型的输入转换器生成一个常量。

+

如果某类型没有相关缺省值,则取值是NULL。

+
  • 如果typdefaultbin为非NULL,则typdefault必须包含一个typdefaultbin代表的缺省表达式。
  • 如果typdefaultbin为NULL但typdefault不是,typdefault则是该类型缺省值的外部表现形式,可以把它作为该类型的输入,转换器生成一个常量。

typacl

diff --git a/content/zh/docs/Developerguide/PG_USER.md b/content/zh/docs/Developerguide/PG_USER.md index 502be4fa177a4c7969e084a6a7bdc6e7e8fddace..161514e976f635ad8fd36a2310893f9a7dc1f2a6 100644 --- a/content/zh/docs/Developerguide/PG_USER.md +++ b/content/zh/docs/Developerguide/PG_USER.md @@ -1,6 +1,6 @@ # PG\_USER -PG\_USER视图提供了访问数据库用户的信息。 +PG\_USER视图提供了访问数据库用户的信息,默认只有初始化用户和具有sysadmin属性的用户可以查看,其余用户需要赋权后才可以查看。 **表 1** PG\_USER字段 @@ -122,7 +122,7 @@ PG\_USER视图提供了访问数据库用户的信息。

name

-

用户关联的逻辑openGauss名称,如果该用户没有管理逻辑openGauss,则该字段为空。

+

用户关联的逻辑openGauss名称,如果该用户没有管理openGauss,则该字段为空。

usemonitoradmin

diff --git a/content/zh/docs/Developerguide/PG_USER_MAPPING.md b/content/zh/docs/Developerguide/PG_USER_MAPPING.md index fb83515b6280611f0ea49f4096c9daf618d716f0..190ce4f1cb42d353547f68d6054f83f9cf69f172 100644 --- a/content/zh/docs/Developerguide/PG_USER_MAPPING.md +++ b/content/zh/docs/Developerguide/PG_USER_MAPPING.md @@ -2,7 +2,7 @@ PG\_USER\_MAPPING系统表存储从本地用户到远程的映射。 -需要有系统管理员权限才可以访问此系统表。普通用户可以使用视图[PG\_USER\_MAPPINGS](PG_USER_MAPPINGS.md#ZH-CN_TOPIC_0242386000)进行查询。 +需要有系统管理员权限才可以访问此系统表。普通用户可以使用视图[PG\_USER\_MAPPINGS](PG_USER_MAPPINGS.md)进行查询。 **表 1** PG\_USER\_MAPPING字段 @@ -39,7 +39,7 @@ PG\_USER\_MAPPING系统表存储从本地用户到远程的映射。

oid

-

PG_FOREIGN_SERVER.oid

+

PG_FOREIGN_SERVER.oid

包含这个映射的外部服务器的OID。

diff --git a/content/zh/docs/Developerguide/PG_USER_MAPPINGS.md b/content/zh/docs/Developerguide/PG_USER_MAPPINGS.md index 78aed44bc5f8dc29cfff60918679ec26bd8503c3..5367257ba74df540166bd5961f665912b22ec03d 100644 --- a/content/zh/docs/Developerguide/PG_USER_MAPPINGS.md +++ b/content/zh/docs/Developerguide/PG_USER_MAPPINGS.md @@ -2,7 +2,7 @@ PG\_USER\_MAPPINGS视图提供访问关于用户映射的信息的接口。 -这个视图只是一个[PG\_USER\_MAPPING](PG_USER_MAPPING.md#ZH-CN_TOPIC_0242385856)的可读部分的视图化表现,如果用户无权使用它则查询此表时,有些选项字段会显示为空。普通用户需要授权才可以访问。 +这个视图只是一个[PG\_USER\_MAPPING](PG_USER_MAPPING.md)的可读部分的视图化表现,如果用户无权使用它则查询该表时,有些选项字段会显示为空。普通用户需要授权才可以访问。 **表 1** PG\_USER\_MAPPINGS字段 @@ -21,7 +21,7 @@ PG\_USER\_MAPPINGS视图提供访问关于用户映射的信息的接口。

oid

-

PG_USER_MAPPING.oid

+

PG_USER_MAPPING.oid

用户映射的OID。

@@ -30,7 +30,7 @@ PG\_USER\_MAPPINGS视图提供访问关于用户映射的信息的接口。

oid

-

PG_FOREIGN_SERVER.oid

+

PG_FOREIGN_SERVER.oid

包含这个映射的外部服务器的OID。

@@ -39,7 +39,7 @@ PG\_USER\_MAPPINGS视图提供访问关于用户映射的信息的接口。

name

-

PG_FOREIGN_SERVER.srvname

+

PG_FOREIGN_SERVER.srvname

外部服务器的名称。

diff --git a/content/zh/docs/Developerguide/PG_VIEWS.md b/content/zh/docs/Developerguide/PG_VIEWS.md index 8d232343394a14399bbed9a1f0c1ab32b388f477..8f4f111136c9cdbe4360a796e2bd8a1b6d09f652 100644 --- a/content/zh/docs/Developerguide/PG_VIEWS.md +++ b/content/zh/docs/Developerguide/PG_VIEWS.md @@ -19,7 +19,7 @@ PG\_VIEWS视图提供访问数据库中每个视图的有用信息。

name

-

PG_NAMESPACE.nspname

+

PG_NAMESPACE.nspname

包含视图的模式名。

diff --git a/content/zh/docs/Developerguide/PG_WLM_STATISTICS.md b/content/zh/docs/Developerguide/PG_WLM_STATISTICS.md index eae16d0c85e90f6768140c26a8783a59e1e3b64c..4bb163ebb8113bd0e99875c779580a8e19d42282 100644 --- a/content/zh/docs/Developerguide/PG_WLM_STATISTICS.md +++ b/content/zh/docs/Developerguide/PG_WLM_STATISTICS.md @@ -59,7 +59,7 @@ PG\_WLM\_STATISTICS视图显示作业结束后或已被处理异常后的负载

text

-

该字段不支持

+

该字段不支持。

status

diff --git "a/content/zh/docs/Developerguide/PL-pgSQL\350\257\255\350\250\200\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/PL-pgSQL\350\257\255\350\250\200\345\207\275\346\225\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..cb11e3075330d02028c999f44516acde9f8c263f --- /dev/null +++ "b/content/zh/docs/Developerguide/PL-pgSQL\350\257\255\350\250\200\345\207\275\346\225\260.md" @@ -0,0 +1,20 @@ +# PL/pgSQL语言函数 + +PL/pgSQL是一种可载入的过程语言。 + +用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。 + +SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。 + +这意味着客户端应用必须发送每一个查询到数据库服务器、等待它被处理、接收并处理结果、做一些计算,然后发送更多查询给服务器。如果客户端和数据库服务器不在同一台机器上,则会引起进程间通信并且将带来网络负担。 + +通过PL/pgSQL,可以将一整块计算和一系列查询分组在数据库服务器内部,这样就有了一种过程语言的能力并且使SQL更易用,同时能节省客户端/服务器通信开销。 + +- 客户端和服务器之间的额外往返通信被消除。 +- 客户端不需要的中间结果不必被整理或者在服务器和客户端之间传送。 +- 多轮的查询解析可以被避免。 + +PL/pgSQL可以使用SQL中所有的数据类型、操作符和函数。 + +应用PL/pgSQL创建函数的语法为[CREATE FUNCTION](CREATE-FUNCTION.md)。PL/pgSQL是一种可载入的过程语言。其应用方法与[存储过程](存储过程.md)相似,只是存储过程无返回值,函数有返回值。 + diff --git a/content/zh/docs/Developerguide/PQcancel.md b/content/zh/docs/Developerguide/PQcancel.md index 494e69b633d36109d41738f814300499e9449b4a..4bf0cfe08920311a8a3081bfc3b89e80f18e20e2 100644 --- a/content/zh/docs/Developerguide/PQcancel.md +++ b/content/zh/docs/Developerguide/PQcancel.md @@ -50,5 +50,5 @@ int:执行结果为1表示成功,0表示失败,失败原因存到errbuf中 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQclear.md b/content/zh/docs/Developerguide/PQclear.md index 688cbe8557f617acb8fabcf397e016baf1efe132..8491b61f6f35b364f2dbf528bd263806bb608e58 100644 --- a/content/zh/docs/Developerguide/PQclear.md +++ b/content/zh/docs/Developerguide/PQclear.md @@ -35,5 +35,5 @@ PGresult不会自动释放,当提交新的查询时它并不消失,甚至断 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQconnectdb.md b/content/zh/docs/Developerguide/PQconnectdb.md index 6879345f64b836b161faad5aa040a887d5644298..354b1169c4b235480db9fdd108c58eb39248b3c0 100644 --- a/content/zh/docs/Developerguide/PQconnectdb.md +++ b/content/zh/docs/Developerguide/PQconnectdb.md @@ -23,7 +23,7 @@ PGconn *PQconnectdb(const char *conninfo);

conninfo

-

链接字符串,字符串中的字段见5.6.4.5章节描述章节。

+

链接字符串,字符串中的字段见链接字符章节。

@@ -40,5 +40,5 @@ PGconn \*:指向包含链接的对象指针,内存在函数内部申请。 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQconnectdbParams.md b/content/zh/docs/Developerguide/PQconnectdbParams.md index 6ab4d9645ae8743a30336a8ad2c6ee51b9004a89..80242d1bb5fcb9f394ce51b21449f1c6c67a50d1 100644 --- a/content/zh/docs/Developerguide/PQconnectdbParams.md +++ b/content/zh/docs/Developerguide/PQconnectdbParams.md @@ -51,5 +51,5 @@ PGconn \*:指向包含链接的对象指针,内存在函数内部申请。 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQerrorMessage.md b/content/zh/docs/Developerguide/PQerrorMessage.md index 21567be029d61744d024754e871802469ac9c8be..88c860e65605593932246a3dcd39e0a6588bf637 100644 --- a/content/zh/docs/Developerguide/PQerrorMessage.md +++ b/content/zh/docs/Developerguide/PQerrorMessage.md @@ -35,5 +35,5 @@ char类型指针。 ## 示例 -参见:[示例](示例-10.md) +参见:[示例](示例-3.md) diff --git a/content/zh/docs/Developerguide/PQexec.md b/content/zh/docs/Developerguide/PQexec.md index 1ca53bee7f22b136c4509c648414b12fa55eef93..1dc774b0a3ca4a1dc7a9825bcd6d767ee59f0b63 100644 --- a/content/zh/docs/Developerguide/PQexec.md +++ b/content/zh/docs/Developerguide/PQexec.md @@ -47,5 +47,5 @@ PGresult:包含查询结果的对象指针。 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQexecParams.md b/content/zh/docs/Developerguide/PQexecParams.md index 5127f2869b3e03e48151c066031a2a2ceef2558d..7f15f7edf135372fc1ef1e6e9998d3a217a5ee34 100644 --- a/content/zh/docs/Developerguide/PQexecParams.md +++ b/content/zh/docs/Developerguide/PQexecParams.md @@ -38,6 +38,11 @@ PGresult* PQexecParams(PGconn* conn,

SQL文本串。

+

nParams

+ +

绑定参数的个数

+ +

paramTypes

绑定参数类型。

diff --git a/content/zh/docs/Developerguide/PQexecParamsBatch.md b/content/zh/docs/Developerguide/PQexecParamsBatch.md index c17ce11e41c7be9902729939bd2ef622690cf29a..2e245ac783215f3cc88f2d7a5145bccb8f4d36f8 100644 --- a/content/zh/docs/Developerguide/PQexecParamsBatch.md +++ b/content/zh/docs/Developerguide/PQexecParamsBatch.md @@ -39,6 +39,11 @@ PGresult* PQexecParamsBatch(PGconn* conn,

SQL文本串。

+

nParams

+ +

绑定参数的个数

+ +

nBatch

批量操作数。

diff --git a/content/zh/docs/Developerguide/PQfinish.md b/content/zh/docs/Developerguide/PQfinish.md index cf368e948ef4bdd65fdbc42f0d80e05a54485bd6..6c16dd71575e2f7002f282d7811a10550e24f989 100644 --- a/content/zh/docs/Developerguide/PQfinish.md +++ b/content/zh/docs/Developerguide/PQfinish.md @@ -35,5 +35,5 @@ void PQfinish(PGconn *conn); ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQflush.md b/content/zh/docs/Developerguide/PQflush.md index 09da9f5e14bcee0b48ff75eb5d23043d888203fd..abb0993404a1c2cec3fe226dbb0b62b7a14c2d78 100644 --- a/content/zh/docs/Developerguide/PQflush.md +++ b/content/zh/docs/Developerguide/PQflush.md @@ -39,5 +39,5 @@ int:如果成功(或者如果发送队列为空),则返回0;如果由 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQfname.md b/content/zh/docs/Developerguide/PQfname.md index bc9ecee0cf715a23ac297990886df7407da69a4b..6179a8b6ee50a4efdcef9cdf0a0d4d635a8ddde1 100644 --- a/content/zh/docs/Developerguide/PQfname.md +++ b/content/zh/docs/Developerguide/PQfname.md @@ -41,5 +41,5 @@ char类型指针。 ## 示例 -参见:[示例](示例-10.md) +参见:[示例](示例-3.md) diff --git a/content/zh/docs/Developerguide/PQfreeCancel.md b/content/zh/docs/Developerguide/PQfreeCancel.md index 4231ee222a954fa853130fe628dc449f8f3c4e5f..26ab7ecb3dbca8c6341a7149a2d8b95bec05950c 100644 --- a/content/zh/docs/Developerguide/PQfreeCancel.md +++ b/content/zh/docs/Developerguide/PQfreeCancel.md @@ -35,5 +35,5 @@ PQfreeCancel释放一个由前面的PQgetCancel创建的数据对象。 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQgetCancel.md b/content/zh/docs/Developerguide/PQgetCancel.md index 50f8dcc1d24adb913e2cf08c5a5eb91424aeb1eb..4623e5f8abe29f9919bdcd4685bf9fe2c468b7d1 100644 --- a/content/zh/docs/Developerguide/PQgetCancel.md +++ b/content/zh/docs/Developerguide/PQgetCancel.md @@ -39,5 +39,5 @@ PQgetCancel创建一个给定PGconn连接对象的PGcancel对象。如果给定 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQgetvalue.md b/content/zh/docs/Developerguide/PQgetvalue.md index 301efb9784b7e8a3dc52a495e54668d204897a53..25faf74c3d5adeed75c821470b1e92b340dd5b71 100644 --- a/content/zh/docs/Developerguide/PQgetvalue.md +++ b/content/zh/docs/Developerguide/PQgetvalue.md @@ -51,5 +51,5 @@ char *PQgetvalue(const PGresult *res, ## 示例 -参见:[示例](示例-10.md) +参见:[示例](示例-3.md) diff --git a/content/zh/docs/Developerguide/PQnfields.md b/content/zh/docs/Developerguide/PQnfields.md index f088ea31c0e1e43f82c67f427bed438f26a34be5..d0a6209acf3a7f4affa065091ca15dd7be352dbf 100644 --- a/content/zh/docs/Developerguide/PQnfields.md +++ b/content/zh/docs/Developerguide/PQnfields.md @@ -35,5 +35,5 @@ int类型数字。 ## 示例 -参见:[示例](示例-10.md) +参见:[示例](示例-3.md) diff --git a/content/zh/docs/Developerguide/PQntuples.md b/content/zh/docs/Developerguide/PQntuples.md index 61b41a05b9735ea4b79fa93da25f6e3644717022..f0f715548cf8514ea82c1705cf2cfff909a9f3c0 100644 --- a/content/zh/docs/Developerguide/PQntuples.md +++ b/content/zh/docs/Developerguide/PQntuples.md @@ -35,5 +35,5 @@ int类型数字 ## 示例 -参见:[示例](示例-10.md) +参见:[示例](示例-3.md) diff --git a/content/zh/docs/Developerguide/PQprepare.md b/content/zh/docs/Developerguide/PQprepare.md index 10a3fde906c2cae1e6ec900682681d150bf2ad97..2a4a8f5e1a9130e043ac8005817ebb48f0b0d618 100644 --- a/content/zh/docs/Developerguide/PQprepare.md +++ b/content/zh/docs/Developerguide/PQprepare.md @@ -32,7 +32,7 @@ PGresult *PQprepare(PGconn *conn,

stmtName

-

需要执行的prepare语句。

+

需要执行的stmt名称。

query

@@ -67,5 +67,5 @@ PGresult:包含查询结果的对象指针。 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQreset.md b/content/zh/docs/Developerguide/PQreset.md index 1ccb98dda16492636d5023db236da948437d6414..66a4c4f0b694761e9482f3e78da76c08fb9f6e06 100644 --- a/content/zh/docs/Developerguide/PQreset.md +++ b/content/zh/docs/Developerguide/PQreset.md @@ -35,5 +35,5 @@ void PQreset(PGconn *conn); ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQresultStatus.md b/content/zh/docs/Developerguide/PQresultStatus.md index 3e2dcb310a0947678ba060d0072d4a2fa3759a91..343dc6c5b09b373bc568a148516d0e5ed7c328f0 100644 --- a/content/zh/docs/Developerguide/PQresultStatus.md +++ b/content/zh/docs/Developerguide/PQresultStatus.md @@ -68,11 +68,11 @@ PGresult包含一个来自当前命令的结果元组。 这个状态只在查 ## 注意事项 -- 如果结果状态为PGRES\_TUPLES\_OK或PGRES\_SINGLE\_TUPLE,则可以使用下面描述的函数来检索查询返回的行。请注意,恰好检索到零行的SELECT命令仍然显示PGRES\_TUPLES\_OK。PGRES\_COMMAND\_OK用于永远不能返回行的命令(插入或更新,不带返回子句等)。PGRES\_EMPTY\_QUERY响应可能表明客户端软件存在bug。 +- 请注意,恰好检索到零行的SELECT命令仍然显示PGRES\_TUPLES\_OK。PGRES\_COMMAND\_OK用于永远不能返回行的命令(插入或更新,不带返回子句等)。PGRES\_EMPTY\_QUERY响应可能表明客户端软件存在bug。 - 状态为PGRES\_NONFATAL\_ERROR的结果永远不会由PQexec或其他查询执行函数直接返回,此类结果将传递给通知处理程序。 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQsendPrepare.md b/content/zh/docs/Developerguide/PQsendPrepare.md index 67edd45726431aef6c3e6f407703f5673debd011..15c8acedb59cf931a8c3c0193641d42836b61331 100644 --- a/content/zh/docs/Developerguide/PQsendPrepare.md +++ b/content/zh/docs/Developerguide/PQsendPrepare.md @@ -32,7 +32,7 @@ int PQsendPrepare(PGconn *conn,

stmtName

-

需要执行的prepare语句。

+

需要执行的stmt名称。

query

@@ -63,5 +63,5 @@ int:执行结果为1表示成功,0表示失败,失败原因存到conn-\>er ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQsendQuery.md b/content/zh/docs/Developerguide/PQsendQuery.md index 215695f0f1ee9202c6c2e06a5e5fd1ad181b796b..c569f2b6c91789d0074fe4fc86158d7f6b2929e0 100644 --- a/content/zh/docs/Developerguide/PQsendQuery.md +++ b/content/zh/docs/Developerguide/PQsendQuery.md @@ -44,5 +44,5 @@ int:执行结果为1表示成功,0表示失败,失败原因存到conn-\>er ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQsendQueryParams.md b/content/zh/docs/Developerguide/PQsendQueryParams.md index 871ad31c8bc1ebd1baaa3bd41053b791708c106c..79685db93ab44dfcba13884db09274c07edf814e 100644 --- a/content/zh/docs/Developerguide/PQsendQueryParams.md +++ b/content/zh/docs/Developerguide/PQsendQueryParams.md @@ -77,9 +77,9 @@ int:执行结果为1表示成功,0表示失败,失败原因存到conn-\>er ## 注意事项 -该函数等效于PQsendQuery,只是查询参数可以和查询字串分开声明。函数的参数处理和PQexecParams一样,和PQexecParams类似,它不能在2.0版本的协议连接上工作,并且它只允许在查询字串里出现一条命令。 +该函数等效于PQsendQuery,只是查询参数可以和查询字符串分开声明。函数的参数处理和PQexecParams一样,和PQexecParams类似,它不能在2.0版本的协议连接上工作,并且它只允许在查询字符串里出现一条命令。 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQsendQueryPrepared.md b/content/zh/docs/Developerguide/PQsendQueryPrepared.md index 81e54c5ba221c1eb42795208f4a3936127821296..35320927ee295b5dd306485e7d1df66e9bba25a3 100644 --- a/content/zh/docs/Developerguide/PQsendQueryPrepared.md +++ b/content/zh/docs/Developerguide/PQsendQueryPrepared.md @@ -34,12 +34,12 @@ int PQsendQueryPrepared(PGconn *conn,

stmtName

-

需要执行的prepare语句。

+

需要执行的stmt名称。

nParams

-

参数类型。

+

参数个数。

paramValues

@@ -75,5 +75,5 @@ int:执行结果为1表示成功,0表示失败,失败原因存到conn-\>er ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQsetdbLogin.md b/content/zh/docs/Developerguide/PQsetdbLogin.md index c801b7a56c93a8014030552d7dd8ecea79744c3c..34c4f5a23754fbb0e9185574d48bee2167ae1065 100644 --- a/content/zh/docs/Developerguide/PQsetdbLogin.md +++ b/content/zh/docs/Developerguide/PQsetdbLogin.md @@ -34,12 +34,12 @@ PGconn *PQsetdbLogin(const char *pghost,

pgport

-

主机服务器的端口号,详见链接字符描述的port字段。

+

主机服务器的端口号,详见链接字符描述的port字段。

pgoptions

-

添加命令行选项以在运行时发送到服务器,详见链接字符描述的option字段。

+

添加命令行选项以在运行时发送到服务器,详见链接字符描述的options字段。

pgtty

@@ -49,17 +49,17 @@ PGconn *PQsetdbLogin(const char *pghost,

dbName

-

要链接的数据库名,详见链接字符描述的dbname字段。

+

要链接的数据库名,详见链接字符描述的dbname字段。

login

-

要链接的用户名,详见链接字符章节描述的user字段。

+

要链接的用户名,详见链接字符章节描述的user字段。

pwd

-

如果服务器要求口令认证,所用的口令,详见链接字符描述的password字段。

+

如果服务器要求口令认证,所用的口令,详见链接字符描述的password字段。

@@ -76,5 +76,5 @@ PGconn \*:指向包含链接的对象指针,内存在函数内部申请。 ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PQstatus.md b/content/zh/docs/Developerguide/PQstatus.md index 754b925f81c11202311a944a171b65113f258d7f..f1216578e55ed43970e6f97f8dd4a559c7fbaa63 100644 --- a/content/zh/docs/Developerguide/PQstatus.md +++ b/content/zh/docs/Developerguide/PQstatus.md @@ -65,5 +65,5 @@ CONNECTION_BAD ## 示例 -请参见[示例](示例-10.md)章节。 +请参见[示例](示例-3.md)章节。 diff --git a/content/zh/docs/Developerguide/PREPARE-TRANSACTION.md b/content/zh/docs/Developerguide/PREPARE-TRANSACTION.md index 4e3d538bd8d060a1f2ce95f59145b34bfa597bfa..5e11986e912e6dd1edb1c69bc82e030231264260 100644 --- a/content/zh/docs/Developerguide/PREPARE-TRANSACTION.md +++ b/content/zh/docs/Developerguide/PREPARE-TRANSACTION.md @@ -6,7 +6,7 @@ 在命令之后,事务就不再和当前会话关联了;它的状态完全保存在磁盘上,它被提交成功的可能性非常高,即使是在请求提交之前数据库发生了崩溃也如此。 -一旦准备好了,一个事务就可以在稍后用[COMMIT PREPARED](COMMIT-PREPARED.md#ZH-CN_TOPIC_0242370559)或 [ROLLBACK PREPARED](ROLLBACK-PREPARED.md#ZH-CN_TOPIC_0242370645)命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初执行事务的那个会话。 +一旦准备好了,一个事务就可以在稍后用[COMMIT PREPARED](COMMIT-PREPARED.md)或 [ROLLBACK PREPARED](ROLLBACK-PREPARED.md)命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初执行事务的那个会话。 从发出命令的会话的角度来看,PREPARE TRANSACTION不同于ROLLBACK:在执行它之后,就不再有活跃的当前事务了,并且预备事务的效果无法见到 \(在事务提交的时候其效果会再次可见\)。 @@ -33,5 +33,5 @@ PREPARE TRANSACTION transaction_id; ## 相关链接 -[COMMIT PREPARED](COMMIT-PREPARED.md#ZH-CN_TOPIC_0242370559),[ROLLBACK PREPARED](ROLLBACK-PREPARED.md#ZH-CN_TOPIC_0242370645) +[COMMIT PREPARED](COMMIT-PREPARED.md),[ROLLBACK PREPARED](ROLLBACK-PREPARED.md) diff --git a/content/zh/docs/Developerguide/PREPARE.md b/content/zh/docs/Developerguide/PREPARE.md index ddb5f182104fff21e5dffec363adeb07c5f62fd0..d4c174a68a04db85b9725c2478c07ac46d0f3cc2 100644 --- a/content/zh/docs/Developerguide/PREPARE.md +++ b/content/zh/docs/Developerguide/PREPARE.md @@ -4,7 +4,7 @@ 创建一个预备语句。 -预备语句是服务端的对象,可以用于优化性能。在执行PREPARE语句的时候,指定的查询被解析、分析、重写。当随后发出EXECUTE语句的时候,预备语句被规划和执行。这种设计避免了重复解析、分析工作。PREPARE语句创建后在整个数据库会话期间一直存在,一旦创建成功,即便是在事务块中创建,事务回滚,PREPARE也不会删除。只能通过显式调用[DEALLOCATE](DEALLOCATE.md#ZH-CN_TOPIC_0242370593)进行删除,会话结束时,PREPARE也会自动删除。 +预备语句是服务端的对象,可以用于优化性能。在执行PREPARE语句的时候,指定的查询被解析、分析、重写。当随后发出EXECUTE语句的时候,预备语句被规划和执行。这种设计避免了重复解析、分析工作。PREPARE语句创建后在整个数据库会话期间一直存在,一旦创建成功,即便是在事务块中创建,事务回滚,PREPARE也不会删除。只能通过显式调用[DEALLOCATE](DEALLOCATE.md)进行删除,会话结束时,PREPARE也会自动删除。 ## 注意事项 @@ -37,5 +37,5 @@ PREPARE name [ ( data_type [, ...] ) ] AS statement; ## 相关链接 -[DEALLOCATE](DEALLOCATE.md#ZH-CN_TOPIC_0242370593) +[DEALLOCATE](DEALLOCATE.md) diff --git "a/content/zh/docs/Developerguide/Plan-Hint\350\260\203\344\274\230\346\246\202\350\277\260.md" "b/content/zh/docs/Developerguide/Plan-Hint\350\260\203\344\274\230\346\246\202\350\277\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..d2c327e6d292f1da82376f8bee10e1d40243eebc --- /dev/null +++ "b/content/zh/docs/Developerguide/Plan-Hint\350\260\203\344\274\230\346\246\202\350\277\260.md" @@ -0,0 +1,260 @@ +# Plan Hint调优概述 + +Plan Hint为用户提供了直接影响执行计划生成的手段,用户可以通过指定join顺序,join、scan方法,指定结果行数,等多个手段来进行执行计划的调优,以提升查询的性能。 + +## 功能描述 + +Plan Hint仅支持在SELECT关键字后通过如下形式指定: + +``` +/*+ */ +``` + +可以同时指定多个hint,之间使用空格分隔。hint只能hint当前层的计划,对于子查询计划的hint,需要在子查询的select关键字后指定hint。 + +例如: + +``` +select /*+ */ * from t1, (select /*+ */ from t2) where 1=1; +``` + +其中为外层查询的hint,为内层子查询的hint。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>如果在视图定义(CREATE VIEW)时指定hint,则在该视图每次被应用时会使用该hint。 +>当使用random plan功能(参数plan\_mode\_seed不为0)时,查询指定的plan hint不会被使用。 + +## 支持范围 + +当前版本Plan Hint支持的范围如下,后续版本会进行增强。 + +- 指定Join顺序的Hint - leading hint +- 指定Join方式的Hint,仅支持除semi/anti join,unique plan之外的常用hint。 +- 指定结果集行数的Hint +- 指定Scan方式的Hint,仅支持常用的tablescan,indexscan和indexonlyscan的hint。 +- 指定子链接块名的Hint + +## 注意事项 + +不支持Agg、Sort、Setop和Subplan的hint。 + +## 示例 + +本章节使用同一个语句进行示例,便于Plan Hint支持的各方法作对比,示例语句及不带hint的原计划如下所示: + +``` +create table store +( + s_store_sk integer not null, + s_store_id char(16) not null, + s_rec_start_date date , + s_rec_end_date date , + s_closed_date_sk integer , + s_store_name varchar(50) , + s_number_employees integer , + s_floor_space integer , + s_hours char(20) , + s_manager varchar(40) , + s_market_id integer , + s_geography_class varchar(100) , + s_market_desc varchar(100) , + s_market_manager varchar(40) , + s_division_id integer , + s_division_name varchar(50) , + s_company_id integer , + s_company_name varchar(50) , + s_street_number varchar(10) , + s_street_name varchar(60) , + s_street_type char(15) , + s_suite_number char(10) , + s_city varchar(60) , + s_county varchar(30) , + s_state char(2) , + s_zip char(10) , + s_country varchar(20) , + s_gmt_offset decimal(5,2) , + s_tax_precentage decimal(5,2) , + primary key (s_store_sk) +); +create table store_sales +( + ss_sold_date_sk integer , + ss_sold_time_sk integer , + ss_item_sk integer not null, + ss_customer_sk integer , + ss_cdemo_sk integer , + ss_hdemo_sk integer , + ss_addr_sk integer , + ss_store_sk integer , + ss_promo_sk integer , + ss_ticket_number integer not null, + ss_quantity integer , + ss_wholesale_cost decimal(7,2) , + ss_list_price decimal(7,2) , + ss_sales_price decimal(7,2) , + ss_ext_discount_amt decimal(7,2) , + ss_ext_sales_price decimal(7,2) , + ss_ext_wholesale_cost decimal(7,2) , + ss_ext_list_price decimal(7,2) , + ss_ext_tax decimal(7,2) , + ss_coupon_amt decimal(7,2) , + ss_net_paid decimal(7,2) , + ss_net_paid_inc_tax decimal(7,2) , + ss_net_profit decimal(7,2) , + primary key (ss_item_sk, ss_ticket_number) +); +create table store_returns +( + sr_returned_date_sk integer , + sr_return_time_sk integer , + sr_item_sk integer not null, + sr_customer_sk integer , + sr_cdemo_sk integer , + sr_hdemo_sk integer , + sr_addr_sk integer , + sr_store_sk integer , + sr_reason_sk integer , + sr_ticket_number integer not null, + sr_return_quantity integer , + sr_return_amt decimal(7,2) , + sr_return_tax decimal(7,2) , + sr_return_amt_inc_tax decimal(7,2) , + sr_fee decimal(7,2) , + sr_return_ship_cost decimal(7,2) , + sr_refunded_cash decimal(7,2) , + sr_reversed_charge decimal(7,2) , + sr_store_credit decimal(7,2) , + sr_net_loss decimal(7,2) , + primary key (sr_item_sk, sr_ticket_number) +); +create table customer +( + c_customer_sk integer not null, + c_customer_id char(16) not null, + c_current_cdemo_sk integer , + c_current_hdemo_sk integer , + c_current_addr_sk integer , + c_first_shipto_date_sk integer , + c_first_sales_date_sk integer , + c_salutation char(10) , + c_first_name char(20) , + c_last_name char(30) , + c_preferred_cust_flag char(1) , + c_birth_day integer , + c_birth_month integer , + c_birth_year integer , + c_birth_country varchar(20) , + c_login char(13) , + c_email_address char(50) , + c_last_review_date char(10) , + primary key (c_customer_sk) +); +create table promotion +( + p_promo_sk integer not null, + p_promo_id char(16) not null, + p_start_date_sk integer , + p_end_date_sk integer , + p_item_sk integer , + p_cost decimal(15,2) , + p_response_target integer , + p_promo_name char(50) , + p_channel_dmail char(1) , + p_channel_email char(1) , + p_channel_catalog char(1) , + p_channel_tv char(1) , + p_channel_radio char(1) , + p_channel_press char(1) , + p_channel_event char(1) , + p_channel_demo char(1) , + p_channel_details varchar(100) , + p_purpose char(15) , + p_discount_active char(1) , + primary key (p_promo_sk) +); +create table customer_address +( + ca_address_sk integer not null, + ca_address_id char(16) not null, + ca_street_number char(10) , + ca_street_name varchar(60) , + ca_street_type char(15) , + ca_suite_number char(10) , + ca_city varchar(60) , + ca_county varchar(30) , + ca_state char(2) , + ca_zip char(10) , + ca_country varchar(20) , + ca_gmt_offset decimal(5,2) , + ca_location_type char(20) , + primary key (ca_address_sk) +); +create table item +( + i_item_sk integer not null, + i_item_id char(16) not null, + i_rec_start_date date , + i_rec_end_date date , + i_item_desc varchar(200) , + i_current_price decimal(7,2) , + i_wholesale_cost decimal(7,2) , + i_brand_id integer , + i_brand char(50) , + i_class_id integer , + i_class char(50) , + i_category_id integer , + i_category char(50) , + i_manufact_id integer , + i_manufact char(50) , + i_size char(20) , + i_formulation char(20) , + i_color char(20) , + i_units char(10) , + i_container char(10) , + i_manager_id integer , + i_product_name char(50) , + primary key (i_item_sk) +); +explain +select i_product_name product_name +,i_item_sk item_sk +,s_store_name store_name +,s_zip store_zip +,ad2.ca_street_number c_street_number +,ad2.ca_street_name c_street_name +,ad2.ca_city c_city +,ad2.ca_zip c_zip +,count(*) cnt +,sum(ss_wholesale_cost) s1 +,sum(ss_list_price) s2 +,sum(ss_coupon_amt) s3 +FROM store_sales +,store_returns +,store +,customer +,promotion +,customer_address ad2 +,item +WHERE ss_store_sk = s_store_sk AND +ss_customer_sk = c_customer_sk AND +ss_item_sk = i_item_sk and +ss_item_sk = sr_item_sk and +ss_ticket_number = sr_ticket_number and +c_current_addr_sk = ad2.ca_address_sk and +ss_promo_sk = p_promo_sk and +i_color in ('maroon','burnished','dim','steel','navajo','chocolate') and +i_current_price between 35 and 35 + 10 and +i_current_price between 35 + 1 and 35 + 15 +group by i_product_name +,i_item_sk +,s_store_name +,s_zip +,ad2.ca_street_number +,ad2.ca_street_name +,ad2.ca_city +,ad2.ca_zip +; +``` + +![](figures/zh-cn_image_0253028833.png) + diff --git a/content/zh/docs/Developerguide/Predictor.md b/content/zh/docs/Developerguide/Predictor.md new file mode 100644 index 0000000000000000000000000000000000000000..0cdb7d54c899cd43990b007dc829013878abc642 --- /dev/null +++ b/content/zh/docs/Developerguide/Predictor.md @@ -0,0 +1,13 @@ +# Predictor + +- **[概述](概述-7.md)** + +- **[环境部署](环境部署.md)** + +- **[使用指导](使用指导.md)** + +- **[最佳实践](最佳实践.md)** + +- **[常见问题处理](常见问题处理.md)** + + diff --git a/content/zh/docs/Developerguide/Query-22.md b/content/zh/docs/Developerguide/Query-22.md new file mode 100644 index 0000000000000000000000000000000000000000..7c87ec35d323bca561480c1880a28af95f8c59e7 --- /dev/null +++ b/content/zh/docs/Developerguide/Query-22.md @@ -0,0 +1,74 @@ +# Query + +## instr\_unique\_sql\_count + +**参数说明:**控制系统中unique sql信息实时收集功能。配置为0表示不启用unique sql信息收集功能。 + +该值由大变小将会清空系统中原有的数据重新统计;从小变大不受影响。 + +当系统中产生的unique sql信息大于instr\_unique\_sql\_count时,系统产生的unique sql信息不被统计。 + +该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整形 0\~INT\_MAX + +**默认值**:100 + +## instr\_unique\_sql\_track\_type + +**参数说明:**unique sql记录SQL方式。 + +该参数属于INTERNAL类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**枚举类型 + +- top:只记录顶层SQL。 + +**默认值**:top + +## enable\_instr\_rt\_percentile + +**参数说明:**是否开启计算系统中80%和95%的SQL响应时间的功能 + +该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型 + +- on:表示打开sql响应时间信息计算功能。 +- off:表示关闭sql响应时间信息计算功能。 + +**默认值**:on + +## percentile + +**参数说明:**sql响应时间百分比信息,后台计算线程根据设置的值计算相应的百分比信息。 + +该参数属于INTERNAL类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**字符串。 + +**默认值**:"80,95" + +## instr\_rt\_percentile\_interval + +**参数说明:**sql响应时间信息计算间隔,sql响应时间信息计算功能打开后,后台计算线程每隔设置的时间进行一次计算。 + +该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,0~3600(秒)。 + +**默认值**:10s + +## enable\_instr\_cpu\_timer + +**参数说明:是否捕获sql执行的cpu**时间消耗 。 + +该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**布尔型 + +- on:表示捕获sql执行的cpu时间消耗。 +- off:表示不捕获sql执行的cpu时间消耗。 + +**默认值**:on + diff --git a/content/zh/docs/Developerguide/Query.md b/content/zh/docs/Developerguide/Query.md index 7c87ec35d323bca561480c1880a28af95f8c59e7..f74c2dc9c2f654370f73afc881f13a979e494053 100644 --- a/content/zh/docs/Developerguide/Query.md +++ b/content/zh/docs/Developerguide/Query.md @@ -1,74 +1,31 @@ -# Query +# Query -## instr\_unique\_sql\_count +- **[STATEMENT](STATEMENT.md)** -**参数说明:**控制系统中unique sql信息实时收集功能。配置为0表示不启用unique sql信息收集功能。 +- **[SUMMARY\_STATEMENT](SUMMARY_STATEMENT.md)** -该值由大变小将会清空系统中原有的数据重新统计;从小变大不受影响。 +- **[STATEMENT\_COUNT](STATEMENT_COUNT.md)** -当系统中产生的unique sql信息大于instr\_unique\_sql\_count时,系统产生的unique sql信息不被统计。 +- **[GLOBAL\_STATEMENT\_COUNT](GLOBAL_STATEMENT_COUNT.md)** -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 +- **[SUMMARY\_STATEMENT\_COUNT](SUMMARY_STATEMENT_COUNT.md)** -**取值范围**:整形 0\~INT\_MAX +- **[GLOBAL\_STATEMENT\_COMPLEX\_HISTORY](GLOBAL_STATEMENT_COMPLEX_HISTORY.md)** -**默认值**:100 +- **[GLOBAL\_STATEMENT\_COMPLEX\_HISTORY\_TABLE](GLOBAL_STATEMENT_COMPLEX_HISTORY_TABLE.md)** -## instr\_unique\_sql\_track\_type +- **[GLOBAL\_STATEMENT\_COMPLEX\_RUNTIME](GLOBAL_STATEMENT_COMPLEX_RUNTIME.md)** -**参数说明:**unique sql记录SQL方式。 +- **[STATEMENT\_RESPONSETIME\_PERCENTILE](STATEMENT_RESPONSETIME_PERCENTILE.md)** -该参数属于INTERNAL类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 +- **[STATEMENT\_USER\_COMPLEX\_HISTORY](STATEMENT_USER_COMPLEX_HISTORY.md)** -**取值范围:**枚举类型 +- **[STATEMENT\_COMPLEX\_RUNTIME](STATEMENT_COMPLEX_RUNTIME.md)** -- top:只记录顶层SQL。 +- **[STATEMENT\_COMPLEX\_HISTORY\_TABLE](STATEMENT_COMPLEX_HISTORY_TABLE.md)** -**默认值**:top +- **[STATEMENT\_COMPLEX\_HISTORY](STATEMENT_COMPLEX_HISTORY.md)** -## enable\_instr\_rt\_percentile +- **[STATEMENT\_WLMSTAT\_COMPLEX\_RUNTIME](STATEMENT_WLMSTAT_COMPLEX_RUNTIME.md)** -**参数说明:**是否开启计算系统中80%和95%的SQL响应时间的功能 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -- on:表示打开sql响应时间信息计算功能。 -- off:表示关闭sql响应时间信息计算功能。 - -**默认值**:on - -## percentile - -**参数说明:**sql响应时间百分比信息,后台计算线程根据设置的值计算相应的百分比信息。 - -该参数属于INTERNAL类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**字符串。 - -**默认值**:"80,95" - -## instr\_rt\_percentile\_interval - -**参数说明:**sql响应时间信息计算间隔,sql响应时间信息计算功能打开后,后台计算线程每隔设置的时间进行一次计算。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,0~3600(秒)。 - -**默认值**:10s - -## enable\_instr\_cpu\_timer - -**参数说明:是否捕获sql执行的cpu**时间消耗 。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -- on:表示捕获sql执行的cpu时间消耗。 -- off:表示不捕获sql执行的cpu时间消耗。 - -**默认值**:on diff --git "a/content/zh/docs/Developerguide/Query\346\211\247\350\241\214\346\265\201\347\250\213.md" "b/content/zh/docs/Developerguide/Query\346\211\247\350\241\214\346\265\201\347\250\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..a0f4fc1fba717a09db69a499ae2ef90d5fc88759 --- /dev/null +++ "b/content/zh/docs/Developerguide/Query\346\211\247\350\241\214\346\265\201\347\250\213.md" @@ -0,0 +1,75 @@ +# Query执行流程 + +SQL引擎从接受SQL语句到执行SQL语句需要经历的步骤如[图1](#zh-cn_topic_0237121508_zh-cn_topic_0073320637_zh-cn_topic_0071158048_fig29880521152348)和[表1](#zh-cn_topic_0237121508_zh-cn_topic_0073320637_zh-cn_topic_0071158048_table11198623152535)所示。其中,红色字体部分为DBA可以介入实施调优的环节。 + +**图 1** SQL引擎执行查询类SQL语句的流程 +![](figures/SQL引擎执行查询类SQL语句的流程.png "SQL引擎执行查询类SQL语句的流程") + +**表 1** SQL引擎执行查询类SQL语句的步骤说明 + + + + + + + + + + + + + + + + + + + + + + +

步骤

+

说明

+

1、语法&词法解析

+

按照约定的SQL语句规则,把输入的SQL语句从字符串转化为格式化结构(Stmt)。

+

2、语义解析

+

将“语法&词法解析”输出的格式化结构转化为数据库可以识别的对象。

+

3、查询重写

+

根据规则把“语义解析”的输出等价转化为执行上更为优化的结构。

+

4、查询优化

+

根据“查询重写”的输出和数据库内部的统计信息规划SQL语句具体的执行方式,也就是执行计划。统计信息和GUC参数对查询优化(执行计划)的影响,请参见调优手段之统计信息调优手段之GUC参数

+

5、查询执行

+

根据“查询优化”规划的执行路径执行SQL查询语句。底层存储方式的选择合理性,将影响查询执行效率。详见调优手段之底层存储

+
+ +## 调优手段之统计信息 + +openGauss优化器是典型的基于代价的优化 \(Cost-Based Optimization,简称CBO\)。在这种优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、distinct值、MCV值、HB值等表的特征值,以及一定的代价计算模型,计算出每一个执行步骤的不同执行方式的输出元组数和执行代价\(cost\),进而选出整体执行代价最小/首元组返回代价最小的执行方式进行执行。这些特征值就是统计信息。从上面描述可以看出统计信息是查询优化的核心输入,准确的统计信息将帮助规划器选择最合适的查询规划,一般来说我们通过analyze语法收集整个表或者表的若干个字段的统计信息,周期性地运行ANALYZE,或者在对表的大部分内容做了更改之后马上运行它是个好习惯。 + +## 调优手段之GUC参数 + +查询优化的主要目的是为查询语句选择高效的执行方式。 + +如下SQL语句: + +``` +select count(1) +from customer inner join store_sales on (ss_customer_sk = c_customer_sk); +``` + +在执行customer inner join store\_sales的时候,openGauss支持Nested Loop、Merge Join和Hash Join三种不同的Join方式。优化器会根据表customer和表store\_sales的统计信息估算结果集的大小以及每种join方式的执行代价,然后对比选出执行代价最小的执行计划。 + +正如前面所说,执行代价计算都是基于一定的模型和统计信息进行估算,当因为某些原因代价估算不能反映真实的cost的时候,我们就需要通过guc参数设置的方式让执行计划倾向更优规划。 + +## 调优手段之底层存储 + +openGauss的表支持行存表、列存表,底层存储方式的选择严格依赖于客户的具体业务场景。一般来说计算型业务查询场景\(以关联、聚合操作为主\)建议使用列存表;点查询、大批量UPDATE/DELETE业务场景适合行存表。 + +对于每种存储方式还有对应的存储层优化手段,这部分会在后续的调优章节深入介绍。 + +## 调优手段之SQL重写 + +除了上述干预SQL引擎所生成执行计划的执行性能外,根据数据库的SQL执行机制以及大量的实践发现,有些场景下,在保证客户业务SQL逻辑的前提下,通过一定规则由DBA重写SQL语句,可以大幅度的提升SQL语句的性能。 + +这种调优场景对DBA的要求比较高,需要对客户业务有足够的了解,同时也需要扎实的SQL语句基本功,后续会介绍几个常见的SQL改写场景。 + diff --git a/content/zh/docs/Developerguide/RELEASE-SAVEPOINT.md b/content/zh/docs/Developerguide/RELEASE-SAVEPOINT.md index 55f60f3a27721501bbef3b1e1f4f913ed6bc68e4..5986064068d229863bcdec13aabda7c7303c31d8 100644 --- a/content/zh/docs/Developerguide/RELEASE-SAVEPOINT.md +++ b/content/zh/docs/Developerguide/RELEASE-SAVEPOINT.md @@ -59,5 +59,5 @@ postgres=# DROP TABLE tpcds.table1; ## 相关链接 -[SAVEPOINT](SAVEPOINT.md#ZH-CN_TOPIC_0242370647),[ROLLBACK TO SAVEPOINT](ROLLBACK-TO-SAVEPOINT.md#ZH-CN_TOPIC_0242370646) +[SAVEPOINT](SAVEPOINT.md),[ROLLBACK TO SAVEPOINT](ROLLBACK-TO-SAVEPOINT.md) diff --git a/content/zh/docs/Developerguide/REPLICATION_SLOTS.md b/content/zh/docs/Developerguide/REPLICATION_SLOTS.md new file mode 100644 index 0000000000000000000000000000000000000000..6ead24fd6f56c59bea054c296c605154ff6059ba --- /dev/null +++ b/content/zh/docs/Developerguide/REPLICATION_SLOTS.md @@ -0,0 +1,88 @@ +# REPLICATION\_SLOTS + +REPLICATION\_SLOTS视图用于查看复制节点的信息。 + +**表 1** REPLICATION\_SLOTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

slot_name

+

text

+

复制节点的名称。

+

plugin

+

text

+

插件名称。

+

slot_type

+

text

+

复制节点的类型。

+

datoid

+

oid

+

复制节点的数据库OID。

+

database

+

name

+

复制节点的数据库名称。

+

active

+

boolean

+

复制节点是否为激活状态。

+

xmin

+

xid

+

复制节点事务标识。

+

catalog_xmin

+

xid

+

逻辑复制槽对应的最早解码事务标识。

+

restart_lsn

+

text

+

复制节点的Xlog文件信息。

+

dummy_standby

+

boolean

+

复制节点是否为假备。

+
+ diff --git a/content/zh/docs/Developerguide/REPLICATION_STAT.md b/content/zh/docs/Developerguide/REPLICATION_STAT.md new file mode 100644 index 0000000000000000000000000000000000000000..a8a866fe8aa5a4e3f3c996103352f5eb9ba43eee --- /dev/null +++ b/content/zh/docs/Developerguide/REPLICATION_STAT.md @@ -0,0 +1,123 @@ +# REPLICATION\_STAT + +REPLICATION\_STAT用于描述日志同步状态信息,如发起端发送日志位置,收端接收日志位置等。 + +**表 1** REPLICATION\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

pid

+

bigint

+

线程的PID。

+

usesysid

+

oid

+

用户系统ID。

+

usename

+

name

+

用户名。

+

application_name

+

text

+

程序名称。

+

client_addr

+

inet

+

客户端地址。

+

client_hostname

+

text

+

客户端名。

+

client_port

+

integer

+

客户端端口。

+

backend_start

+

timestamp with time zone

+

程序启动时间。

+

state

+

text

+

日志复制的状态(追赶状态,还是一致的流状态)。

+

sender_sent_location

+

text

+

发送端发送日志位置。

+

receiver_write_location

+

text

+

接收端write日志位置。

+

receiver_flush_location

+

text

+

接收端flush日志位置。

+

receiver_replay_location

+

text

+

接收端replay日志位置。

+

sync_priority

+

integer

+

同步复制的优先级(0表示异步)。

+

sync_state

+

text

+

同步状态(异步复制,同步复制,还是潜在同步者)。

+
+ diff --git "a/content/zh/docs/Developerguide/RETURN-NEXT\345\217\212RETURN-QUERY.md" "b/content/zh/docs/Developerguide/RETURN-NEXT\345\217\212RETURN-QUERY.md" new file mode 100644 index 0000000000000000000000000000000000000000..9862144768e7acf3f67eede3d710115adeed4cfa --- /dev/null +++ "b/content/zh/docs/Developerguide/RETURN-NEXT\345\217\212RETURN-QUERY.md" @@ -0,0 +1,64 @@ +# RETURN NEXT及RETURN QUERY + +## 语法 + +创建函数时需要指定返回值SETOF datatype。 + +return\_next\_clause::= + +![](figures/zh-cn_image_0253403489.png) + +return\_query\_clause::= + +![](figures/zh-cn_image_0253403490.png) + +对以上语法的解释如下: + +当需要函数返回一个集合时,使用RETURN NEXT或者RETURN QUERY向结果集追加结果,然后继续执行函数的下一条语句。随着后续的RETURN NEXT或RETURN QUERY命令的执行,结果集中会有多个结果。函数执行完成后会一起返回所有结果。 + +RETURN NEXT可用于标量和复合数据类型。 + +RETURN QUERY有一种变体RETURN QUERY EXECUTE,后面还可以增加动态查询,通过USING向查询插入参数。 + +## 示例 + +``` +postgres=# CREATE TABLE t1(a int); +postgres=# INSERT INTO t1 VALUES(1),(10); + +--RETURN NEXT +postgres=# 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; +postgres=# call fun_for_return_next(); + a +--- + 1 + 10 +(2 rows) + +-- RETURN QUERY +postgres=# 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; +postgres=# call fun_for_return_query(); + a +--- + 1 + 10 +(2 rows) +``` + diff --git a/content/zh/docs/Developerguide/RETURN.md b/content/zh/docs/Developerguide/RETURN.md new file mode 100644 index 0000000000000000000000000000000000000000..ddfb2c42cd0b47d26464a8ebb81a6c39c4369c9a --- /dev/null +++ b/content/zh/docs/Developerguide/RETURN.md @@ -0,0 +1,17 @@ +# RETURN + +## 语法 + +返回语句的语法请参见[图1](#zh-cn_topic_0237122231_zh-cn_topic_0059778007_f7ff63e01e2a840c69a1c17b91e7dc3eb)。 + +**图 1** return\_clause::= +![](figures/return_clause.jpg "return_clause") + +对以上语法的解释如下: + +用于将控制从存储过程或函数返回给调用者。 + +## 示例 + +请参见调用语句的[示例](调用语句.md#zh-cn_topic_0237122223_zh-cn_topic_0059778001_scfc5c5fdac3e4a11a915ebac95b49f79)。 + diff --git a/content/zh/docs/Developerguide/ROLLBACK-PREPARED.md b/content/zh/docs/Developerguide/ROLLBACK-PREPARED.md index afaceb70ed6b75d0f49edb627095339d22a4edbc..5abfea6b78c213816908cfdb834ffe6021f0a7f8 100644 --- a/content/zh/docs/Developerguide/ROLLBACK-PREPARED.md +++ b/content/zh/docs/Developerguide/ROLLBACK-PREPARED.md @@ -24,5 +24,5 @@ ROLLBACK PREPARED transaction_id ; ## 相关链接 -[COMMIT PREPARED](COMMIT-PREPARED.md#ZH-CN_TOPIC_0242370559),[PREPARE TRANSACTION](PREPARE-TRANSACTION.md#ZH-CN_TOPIC_0242370636)。 +[COMMIT PREPARED](COMMIT-PREPARED.md),[PREPARE TRANSACTION](PREPARE-TRANSACTION.md)。 diff --git a/content/zh/docs/Developerguide/ROLLBACK-TO-SAVEPOINT.md b/content/zh/docs/Developerguide/ROLLBACK-TO-SAVEPOINT.md index bef789e31ea7f46cfd9c99b4798f76a408ed0547..20280d2aedcbc8765e01efd5003be72a5d0b5ce1 100644 --- a/content/zh/docs/Developerguide/ROLLBACK-TO-SAVEPOINT.md +++ b/content/zh/docs/Developerguide/ROLLBACK-TO-SAVEPOINT.md @@ -49,5 +49,5 @@ postgres=# COMMIT; ## 相关链接 -[SAVEPOINT](SAVEPOINT.md#ZH-CN_TOPIC_0242370647),[RELEASE SAVEPOINT](RELEASE-SAVEPOINT.md#ZH-CN_TOPIC_0242370641) +[SAVEPOINT](SAVEPOINT.md),[RELEASE SAVEPOINT](RELEASE-SAVEPOINT.md) diff --git a/content/zh/docs/Developerguide/ROLLBACK.md b/content/zh/docs/Developerguide/ROLLBACK.md index c6fc014ab9373ff980ff01774ea08ec21916420f..8431148e2363696a232430bef40155533373576b 100644 --- a/content/zh/docs/Developerguide/ROLLBACK.md +++ b/content/zh/docs/Developerguide/ROLLBACK.md @@ -8,7 +8,7 @@ ## 注意事项 -如果不在一个事务内部发出ROLLBACK不会有问题,但是将抛出一个警告信息。 +如果不在一个事务内部发出ROLLBACK不会有问题,但是将抛出一个NOTICE信息。 ## 语法格式 diff --git "a/content/zh/docs/Developerguide/Retry\347\256\241\347\220\206.md" "b/content/zh/docs/Developerguide/Retry\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..2c5f19832308e0ca8f1f88297a0fbca39b4e61a7 --- /dev/null +++ "b/content/zh/docs/Developerguide/Retry\347\256\241\347\220\206.md" @@ -0,0 +1,21 @@ +# Retry管理 + +Retry是数据库在SQL或存储过程(包含匿名块)执行失败时,在数据库内部进行重新执行的过程,以提高执行成功率和用户体验。数据库内部通过检查发生错误时的错误码及Retry相关配置,决定是否进行重试。 + +- 失败时回滚之前执行的语句,并重新执行存储过程进行Retry。 + + 示例: + + ``` + postgres=# CREATE OR REPLACE PROCEDURE retry_basic ( IN x INT) + AS + BEGIN + INSERT INTO t1 (a) VALUES (x); + INSERT INTO t1 (a) VALUES (x+1); + END; + / + + postgres=# CALL retry_basic(1); + ``` + + diff --git a/content/zh/docs/Developerguide/SAVEPOINT.md b/content/zh/docs/Developerguide/SAVEPOINT.md index e7c7fb0c6b89dec98d97bf5192b0a1363a3f7e4f..a51bb1913814a72642ce6f534375aa61a1025710 100644 --- a/content/zh/docs/Developerguide/SAVEPOINT.md +++ b/content/zh/docs/Developerguide/SAVEPOINT.md @@ -89,5 +89,5 @@ postgres=# DROP TABLE table2; ## 相关链接 -[RELEASE SAVEPOINT](RELEASE-SAVEPOINT.md#ZH-CN_TOPIC_0242370641),[ROLLBACK TO SAVEPOINT](ROLLBACK-TO-SAVEPOINT.md#ZH-CN_TOPIC_0242370646) +[RELEASE SAVEPOINT](RELEASE-SAVEPOINT.md),[ROLLBACK TO SAVEPOINT](ROLLBACK-TO-SAVEPOINT.md) diff --git "a/content/zh/docs/Developerguide/SEQUENCE\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/SEQUENCE\345\207\275\346\225\260.md" index 67b12ab58a2944ac9460768573b951a4c7bd3b5f..ad9bab787b316633e33d87c72d0e03d0944e5275 100644 --- "a/content/zh/docs/Developerguide/SEQUENCE\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/SEQUENCE\345\207\275\346\225\260.md" @@ -9,9 +9,12 @@ >![](public_sys-resources/icon-note.gif) **说明:** >为了避免从同一个序列获取值的并发事务被阻塞, nextval操作不会回滚;也就是说,一旦一个值已经被抓取, 那么就认为它已经被用过了,并且不会再被返回。 即使该操作处于事务中,当事务之后中断,或者如果调用查询结束不使用该值,也是如此。这种情况将在指定值的顺序中留下未使用的"空洞"。 因此,openGauss序列对象不能用于获得"无间隙"序列。 + >![](public_sys-resources/icon-notice.gif) **须知:** + >nextval函数只能在主机上执行,备机不支持执行此函数。 + 返回类型:bigint - nextval函数有两种调用方式(其中第二种调用方式兼容A DB的语法,目前不支持Sequence命名中有特殊字符"."的情况),如下: + nextval函数有两种调用方式(其中第二种调用方式目前不支持Sequence命名中有特殊字符"."的情况),如下: 示例1: @@ -35,11 +38,11 @@ - currval\(regclass\) - 返回当前会话里最近一次nextval返回的指定的sequence的数值。如果当前会话还没有调用过指定的sequence的nextval,那么调用currval将会报错。需要注意的是,这个函数在默认情况下是不支持的,需要通过设置enable\_beta\_features为true之后,才能使用这个函数。 + 返回当前会话里最近一次nextval返回的指定的sequence的数值。如果当前会话还没有调用过指定的sequence的nextval,那么调用currval将会报错。 返回类型:bigint - currval函数有两种调用方式(其中第二种调用方式兼容A DB的语法,目前不支持Sequence命名中有特殊字符"."的情况),如下: + currval函数有两种调用方式(其中第二种调用方式目前不支持Sequence命名中有特殊字符"."的情况),如下: 示例1: @@ -65,8 +68,6 @@ 描述:返回当前会话里最近一次nextval返回的数值。这个函数等效于currval,只是它不用序列名为参数,它抓取当前会话里面最近一次nextval使用的序列。如果当前会话还没有调用过nextval,那么调用lastval将会报错。 - 需要注意的是,这个函数在默认情况下是不支持的,需要通过设置enable\_beta\_features或者lastval\_supported为true之后,才能使用这个函数。 - 返回类型:bigint 示例: @@ -112,7 +113,10 @@ ``` >![](public_sys-resources/icon-note.gif) **说明:** - >Setval后当前会话及GTM上会立刻生效,但如果其他会话有缓存的序列值,只能等到缓存值用尽才能感知Setval的作用。所以为了避免序列值冲突,setval要谨慎使用。 + >Setval后当前会话会立刻生效,但如果其他会话有缓存的序列值,只能等到缓存值用尽才能感知Setval的作用。所以为了避免序列值冲突,setval要谨慎使用。 >因为序列是非事务的,setval造成的改变不会由于事务的回滚而撤销。 + >![](public_sys-resources/icon-notice.gif) **须知:** + >nextval函数只能在主机上执行,备机不支持执行此函数。 + diff --git a/content/zh/docs/Developerguide/SESSION_CPU_RUNTIME.md b/content/zh/docs/Developerguide/SESSION_CPU_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..233483849527f3df50d2f3c2bd06adaa1654509c --- /dev/null +++ b/content/zh/docs/Developerguide/SESSION_CPU_RUNTIME.md @@ -0,0 +1,88 @@ +# SESSION\_CPU\_RUNTIME + +SESSION\_CPU\_RUNTIME视图显示和当前用户执行复杂作业(正在运行)时的负载管理CPU使用的信息。 + +**表 1** SESSION\_CPU\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库OID。

+

usename

+

name

+

登录到该后端的用户名。

+

pid

+

bigint

+

后端线程ID。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

min_cpu_time

+

bigint

+

语句在数据库节点上的最小CPU时间,单位为ms。

+

max_cpu_time

+

bigint

+

语句在数据库节点上的最大CPU时间,单位为ms。

+

total_cpu_time

+

bigint

+

语句在数据库节点上的CPU总时间,单位为ms。

+

query

+

text

+

正在执行的语句。

+

node_group

+

text

+

语句所属用户对应的逻辑openGauss。

+

top_cpu_dn

+

text

+

cpu使用量topN信息。

+
+ diff --git a/content/zh/docs/Developerguide/SESSION_MEMORY.md b/content/zh/docs/Developerguide/SESSION_MEMORY.md new file mode 100644 index 0000000000000000000000000000000000000000..ee5ca575b37ef55717adcfac7a20c776e104891e --- /dev/null +++ b/content/zh/docs/Developerguide/SESSION_MEMORY.md @@ -0,0 +1,46 @@ +# SESSION\_MEMORY + +统计Session级别的内存使用情况,包含执行作业在数据节点上Postgres线程和Stream线程分配的所有内存,单位为MB。 + +**表 1** SESSION\_MEMORY字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程启动时间+线程标识。

+

init_mem

+

integer

+

当前正在执行作业进入执行器前已分配的内存。

+

used_mem

+

integer

+

当前正在执行作业已分配的内存。

+

peak_mem

+

integer

+

当前正在执行作业已分配的内存峰值。

+
+ diff --git a/content/zh/docs/Developerguide/SESSION_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/SESSION_MEMORY_DETAIL.md new file mode 100644 index 0000000000000000000000000000000000000000..2113cead5e56fd2e574f3208e81b2fe2d5984364 --- /dev/null +++ b/content/zh/docs/Developerguide/SESSION_MEMORY_DETAIL.md @@ -0,0 +1,74 @@ +# SESSION\_MEMORY\_DETAIL + +统计线程的内存使用情况,以MemoryContext节点来统计。 + +**表 1** SESSION\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程启动时间+线程标识。

+

sesstype

+

text

+

线程名称。

+

contextname

+

text

+

内存上下文名称。

+

level

+

smallint

+

内存上下文的重要级别。

+

parent

+

text

+

父级内存上下文名称。

+

totalsize

+

bigint

+

总申请内存大小(单位:字节)。

+

freesize

+

bigint

+

空闲内存大小(单位:字节)。

+

usedsize

+

bigint

+

使用内存大小(单位:字节)。

+
+ diff --git a/content/zh/docs/Developerguide/SESSION_MEMORY_RUNTIME.md b/content/zh/docs/Developerguide/SESSION_MEMORY_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..00aba1813099af2258844ec2a343d3f19ef4b231 --- /dev/null +++ b/content/zh/docs/Developerguide/SESSION_MEMORY_RUNTIME.md @@ -0,0 +1,89 @@ +# SESSION\_MEMORY\_RUNTIME + +SESSION\_MEMORY\_RUNTIME视图显示和当前用户执行复杂作业正在运行时的负载管理内存使用的信息。 + +**表 1** SESSION\_MEMORY\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库OID。

+

usename

+

name

+

登录到该后端的用户名。

+

pid

+

bigint

+

后端线程ID。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

min_peak_memory

+

integer

+

语句在数据库节点上的最小内存峰值大小,单位MB。

+

max_peak_memory

+

integer

+

语句在数据库节点上的最大内存峰值大小,单位MB。

+

spill_info

+

text

+
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘
  • All:数据库节点均下盘
  • [a:b]:数量为b个数据库节点中有a个数据库节点下盘
+
+

query

+

text

+

正在执行的语句。

+

node_group

+

text

+

语句所属用户对应的逻辑openGauss。

+

top_mem_dn

+

text

+

mem使用量topN信息。

+
+ diff --git a/content/zh/docs/Developerguide/SESSION_STAT.md b/content/zh/docs/Developerguide/SESSION_STAT.md new file mode 100644 index 0000000000000000000000000000000000000000..5d716e3a05a5eee177f4eb295be93c2c04da133d --- /dev/null +++ b/content/zh/docs/Developerguide/SESSION_STAT.md @@ -0,0 +1,53 @@ +# SESSION\_STAT + +当前节点以会话线程或AutoVacuum线程为单位,统计会话状态信息。 + +**表 1** SESSION\_STAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程启动时间+线程标识。

+

statid

+

integer

+

统计编号。

+

statname

+

text

+

统计会话名称。

+

statunit

+

text

+

统计会话单位。

+

value

+

bigint

+

统计会话值。

+
+ diff --git a/content/zh/docs/Developerguide/SESSION_STAT_ACTIVITY.md b/content/zh/docs/Developerguide/SESSION_STAT_ACTIVITY.md new file mode 100644 index 0000000000000000000000000000000000000000..3679be5bc63d1f9cda28e48b73cb225c791fa437 --- /dev/null +++ b/content/zh/docs/Developerguide/SESSION_STAT_ACTIVITY.md @@ -0,0 +1,164 @@ +# SESSION\_STAT\_ACTIVITY + +显示当前节点上正在运行的线程相关的信息。 + +**表 1** SESSION\_STAT\_ACTIVITY字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

用户会话在后台连接到的数据库OID。

+

datname

+

name

+

用户会话在后台连接到的数据库名称。

+

pid

+

bigint

+

后台线程ID。

+

usesysid

+

oid

+

登录该后台的用户OID。

+

usename

+

name

+

登录该后台的用户名。

+

application_name

+

text

+

连接到该后台的应用名。

+

client_addr

+

inet

+

连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

+

client_port

+

integer

+

客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。

+

backend_start

+

timestampwith time zone

+

该过程开始的时间,即当客户端连接服务器时间。

+

xact_start

+

timestampwith time zone

+

启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。

+

query_start

+

timestampwith time zone

+

开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。

+

state_change

+

timestampwith time zone

+

上次状态改变的时间。

+

waiting

+

boolean

+

如果后台当前正等待锁则为true。

+

enqueue

+

text

+

该字段不支持

+

+

state

+

text

+
该后台当前总体状态。可能值是:
  • active:后台正在执行一个查询。
  • idle:后台正在等待一个新的客户端命令。
  • idle in transaction:后台在事务中,但是目前无法执行查询。
  • idle in transaction (aborted):这个状态除说明事务中有某个语句导致了错误外,类似于idle in transaction
  • fastpath function call:后台正在执行一个fast-path函数。
  • disabled:如果后台禁用track_activities,则报告这个状态。
    说明:

    普通用户只能查看到自己帐户所对应的会话状态。即其他帐户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空:

    +

    postgres=# SELECT datname, usename, usesysid,state,pid FROM pg_stat_activity;

    +

    datname | usename | usesysid | state | pid

    +

    ----------+---------+----------+--------+-----------------postgres | omm | 10 | |139968752121616

    +

    postgres | omm | 10 | |139968903116560

    +

    db_tpcds | judy | 16398 | active |139968391403280

    +

    postgres | omm | 10 | |139968643069712

    +

    postgres | omm | 10 | |139968680818448

    +

    postgres | joe | 16390 | |139968563377936

    +

    (6 rows)

    +
    +
+
+

resource_pool

+

name

+

用户使用的资源池。

+

query_id

+

bigint

+

查询语句的ID。

+

query

+

text

+

该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

+
+ diff --git a/content/zh/docs/Developerguide/SESSION_TIME.md b/content/zh/docs/Developerguide/SESSION_TIME.md new file mode 100644 index 0000000000000000000000000000000000000000..e0c929e7947e370fa074f1da89d8025c90ca1263 --- /dev/null +++ b/content/zh/docs/Developerguide/SESSION_TIME.md @@ -0,0 +1,46 @@ +# SESSION\_TIME + +用于统计当前节点会话线程的运行时间信息,及各执行阶段所消耗时间。 + +**表 1** SESSION\_TIME字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

sessid

+

text

+

线程启动时间+线程标识。

+

stat_id

+

integer

+

统计编号。

+

stat_name

+

text

+

会话类型名称。

+

value

+

bigint

+

会话值。

+
+ diff --git a/content/zh/docs/Developerguide/SET-CONSTRAINTS.md b/content/zh/docs/Developerguide/SET-CONSTRAINTS.md index 9e8b1c29c7271c4fc8033bacc6a1355128d758df..5cbd6f8660e8599c6fc3514aa945cca1c248b19c 100644 --- a/content/zh/docs/Developerguide/SET-CONSTRAINTS.md +++ b/content/zh/docs/Developerguide/SET-CONSTRAINTS.md @@ -12,7 +12,7 @@ IMMEDIATE约束是在每条语句后面进行检查。DEFERRED约束一直到事 当SET CONSTRAINTS把一个约束从DEFERRED改成IMMEDIATE的时候,新模式反作用式地起作用:任何将在事务结束准备进行的数据修改都将在SET CONSTRAINTS的时候执行检查。如果违反了任何约束,SET CONSTRAINTS都会失败(并且不会修改约束模式)。因此,SET CONSTRAINTS可以用于强制在事务中某一点进行约束检查。 -目前,只有外键约束被该设置影响。检查和唯一约束总是不可推迟的。 +检查和唯一约束总是不可推迟的。 ## 注意事项 diff --git a/content/zh/docs/Developerguide/SET-SESSION-AUTHORIZATION.md b/content/zh/docs/Developerguide/SET-SESSION-AUTHORIZATION.md index 782582dd9d80fa92752ee98261f19b3752362f94..7ec4c6e85018caa00f12637b3eee87a35809f117 100644 --- a/content/zh/docs/Developerguide/SET-SESSION-AUTHORIZATION.md +++ b/content/zh/docs/Developerguide/SET-SESSION-AUTHORIZATION.md @@ -72,5 +72,5 @@ postgres=# DROP USER paul; ## 相关参考 -[SET ROLE](SET-ROLE.md#ZH-CN_TOPIC_0242370652) +[SET ROLE](SET-ROLE.md) diff --git a/content/zh/docs/Developerguide/SET-TRANSACTION.md b/content/zh/docs/Developerguide/SET-TRANSACTION.md index 0cb5566c2580d2d4fd33d55d1ae368e8047443b3..57518249f481b222a99bd4f273ffe18c68f906b7 100644 --- a/content/zh/docs/Developerguide/SET-TRANSACTION.md +++ b/content/zh/docs/Developerguide/SET-TRANSACTION.md @@ -14,7 +14,7 @@ ``` { SET [ LOCAL ] TRANSACTION|SET SESSION CHARACTERISTICS AS TRANSACTION } - { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } + { ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ``` @@ -30,17 +30,16 @@ 取值范围:字符串,要符合标识符的命名规范。 -- **ISOLATION\_LEVEL\_CLAUSE** +- **ISOLATION\_LEVEL** 指定事务隔离级别,该参数决定当一个事务中存在其他并发运行事务时能够看到什么数据。 >![](public_sys-resources/icon-note.gif) **说明:** - >- 在事务中第一个数据修改语句(INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,事务隔离级别就不能再次设置。 + >在事务中第一个数据修改语句(SELECT,INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,事务隔离级别就不能再次设置。 取值范围: - READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 - - READ UNCOMMITTED:读未提交隔离级别,可能会读到未提交的数据。建议这种隔离级别下仅作只读操作,避免造成数据不一致。 - REPEATABLE READ:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 - SERIALIZABLE:openGauss目前功能上不支持此隔离级别,等价于REPEATABLE READ。 diff --git a/content/zh/docs/Developerguide/SHARED_MEMORY_DETAIL.md b/content/zh/docs/Developerguide/SHARED_MEMORY_DETAIL.md new file mode 100644 index 0000000000000000000000000000000000000000..62ed5e58113c53e269565e8b7baae5c01aaafe59 --- /dev/null +++ b/content/zh/docs/Developerguide/SHARED_MEMORY_DETAIL.md @@ -0,0 +1,60 @@ +# SHARED\_MEMORY\_DETAIL + +查询当前节点所有已产生的共享内存上下文的使用信息。 + +**表 1** SHARED\_MEMORY\_DETAIL字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

contextname

+

text

+

内存上下文的名称。

+

level

+

smallint

+

内存上下文的级别。

+

parent

+

text

+

上级内存上下文。

+

totalsize

+

bigint

+

共享内存总大小(单位:字节)。

+

freesize

+

bigint

+

共享内存剩余大小(单位:字节)。

+

usedsize

+

bigint

+

共享内存使用大小(单位:字节)。

+
+ diff --git a/content/zh/docs/Developerguide/SNAPSHOT-SNAPSHOT.md b/content/zh/docs/Developerguide/SNAPSHOT-SNAPSHOT.md new file mode 100644 index 0000000000000000000000000000000000000000..373100888bc3567bc0df658d9eeec627c808506c --- /dev/null +++ b/content/zh/docs/Developerguide/SNAPSHOT-SNAPSHOT.md @@ -0,0 +1,47 @@ +# SNAPSHOT.SNAPSHOT + +SNAPSHOT表记录当前系统中存储的WDR 快照数据的索引信息,开始,结束时间。 + +**表 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

+
+ diff --git a/content/zh/docs/Developerguide/SNAPSHOT-TABLES_SNAP_TIMESTAMP.md b/content/zh/docs/Developerguide/SNAPSHOT-TABLES_SNAP_TIMESTAMP.md new file mode 100644 index 0000000000000000000000000000000000000000..0d3e4b4550b4257950d35e0c6975c44f0f775969 --- /dev/null +++ b/content/zh/docs/Developerguide/SNAPSHOT-TABLES_SNAP_TIMESTAMP.md @@ -0,0 +1,65 @@ +# SNAPSHOT.TABLES\_SNAP\_TIMESTAMP + +TABLES\_SNAP\_TIMESTAMP表记录所有存储的WDR snapshot中数据库,表对象,数据采集的开始,结束时间。 + +**表 1** TABLES\_SNAP\_TIMESTAMP表属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

示例

+

snapshot_id

+

bigint

+

WDR快照序号。

+

1

+

db_name

+

text

+

WDR snapshot对应的database。

+

tpcc1000

+

tablename

+

text

+

WDR snasphot对应的table。

+

snap_xc_statio_all_indexes

+

start_ts

+

timestamp

+

WDR快照的开始时间。

+

2019-12-28 17:11:27.425849+08

+

end_ts

+

timestamp

+

WDR快照的结束时间。

+

2019-12-28 17:11:27.707398+08

+
+ diff --git a/content/zh/docs/Developerguide/SQLAllocConnect.md b/content/zh/docs/Developerguide/SQLAllocConnect.md index c7299f9e01b93c60dddd0c14058b5d3b7cd46e53..2a9c6afcef0907bd008a18ae168dff4eb444f07c 100644 --- a/content/zh/docs/Developerguide/SQLAllocConnect.md +++ b/content/zh/docs/Developerguide/SQLAllocConnect.md @@ -1,4 +1,4 @@ # SQLAllocConnect -在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocConnect已被SQLAllocHandle代替。有关详细信息请参阅[SQLAllocHandle](SQLAllocHandle.md#ZH-CN_TOPIC_0242371438)。 +在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocConnect已被SQLAllocHandle代替。有关详细信息请参阅[SQLAllocHandle](SQLAllocHandle.md)。 diff --git a/content/zh/docs/Developerguide/SQLAllocEnv.md b/content/zh/docs/Developerguide/SQLAllocEnv.md index 193f707f26fd5ab8e5ee40d513f6b4ee5d46009a..5bcbac38f15c696906ce669734ceea7f2f3f0074 100644 --- a/content/zh/docs/Developerguide/SQLAllocEnv.md +++ b/content/zh/docs/Developerguide/SQLAllocEnv.md @@ -1,4 +1,4 @@ # SQLAllocEnv -在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocEnv已被SQLAllocHandle代替。有关详细信息请参阅[SQLAllocHandle](SQLAllocHandle.md#ZH-CN_TOPIC_0242371438)。 +在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocEnv已被SQLAllocHandle代替。有关详细信息请参阅[SQLAllocHandle](SQLAllocHandle.md)。 diff --git a/content/zh/docs/Developerguide/SQLAllocHandle.md b/content/zh/docs/Developerguide/SQLAllocHandle.md index 61075aa1f6d0f8d57df5ae25a7b66324310e4ade..09a3338d34eaa799ae4ca913984d1dfb86377a60 100644 --- a/content/zh/docs/Developerguide/SQLAllocHandle.md +++ b/content/zh/docs/Developerguide/SQLAllocHandle.md @@ -53,9 +53,9 @@ SQLRETURN SQLAllocHandle(SQLSMALLINT HandleType, ## 注意事项 -当分配的句柄并非环境句柄时,如果SQLAllocHandle返回的值为SQL\_ERROR,则它会将OutputHandlePtr的值设置为SQL\_NULL\_HDBC、SQL\_NULL\_HSTMT或SQL\_NULL\_HDESC。之后,通过调用带有适当参数的[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454),其中HandleType和Handle被设置为IntputHandle的值,可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当分配的句柄并非环境句柄时,如果SQLAllocHandle返回的值为SQL\_ERROR,则它会将OutputHandlePtr的值设置为SQL\_NULL\_HDBC、SQL\_NULL\_HSTMT或SQL\_NULL\_HDESC。之后,通过调用带有适当参数的[SQLGetDiagRec](SQLGetDiagRec.md),其中HandleType和Handle被设置为IntputHandle的值,可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLAllocStmt.md b/content/zh/docs/Developerguide/SQLAllocStmt.md index 9bb5f3f908401d99e7f527748de21ebb209b3f3d..ae101f65a4d78cad313fc3abe3e4fdec239ff31a 100644 --- a/content/zh/docs/Developerguide/SQLAllocStmt.md +++ b/content/zh/docs/Developerguide/SQLAllocStmt.md @@ -1,4 +1,4 @@ # SQLAllocStmt -在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocStmt已被SQLAllocHandle代替。有关详细信息请参阅[SQLAllocHandle](SQLAllocHandle.md#ZH-CN_TOPIC_0242371438)。 +在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocStmt已被SQLAllocHandle代替。有关详细信息请参阅[SQLAllocHandle](SQLAllocHandle.md)。 diff --git a/content/zh/docs/Developerguide/SQLBindCol.md b/content/zh/docs/Developerguide/SQLBindCol.md index f377c558ce60607d959414e3254640cf60763837..fc286d0e275d5c6e281f6647e1035108f4b75cf1 100644 --- a/content/zh/docs/Developerguide/SQLBindCol.md +++ b/content/zh/docs/Developerguide/SQLBindCol.md @@ -11,8 +11,8 @@ SQLRETURN SQLBindCol(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, - SQLINTEGER BufferLength, - SQLINTEGER *StrLen_or_IndPtr); + SQLLEN BufferLength, + SQLLEN *StrLen_or_IndPtr); ``` ## 参数 @@ -68,9 +68,9 @@ SQLRETURN SQLBindCol(SQLHSTMT StatementHandle, ## 注意事项 -当SQLBindCol返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当SQLBindCol返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLBindParameter.md b/content/zh/docs/Developerguide/SQLBindParameter.md index 85dee6214748e605301862cde35af448d59573bc..e6a6bb197eba1051c51d41d563b8fe6d55f7434f 100644 --- a/content/zh/docs/Developerguide/SQLBindParameter.md +++ b/content/zh/docs/Developerguide/SQLBindParameter.md @@ -12,11 +12,11 @@ SQLRETURN SQLBindParameter(SQLHSTMT StatementHandle, SQLSMALLINT InputOutputType, SQLSMALLINT ValuetType, SQLSMALLINT ParameterType, - SQLSMALLINT ColumnSize, + SQLULEN ColumnSize, SQLSMALLINT DecimalDigits, SQLPOINTER ParameterValuePtr, - SQLINTEGER BufferLength, - SQLINTEGER *StrLen_or_IndPtr); + SQLLEN BufferLength, + SQLLEN *StrLen_or_IndPtr); ``` ## 参数 @@ -92,9 +92,9 @@ SQLRETURN SQLBindParameter(SQLHSTMT StatementHandle, ## 注意事项 -当SQLBindCol返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当SQLBindParameter返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLColAttribute.md b/content/zh/docs/Developerguide/SQLColAttribute.md index 1f52d6e534a2f5e8cbb4e9b1f901c1309406041a..bb92a7ad7b0faf00b6acba789bba2dd34096c2c8 100644 --- a/content/zh/docs/Developerguide/SQLColAttribute.md +++ b/content/zh/docs/Developerguide/SQLColAttribute.md @@ -13,7 +13,7 @@ SQLRETURN SQLColAttibute(SQLHSTMT StatementHandle, SQLPOINTER CharacterAtrriburePtr, SQLSMALLINT BufferLength, SQLSMALLINT *StringLengthPtr, - SQLPOINTE NumericAttributePtr); + SQLLEN *NumericAttributePtr); ``` ## 参数 @@ -74,9 +74,9 @@ SQLRETURN SQLColAttibute(SQLHSTMT StatementHandle, ## 注意事项 -当SQLColAttribute返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当SQLColAttribute返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLConnect.md b/content/zh/docs/Developerguide/SQLConnect.md index 4bf4003418c7499c512ca68aa0e34035d7a0a242..0fdfbb6d66a3cb5ee046fd301377b9e0d9768855 100644 --- a/content/zh/docs/Developerguide/SQLConnect.md +++ b/content/zh/docs/Developerguide/SQLConnect.md @@ -75,9 +75,9 @@ SQLRETURN SQLConnect(SQLHDBC ConnectionHandle, ## 注意事项 -当调用SQLConnect函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_DBC和ConnectionHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当调用SQLConnect函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_DBC和ConnectionHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLDisconnect.md b/content/zh/docs/Developerguide/SQLDisconnect.md index dd5fa628094921a6137c8a6b3215458cdf2b94de..93bea4108999ebb7b9f48fcce5a37d936d20ad86 100644 --- a/content/zh/docs/Developerguide/SQLDisconnect.md +++ b/content/zh/docs/Developerguide/SQLDisconnect.md @@ -38,9 +38,9 @@ SQLRETURN SQLDisconnect(SQLHDBC ConnectionHandle); ## 注意事项 -当调用SQLDisconnect函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_DBC和ConnectionHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当调用SQLDisconnect函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_DBC和ConnectionHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLExecDirect.md b/content/zh/docs/Developerguide/SQLExecDirect.md index 81e52876521dca3af71b06fa1bef04da47cbfdbd..8e1e16b5643d997e295a23225b06dd3fac623ea7 100644 --- a/content/zh/docs/Developerguide/SQLExecDirect.md +++ b/content/zh/docs/Developerguide/SQLExecDirect.md @@ -53,9 +53,9 @@ SQLRETURN SQLExecDirect(SQLHSTMT StatementHandle, ## 注意事项 -当调用SQLExecDirect函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当调用SQLExecDirect函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLExecute.md b/content/zh/docs/Developerguide/SQLExecute.md index 6a8bbbc9905adc1c5f0efa6c1dce7d47a8fbdfe8..d3f124942cfc41664d776c21d9d3dc1580d9047f 100644 --- a/content/zh/docs/Developerguide/SQLExecute.md +++ b/content/zh/docs/Developerguide/SQLExecute.md @@ -41,9 +41,9 @@ SQLRETURN SQLExecute(SQLHSTMT StatementHandle); ## 注意事项 -当SQLExecute函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,可通过调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当SQLExecute函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,可通过调用[SQLGetDiagRec](SQLGetDiagRec.md)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLFetch.md b/content/zh/docs/Developerguide/SQLFetch.md index 95e8b263bfc46990cd9c6cb4d4b20f1e039973be..f81744555d7bb38a5c37ede0af3bb03d40bc6e63 100644 --- a/content/zh/docs/Developerguide/SQLFetch.md +++ b/content/zh/docs/Developerguide/SQLFetch.md @@ -40,9 +40,9 @@ SQLRETURN SQLFetch(SQLHSTMT StatementHandle); ## 注意事项 -当调用SQLFetch函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当调用SQLFetch函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md)函数,并将HandleType和Handle参数设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLFreeConnect.md b/content/zh/docs/Developerguide/SQLFreeConnect.md index 3b9d2dd6e4a966120d4337c2438902510a5eb114..62b03fac412a737411bca55d6af59e0729958c98 100644 --- a/content/zh/docs/Developerguide/SQLFreeConnect.md +++ b/content/zh/docs/Developerguide/SQLFreeConnect.md @@ -1,4 +1,4 @@ # SQLFreeConnect -在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeConnect已被SQLFreeHandle代替。有关详细信息请参阅[SQLFreeHandle](SQLFreeHandle.md#ZH-CN_TOPIC_0242371450)。 +在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeConnect已被SQLFreeHandle代替。有关详细信息请参阅[SQLFreeHandle](SQLFreeHandle.md)。 diff --git a/content/zh/docs/Developerguide/SQLFreeEnv.md b/content/zh/docs/Developerguide/SQLFreeEnv.md index e3614790ffd12470b7ea5bca67ff5f2db77cbb25..e8b6397b9bc52c0ca1fd7e7953bc776736d35999 100644 --- a/content/zh/docs/Developerguide/SQLFreeEnv.md +++ b/content/zh/docs/Developerguide/SQLFreeEnv.md @@ -1,4 +1,4 @@ # SQLFreeEnv -在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeEnv已被SQLFreeHandle代替。有关详细信息请参阅[SQLFreeHandle](SQLFreeHandle.md#ZH-CN_TOPIC_0242371450)。 +在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeEnv已被SQLFreeHandle代替。有关详细信息请参阅[SQLFreeHandle](SQLFreeHandle.md)。 diff --git a/content/zh/docs/Developerguide/SQLFreeHandle.md b/content/zh/docs/Developerguide/SQLFreeHandle.md index 827b6e1e2bfbce820ce6e67c27325aefa840d541..645e58863acfac7d10d116665a9016d0a5c7e35d 100644 --- a/content/zh/docs/Developerguide/SQLFreeHandle.md +++ b/content/zh/docs/Developerguide/SQLFreeHandle.md @@ -50,5 +50,5 @@ SQLRETURN SQLFreeHandle(SQLSMALLINT HandleType, ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLFreeStmt.md b/content/zh/docs/Developerguide/SQLFreeStmt.md index fcc06bc8eaab538d62467a97bcb6386122d5cb3d..0be4250f08bdc597a5945f1079d4e2666928d0d9 100644 --- a/content/zh/docs/Developerguide/SQLFreeStmt.md +++ b/content/zh/docs/Developerguide/SQLFreeStmt.md @@ -1,4 +1,4 @@ # SQLFreeStmt -在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeStmt已被SQLFreeHandle代替。有关详细信息请参阅[SQLFreeHandle](SQLFreeHandle.md#ZH-CN_TOPIC_0242371450)。 +在ODBC 3.x版本中,ODBC 2.x的函数SQLFreeStmt已被SQLFreeHandle代替。有关详细信息请参阅[SQLFreeHandle](SQLFreeHandle.md)。 diff --git a/content/zh/docs/Developerguide/SQLGetData.md b/content/zh/docs/Developerguide/SQLGetData.md index d720560cce13c7c96595b519232dadeaffde9eab..5fc5a161a6e484cce36b622f50752813d6b8d7e8 100644 --- a/content/zh/docs/Developerguide/SQLGetData.md +++ b/content/zh/docs/Developerguide/SQLGetData.md @@ -70,9 +70,9 @@ SQLRETURN SQLGetData(SQLHSTMT StatementHandle, ## 注意事项 -当调用SQLFetch函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)函数,并将HandleType和Handle参数分别设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当调用SQLGetData函数返回SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md)函数,并将HandleType和Handle参数分别设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLGetDiagRec.md b/content/zh/docs/Developerguide/SQLGetDiagRec.md index f6f5ae63cb72f0cc5521bb4176619550bfa0c639..dcc1a2eb51cfb5410a2142bbda7742f18c8cd81c 100644 --- a/content/zh/docs/Developerguide/SQLGetDiagRec.md +++ b/content/zh/docs/Developerguide/SQLGetDiagRec.md @@ -155,5 +155,5 @@ SQLGetDiagRec不发布自己的诊断记录。它用下列返回值来报告它 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLPrepare.md b/content/zh/docs/Developerguide/SQLPrepare.md index eedc796ba2e0e7740a7d2fe8c53b78ad951e585c..179ee5dd731bad52552776698e7604f63eea8add 100644 --- a/content/zh/docs/Developerguide/SQLPrepare.md +++ b/content/zh/docs/Developerguide/SQLPrepare.md @@ -51,9 +51,9 @@ SQLRETURN SQLPrepare(SQLHSTMT StatementHandle, ## 注意事项 -当SQLPrepare返回的值为SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)函数,并将HandleType和Handle参数分别设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当SQLPrepare返回的值为SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过调用[SQLGetDiagRec](SQLGetDiagRec.md)函数,并将HandleType和Handle参数分别设置为SQL\_HANDLE\_STMT和StatementHandle,可得到一个相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLSetConnectAttr.md b/content/zh/docs/Developerguide/SQLSetConnectAttr.md index db4f85d7373a019d556d679faf24238671739fc6..37763929d458d6651058fdaae0b93ea5829ca5c6 100644 --- a/content/zh/docs/Developerguide/SQLSetConnectAttr.md +++ b/content/zh/docs/Developerguide/SQLSetConnectAttr.md @@ -56,9 +56,9 @@ SQLRETURN SQLSetConnectAttr(SQLHDBC ConnectionHandle ## 注意事项 -当SQLSetConnectAttr的返回值为SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过借助SQL\_HANDLE\_DBC的HandleType和ConnectionHandle的Handle,调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当SQLSetConnectAttr的返回值为SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过借助SQL\_HANDLE\_DBC的HandleType和ConnectionHandle的Handle,调用[SQLGetDiagRec](SQLGetDiagRec.md)可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLSetEnvAttr.md b/content/zh/docs/Developerguide/SQLSetEnvAttr.md index bd3551d4513971ae761a49819fa3d2c8b93b1780..41259509bd956fd1ceeaeeed29fdbc8fffb1ce98 100644 --- a/content/zh/docs/Developerguide/SQLSetEnvAttr.md +++ b/content/zh/docs/Developerguide/SQLSetEnvAttr.md @@ -57,9 +57,9 @@ SQLRETURN SQLSetEnvAttr(SQLHENV EnvironmentHandle ## 注意事项 -当SQLSetEnvAttr的返回值为SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过借助SQL\_HANDLE\_ENV的HandleType和EnvironmentHandle的Handle,调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当SQLSetEnvAttr的返回值为SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过借助SQL\_HANDLE\_ENV的HandleType和EnvironmentHandle的Handle,调用[SQLGetDiagRec](SQLGetDiagRec.md)可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git a/content/zh/docs/Developerguide/SQLSetStmtAttr.md b/content/zh/docs/Developerguide/SQLSetStmtAttr.md index c080ea01b3f8016e920f852578f70f418f3d01e5..fb958e2f72c860d416b03ac94cc7fe4f6b3338c7 100644 --- a/content/zh/docs/Developerguide/SQLSetStmtAttr.md +++ b/content/zh/docs/Developerguide/SQLSetStmtAttr.md @@ -56,9 +56,9 @@ SQLRETURN SQLSetStmtAttr(SQLHSTMT StatementHandle ## 注意事项 -当SQLSetStmtAttr的返回值为SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过借助SQL\_HANDLE\_STMT的HandleType和StatementHandle的Handle,调用[SQLGetDiagRec](SQLGetDiagRec.md#ZH-CN_TOPIC_0242371454)可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 +当SQLSetStmtAttr的返回值为SQL\_ERROR或SQL\_SUCCESS\_WITH\_INFO时,通过借助SQL\_HANDLE\_STMT的HandleType和StatementHandle的Handle,调用[SQLGetDiagRec](SQLGetDiagRec.md)可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。 ## 示例 -参见:[示例](示例.md#ZH-CN_TOPIC_0242377033) +参见:[示例](示例-2.md) diff --git "a/content/zh/docs/Developerguide/SQL\345\217\202\350\200\203.md" "b/content/zh/docs/Developerguide/SQL\345\217\202\350\200\203.md" index 5599c7dfd70acd1afcde9f93a19bf063c8e2e9f2..639bee67cd7f81630a3bab310f160bee1b535656 100644 --- "a/content/zh/docs/Developerguide/SQL\345\217\202\350\200\203.md" +++ "b/content/zh/docs/Developerguide/SQL\345\217\202\350\200\203.md" @@ -28,6 +28,6 @@ - **[SQL语法](SQL语法.md)** -- **[附录](附录-16.md)** +- **[附录](附录.md)** diff --git "a/content/zh/docs/Developerguide/SQL\346\211\247\350\241\214\350\256\241\345\210\222\344\273\213\347\273\215.md" "b/content/zh/docs/Developerguide/SQL\346\211\247\350\241\214\350\256\241\345\210\222\344\273\213\347\273\215.md" new file mode 100644 index 0000000000000000000000000000000000000000..22c4793e800ad0d5e222fe69dfdd128dd65f4612 --- /dev/null +++ "b/content/zh/docs/Developerguide/SQL\346\211\247\350\241\214\350\256\241\345\210\222\344\273\213\347\273\215.md" @@ -0,0 +1,7 @@ +# SQL执行计划介绍 + +- **[SQL执行计划概述](SQL执行计划概述.md)** + +- **[详解](详解.md)** + + diff --git "a/content/zh/docs/Developerguide/SQL\346\211\247\350\241\214\350\256\241\345\210\222\346\246\202\350\277\260.md" "b/content/zh/docs/Developerguide/SQL\346\211\247\350\241\214\350\256\241\345\210\222\346\246\202\350\277\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..dc4aee1493a511903f9133896e6d49cedf725bce --- /dev/null +++ "b/content/zh/docs/Developerguide/SQL\346\211\247\350\241\214\350\256\241\345\210\222\346\246\202\350\277\260.md" @@ -0,0 +1,27 @@ +# SQL执行计划概述 + +SQL执行计划是一个节点树,显示openGauss执行一条SQL语句时执行的详细步骤。每一个步骤为一个数据库运算符。 + +使用EXPLAIN命令可以查看优化器为每个查询生成的具体执行计划。EXPLAIN给每个执行节点都输出一行,显示基本的节点类型和优化器为执行这个节点预计的开销值。如[图1](#zh-cn_topic_0237121510_zh-cn_topic_0073548187_zh-cn_topic_0040046537_fig27100601101634)所示。 + +**图 1** SQL执行计划示例 +![](figures/SQL执行计划示例.png "SQL执行计划示例") + +- 最底层节点是表扫描节点,它扫描表并返回原始数据行。不同的表访问模式有不同的扫描节点类型:顺序扫描、索引扫描等。最底层节点的扫描对象也可能是非表行数据(不是直接从表中读取的数据),如VALUES子句和返回行集的函数,它们有自己的扫描节点类型。 +- 如果查询需要连接、聚集、排序、或者对原始行做其它操作,那么就会在扫描节点之上添加其它节点。 并且这些操作通常都有多种方法,因此在这些位置也有可能出现不同的执行节点类型。 +- 第一行\(最上层节点\)是执行计划总执行开销的预计。这个数值就是优化器试图最小化的数值。 + +## 执行计划显示信息 + +除了设置不同的执行计划显示格式外,还可以通过不同的EXPLAIN用法,显示不同详细程度的执行计划信息。常见有如下几种,关于更多用法请参见[EXPLAIN](EXPLAIN.md)语法说明。 + +- EXPLAIN _statement_: 只生成执行计划,不实际执行。其中statement代表SQL语句。 +- EXPLAIN ANALYZE _statement_:生成执行计划,进行执行,并显示执行的概要信息。显示中加入了实际的运行时间统计,包括在每个规划节点内部花掉的总时间\(以毫秒计\)和它实际返回的行数。 +- EXPLAIN PERFORMANCE _statement_:生成执行计划,进行执行,并显示执行期间的全部信息。 + +为了测量运行时在执行计划中每个节点的开销,EXPLAIN ANALYZE或EXPLAIN PERFORMANCE会在当前查询执行上增加性能分析的开销。在一个查询上运行EXPLAIN ANALYZE或EXPLAIN PERFORMANCE有时会比普通查询明显的花费更多的时间。超支的数量依赖于查询的本质和使用的平台。 + +因此,当定位SQL运行慢问题时,如果SQL长时间运行未结束,建议通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出来,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及其实际的运行信息,以便更精准地定位问题原因。 + +EXPLAIN PERFORMANCE轻量化执行方式与EXPLAIN PERFORMANCE保持一致,在原来的基础上减少了性能分析的时间,执行时间与SQL执行时间的差异显著减少。 + diff --git "a/content/zh/docs/Developerguide/SQL\350\207\252\350\257\212\346\226\255.md" "b/content/zh/docs/Developerguide/SQL\350\207\252\350\257\212\346\226\255.md" new file mode 100644 index 0000000000000000000000000000000000000000..5712b50719658ca81ce17f02227f7ec0f6e3bc93 --- /dev/null +++ "b/content/zh/docs/Developerguide/SQL\350\207\252\350\257\212\346\226\255.md" @@ -0,0 +1,54 @@ +# SQL自诊断 + +用户在执行查询或者执行INSERT/DELETE/UPDATE/CREATE TABLE AS语句时,可能会遇到性能问题。这种情况下,通过查询[GS\_WLM\_SESSION\_STATISTICS](GS_WLM_SESSION_STATISTICS.md),[GS\_WLM\_SESSION\_HISTORY](GS_WLM_SESSION_HISTORY.md),[GS\_WLM\_SESSION\_QUERY\_INFO\_ALL](GS_WLM_SESSION_QUERY_INFO_ALL.md)视图的warning字段可以获得对应查询可能导致性能问题的告警信息,为性能调优提供参考。 + +SQL自诊断的告警类型与[resource\_track\_level](负载管理.md#zh-cn_topic_0237124729_section153571329142612)的设置有关系。如果resource\_track\_level设置为query,则可以诊断多列/单列统计信息未收集和SQL不下推的告警。如果resource\_track\_level设置为operator,则可以诊断所有的告警场景。 + +SQL自诊断的诊断范围与[resource\_track\_cost](负载管理.md#zh-cn_topic_0237124729_section1089022732713)的设置有关系。当SQL的代价大于resource\_track\_cost时,SQL才会被诊断。SQL的代价可以通过explain来确认。 + +## 告警场景 + +目前支持对多列/单列统计信息未收集导致性能问题的场景上报告警。 + +如果存在单列或者多列统计信息未收集,则上报相关告警。调优方法可以参考[更新统计信息](更新统计信息.md)和[统计信息调优](统计信息调优.md)。 + +告警信息示例: + +整表的统计信息未收集: + +``` +Statistic Not Collect: + schema_test.t1 +``` + +单列统计信息未收集: + +``` +Statistic Not Collect: + schema_test.t2(c1,c2) +``` + +多列统计信息未收集: + +``` +Statistic Not Collect: + schema_test.t3((c1,c2)) +``` + +单列和多列统计信息未收集: + +``` +Statistic Not Collect: + schema_test.t4(c1,c2) schema_test.t4((c1,c2)) +``` + +## 规格约束 + +1. 告警字符串长度上限为2048。如果告警信息超过这个长度(例如存在大量未收集统计信息的超长表名,列名等信息)则不告警,只上报warning: + + ``` + WARNING, "Planner issue report is truncated, the rest of planner issues will be skipped" + ``` + +2. 如果query存在limit节点(即查询语句中包含limit),则不会上报limit节点以下的Operator级别的告警。 + diff --git "a/content/zh/docs/Developerguide/SQL\350\257\255\346\263\225.md" "b/content/zh/docs/Developerguide/SQL\350\257\255\346\263\225.md" index 284266fcb2cbc31d5ad9ef9dbd9378ab860664db..067f51a67fbb0e9ae93a8b524b120603d190b63a 100644 --- "a/content/zh/docs/Developerguide/SQL\350\257\255\346\263\225.md" +++ "b/content/zh/docs/Developerguide/SQL\350\257\255\346\263\225.md" @@ -28,6 +28,8 @@ - **[ALTER SESSION](ALTER-SESSION.md)** +- **[ALTER SYNONYM](ALTER-SYNONYM.md)** + - **[ALTER SYSTEM KILL SESSION](ALTER-SYSTEM-KILL-SESSION.md)** - **[ALTER TABLE](ALTER-TABLE.md)** @@ -80,7 +82,7 @@ - **[CREATE INDEX](CREATE-INDEX.md)** -- **[CREATE ROW LEVLEL SECURITY POLICY](CREATE-ROW-LEVLEL-SECURITY-POLICY.md)** +- **[CREATE ROW LEVEL SECURITY POLICY](CREATE-ROW-LEVEL-SECURITY-POLICY.md)** - **[CREATE PROCEDURE](CREATE-PROCEDURE.md)** @@ -90,6 +92,8 @@ - **[CREATE SEQUENCE](CREATE-SEQUENCE.md)** +- **[CREATE SYNONYM](CREATE-SYNONYM.md)** + - **[CREATE TABLE](CREATE-TABLE.md)** - **[CREATE TABLE AS](CREATE-TABLE-AS.md)** @@ -144,6 +148,8 @@ - **[DROP SEQUENCE](DROP-SEQUENCE.md)** +- **[DROP SYNONYM](DROP-SYNONYM.md)** + - **[DROP TABLE](DROP-TABLE.md)** - **[DROP TABLESPACE](DROP-TABLESPACE.md)** diff --git "a/content/zh/docs/Developerguide/SQL\350\260\203\344\274\230\345\205\263\351\224\256\345\217\202\346\225\260\350\260\203\346\225\264.md" "b/content/zh/docs/Developerguide/SQL\350\260\203\344\274\230\345\205\263\351\224\256\345\217\202\346\225\260\350\260\203\346\225\264.md" new file mode 100644 index 0000000000000000000000000000000000000000..b7ca1c8d8af9f5e0c5c1d8ff77ef28fc35312d1d --- /dev/null +++ "b/content/zh/docs/Developerguide/SQL\350\260\203\344\274\230\345\205\263\351\224\256\345\217\202\346\225\260\350\260\203\346\225\264.md" @@ -0,0 +1,74 @@ +# SQL调优关键参数调整 + +本节将介绍影响openGauss SQL调优性能的关键数据库主节点配置参数,配置方法参见[配置运行参数](配置运行参数.md)。 + +**表 1** 数据库主节点配置参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数/参考值

+

描述

+

enable_nestloop=on

+

控制查询优化器对嵌套循环连接(Nest Loop Join)类型的使用。当设置为“on”后,优化器优先使用Nest Loop Join;当设置为“off”后,优化器在存在其他方法时将优先选择其他方法。

+
说明:

如果只需要在当前数据库连接(即当前Session)中临时更改该参数值,则只需要在SQL语句中执行如下命令:

+
SET enable_nestloop to off;
+
+

此参数默认设置为“on”,但实际调优中应根据情况选择是否关闭。一般情况下,在三种join方式(Nested Loop、Merge Join和Hash Join)里,Nested Loop性能较差,实际调优中可以选择关闭。

+

enable_bitmapscan=on

+

控制查询优化器对位图扫描规划类型的使用。设置为“on”,表示使用;设置为“off”,表示不使用。

+
说明:

如果只需要在当前数据库连接(即当前Session)中临时更改该参数值,则只需要在SQL语句中执行命令如下命令:

+
SET enable_bitmapscan to off;
+
+

bitmapscan扫描方式适用于“where a > 1 and b > 1”且a列和b列都有索引这种查询条件,但有时其性能不如indexscan。因此,现场调优如发现查询性能较差且计划中有bitmapscan算子,可以关闭bitmapscan,看性能是否有提升。

+

enable_hashagg=on

+

控制优化器对Hash聚集规划类型的使用。

+

enable_hashjoin=on

+

控制优化器对Hash连接规划类型的使用。

+

enable_mergejoin=on

+

控制优化器对融合连接规划类型的使用。

+

enable_indexscan=on

+

控制优化器对索引扫描规划类型的使用。

+

enable_indexonlyscan=on

+

控制优化器对仅索引扫描规划类型的使用。

+

enable_seqscan=on

+

控制优化器对顺序扫描规划类型的使用。完全消除顺序扫描是不可能的,但是关闭这个变量会让优化器在存在其他方法的时候优先选择其他方法。

+

enable_sort=on

+

控制优化器使用的排序步骤。该设置不可能完全消除明确的排序,但是关闭这个变量可以让优化器在存在其他方法的时候优先选择其他方法。

+

rewrite_rule

+

控制优化器是否启用LAZY_AGG和MAGIC_SET重写规则。

+
+ diff --git "a/content/zh/docs/Developerguide/SQL\350\260\203\344\274\230\346\214\207\345\215\227.md" "b/content/zh/docs/Developerguide/SQL\350\260\203\344\274\230\346\214\207\345\215\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..44bc5544810db509eb646be213f5c21ed35a3138 --- /dev/null +++ "b/content/zh/docs/Developerguide/SQL\350\260\203\344\274\230\346\214\207\345\215\227.md" @@ -0,0 +1,25 @@ +# SQL调优指南 + +SQL调优的唯一目的是“资源利用最大化”,即CPU、内存、磁盘IO三种资源利用最大化。所有调优手段都是围绕资源使用开展的。所谓资源利用最大化是指SQL语句尽量高效,节省资源开销,以最小的代价实现最大的效益。比如做典型点查询的时候,可以用seqscan+filter\(即读取每一条元组和点查询条件进行匹配\)实现,也可以通过indexscan实现,显然indexscan可以以更小的代价实现相同的效果。 + +根据硬件资源和客户的业务特征确定合理的openGauss部署方案和表定义是数据库在多数情况下满足性能要求的基础。下文的调优说明假设您已根据“软件安装”指引在安装过程中按照合理的openGauss方案完成了安装,且已经根据“开发设计建议”的指引进行了数据库设计。 + +- **[Query执行流程](Query执行流程.md)** + +- **[SQL执行计划介绍](SQL执行计划介绍.md)** + +- **[调优流程](调优流程.md)** + +- **[更新统计信息](更新统计信息.md)** + +- **[审视和修改表定义](审视和修改表定义.md)** + +- **[典型SQL调优点](典型SQL调优点.md)** + +- **[经验总结:SQL语句改写规则](经验总结-SQL语句改写规则.md)** + +- **[SQL调优关键参数调整](SQL调优关键参数调整.md)** + +- **[使用Plan Hint进行调优](使用Plan-Hint进行调优.md)** + + diff --git "a/content/zh/docs/Developerguide/SSL\350\257\201\344\271\246\347\256\241\347\220\206.md" "b/content/zh/docs/Developerguide/SSL\350\257\201\344\271\246\347\256\241\347\220\206.md" index a0916fa9c1c1295878a723cf56255ace4059aa9d..ff1f3891b6805842a6d8ca45d268a5a1414e5fd1 100644 --- "a/content/zh/docs/Developerguide/SSL\350\257\201\344\271\246\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Developerguide/SSL\350\257\201\344\271\246\347\256\241\347\220\206.md" @@ -1,4 +1,4 @@ -# SSL证书管理 +# SSL证书管理 openGauss默认配置了通过openssl生成的安全证书、私钥。并且提供证书替换的接口,方便用户进行证书的替换。 diff --git a/content/zh/docs/Developerguide/START-TRANSACTION.md b/content/zh/docs/Developerguide/START-TRANSACTION.md index cab33dd78f4b88bd8a91247e423494c94854bdb2..d986e36a2a3d377b2f48b45abe4b7e88849ed58b 100644 --- a/content/zh/docs/Developerguide/START-TRANSACTION.md +++ b/content/zh/docs/Developerguide/START-TRANSACTION.md @@ -16,7 +16,7 @@ START TRANSACTION [ { - ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } + ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ]; @@ -28,7 +28,7 @@ START TRANSACTION BEGIN [ WORK | TRANSACTION ] [ { - ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } + ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ]; @@ -45,12 +45,11 @@ BEGIN [ WORK | TRANSACTION ] 指定事务隔离级别,它决定当一个事务中存在其他并发运行事务时它能够看到什么数据。 >![](public_sys-resources/icon-note.gif) **说明:** - >在事务中第一个数据修改语句(INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,事务隔离级别就不能再次设置。 + >在事务中第一个数据修改语句(SELECT, INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,事务隔离级别就不能再次设置。 取值范围: - READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 - - READ UNCOMMITTED:读未提交隔离级别,可能会读到未提交的数据。建议这种隔离级别下仅作只读操作,避免造成数据不一致。 - REPEATABLE READ: 可重复读隔离级别,仅仅看到事务开始之前提交的数据,它不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 - SERIALIZABLE:openGauss目前功能上不支持此隔离级别,等价于REPEATABLE READ。 diff --git a/content/zh/docs/Developerguide/STATEMENT.md b/content/zh/docs/Developerguide/STATEMENT.md new file mode 100644 index 0000000000000000000000000000000000000000..6be47787bf60fbb230b9cc2a06e33c54aaa4f69c --- /dev/null +++ b/content/zh/docs/Developerguide/STATEMENT.md @@ -0,0 +1,228 @@ +# STATEMENT + +获得当前节点的执行语句\(归一化SQL\)的信息。查询视图必须具有sysadmin权限。数据库主节点上可以看到此数据库主节点接收到的归一化的SQL的全量统计信息(包含数据库节点);数据库节点上仅可看到归一化的SQL的此节点执行的统计信息。 + +**表 1** STATEMENT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

node_id

+

integer

+

节点的ID(pgxc_node中的node_id)。

+

user_name

+

name

+

用户名称。

+

user_id

+

oid

+

用户OID。

+

unique_sql_id

+

bigint

+

归一化的SQL ID。

+

query

+

text

+

归一化的SQL。

+

n_calls

+

bigint

+

调用次数。

+

min_elapse_time

+

bigint

+

SQL在内核内的最小运行时间(单位:微秒)。

+

max_elapse_time

+

bigint

+

SQL在内核内的最大运行时间(单位:微秒)。

+

total_elapse_time

+

bigint

+

SQL在内核内的总运行时间(单位:微秒)。

+

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

+

buffer的块访问次数。

+

n_blocks_hit

+

bigint

+

buffer的块命中次数。

+

n_soft_parse

+

bigint

+

软解析次数,n_soft_parse + n_hard_parse可能大于n_calls,因为子查询未计入n_calls。

+

n_hard_parse

+

bigint

+

硬解析次数,n_soft_parse + n_hard_parse可能大于n_calls,因为子查询未计入n_calls。

+

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上的时间花费(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/STATEMENT_COMPLEX_HISTORY.md b/content/zh/docs/Developerguide/STATEMENT_COMPLEX_HISTORY.md new file mode 100644 index 0000000000000000000000000000000000000000..67b1f1b0ebca09705da78f791323c2bb96a56f48 --- /dev/null +++ b/content/zh/docs/Developerguide/STATEMENT_COMPLEX_HISTORY.md @@ -0,0 +1,4 @@ +# STATEMENT\_COMPLEX\_HISTORY + +STATEMENT\_COMPLEX\_HISTORY视图显示在数据库主节点上执行作业结束后的负载管理记录。此视图的数据直接从系统表[GS\_WLM\_SESSION\_QUERY\_INFO\_ALL](GS_WLM_SESSION_QUERY_INFO_ALL.md)获取。具体的字段请参考[表1](GS_WLM_SESSION_HISTORY.md#zh-cn_topic_0237122397_zh-cn_topic_0112535431_table75981925115018)。 + diff --git a/content/zh/docs/Developerguide/STATEMENT_COMPLEX_HISTORY_TABLE.md b/content/zh/docs/Developerguide/STATEMENT_COMPLEX_HISTORY_TABLE.md new file mode 100644 index 0000000000000000000000000000000000000000..050352bd6500f178a9e5245d0d4d15dfaaddd6cf --- /dev/null +++ b/content/zh/docs/Developerguide/STATEMENT_COMPLEX_HISTORY_TABLE.md @@ -0,0 +1,4 @@ +# STATEMENT\_COMPLEX\_HISTORY\_TABLE + +STATEMENT\_COMPLEX\_HISTORY\_TABLE系统表显示数据库主节点执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。具体的字段请参考[表1](GS_WLM_SESSION_HISTORY.md#zh-cn_topic_0237122397_zh-cn_topic_0112535431_table75981925115018)。 + diff --git a/content/zh/docs/Developerguide/STATEMENT_COMPLEX_RUNTIME.md b/content/zh/docs/Developerguide/STATEMENT_COMPLEX_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..baeb4676bab7455e1c1bcf030552ccb4617b2c83 --- /dev/null +++ b/content/zh/docs/Developerguide/STATEMENT_COMPLEX_RUNTIME.md @@ -0,0 +1,356 @@ +# STATEMENT\_COMPLEX\_RUNTIME + +STATEMENT\_COMPLEX\_RUNTIME视图显示当前用户在数据库主节点上正在执行的作业的负载管理记录。 + +**表 1** STATEMENT\_COMPLEX\_RUNTIME的字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据OID。

+

dbname

+

name

+

连接后端的数据库名称。

+

schemaname

+

text

+

模式的名称。

+

nodename

+

text

+

数据库进程名称

+

username

+

name

+

连接到后端的用户名。

+

application_name

+

text

+

连接到后端的应用名。

+

client_addr

+

inet

+

连接到后端的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。

+

client_hostname

+

text

+

客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。

+

client_port

+

integer

+

客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。

+

query_band

+

text

+

用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。

+

pid

+

bigint

+

后端线程ID。

+

block_time

+

bigint

+

语句执行前的阻塞时间,单位ms。

+

start_time

+

timestamp with time zone

+

语句执行的开始时间。

+

duration

+

bigint

+

语句已经执行的时间,单位ms。

+

estimate_total_time

+

bigint

+

语句执行预估总时间,单位ms。

+

estimate_left_time

+

bigint

+

语句执行预估剩余时间,单位ms。

+

enqueue

+

text

+

工作负载管理资源状态。

+

resource_pool

+

name

+

用户使用的资源池。

+

control_group

+

text

+

语句所使用的Cgroup。

+

estimate_memory

+

integer

+

语句预估使用内存,单位MB。

+

min_peak_memory

+

integer

+

语句在数据库节点上的最小内存峰值,单位MB。

+

max_peak_memory

+

integer

+

语句在数据库节点上的最大内存峰值,单位MB。

+

average_peak_memory

+

integer

+

语句执行过程中的内存使用平均值,单位MB。

+

memory_skew_percent

+

integer

+

语句在数据库节点间的内存使用倾斜率。

+

spill_info

+

text

+
语句在数据库节点上的下盘信息:
  • None:数据库节点均未下盘。
  • All:数据库节点均下盘。
  • [a:b]:数量为b个数据库节点中有a个数据库节点下盘。
+
+

min_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最小数据量,单位MB,默认为0。

+

max_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的最大数据量,单位MB,默认为0。

+

average_spill_size

+

integer

+

若发生下盘,数据库节点上下盘的平均数据量,单位MB,默认为0。

+

spill_skew_percent

+

integer

+

若发生下盘,数据库节点间下盘倾斜率。

+

min_dn_time

+

bigint

+

语句在数据库节点上的最小执行时间,单位ms。

+

max_dn_time

+

bigint

+

语句在数据库节点上的最大执行时间,单位ms。

+

average_dn_time

+

bigint

+

语句在数据库节点上的平均执行时间,单位ms。

+

dntime_skew_percent

+

integer

+

语句在数据库节点的执行时间倾斜率。

+

min_cpu_time

+

bigint

+

语句在数据库节点上的最小CPU时间,单位ms。

+

max_cpu_time

+

bigint

+

语句在数据库节点上的最大CPU时间,单位ms。

+

total_cpu_time

+

bigint

+

语句在数据库节点上的CPU总时间,单位ms。

+

cpu_skew_percent

+

integer

+

语句在数据库节点间的CPU时间倾斜率。

+

min_peak_iops

+

integer

+

语句在数据库节点上的每秒最小IO峰值(列存单位是次/s,行存单位是万次/s)。

+

max_peak_iops

+

integer

+

语句在数据库节点上的每秒最大IO峰值(列存单位是次/s,行存单位是万次/s)。

+

average_peak_iops

+

integer

+

语句在数据库节点上的每秒平均IO峰值(列存单位是次/s,行存单位是万次/s)。

+

iops_skew_percent

+

integer

+

语句在数据库节点间的IO倾斜率。

+

warning

+

text

+
主要显示如下几类告警信息:
  • 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
+
+

queryid

+

bigint

+

语句执行使用的内部query id。

+

query

+

text

+

正在执行的语句。

+

query_plan

+

text

+

语句的执行计划。

+

node_group

+

text

+

语句所属用户对应的逻辑openGauss。

+

top_cpu_dn

+

text

+

cpu使用量topN信息。

+

top_mem_dn

+

text

+

内存使用量topN信息。

+
+ diff --git a/content/zh/docs/Developerguide/STATEMENT_COUNT.md b/content/zh/docs/Developerguide/STATEMENT_COUNT.md new file mode 100644 index 0000000000000000000000000000000000000000..9458b5f0f906531dafcb56a6171014993d42b9fd --- /dev/null +++ b/content/zh/docs/Developerguide/STATEMENT_COUNT.md @@ -0,0 +1,203 @@ +# STATEMENT\_COUNT + +显示数据库当前节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)和\(DDL、DML、DCL\)统计信息。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>普通用户查询STATEMENT\_COUNT视图仅能看到该用户当前节点的统计信息;管理员权限用户查询STATEMENT\_COUNT视图则能看到所有用户当前节点的统计信息。当openGauss或该节点重启时,计数将清零,并重新开始计数。计数以节点收到的查询数为准,openGauss内部进行的查询。例如,数据库主节点收到一条查询,若下发多条查询数据库节点,那将在数据库节点上进行相应次数的计数。 + +**表 1** STATEMENT\_COUNT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

user_name

+

text

+

用户名。

+

select_count

+

bigint

+

select语句统计结果。

+

update_count

+

bigint

+

update语句统计结果。

+

insert_count

+

bigint

+

insert语句统计结果。

+

delete_count

+

bigint

+

delete语句统计结果。

+

mergeinto_count

+

bigint

+

merge into语句统计结果。

+

ddl_count

+

bigint

+

DDL语句的数量。

+

dml_count

+

bigint

+

DML语句的数量。

+

dcl_count

+

bigint

+

DCL语句的数量。

+

total_select_elapse

+

bigint

+

总select的时间花费(单位:微秒)。

+

avg_select_elapse

+

bigint

+

平均select的时间花费(单位:微秒)。

+

max_select_elapse

+

bigint

+

最大select的时间花费(单位:微秒)。

+

min_select_elapse

+

bigint

+

最小select的时间花费(单位:微秒)。

+

total_update_elapse

+

bigint

+

总update的时间花费(单位:微秒)。

+

avg_update_elapse

+

bigint

+

平均update的时间花费(单位:微秒)。

+

max_update_elapse

+

bigint

+

最大update的时间花费(单位:微秒)。

+

min_update_elapse

+

bigint

+

最小update的时间花费(单位:微秒)。

+

total_insert_elapse

+

bigint

+

总insert的时间花费(单位:微秒)。

+

avg_insert_elapse

+

bigint

+

平均insert的时间花费(单位:微秒)。

+

max_insert_elapse

+

bigint

+

最大insert的时间花费(单位:微秒)。

+

min_insert_elapse

+

bigint

+

最小insert的时间花费(单位:微秒)。

+

total_delete_elapse

+

bigint

+

总delete的时间花费(单位:微秒)。

+

avg_delete_elapse

+

bigint

+

平均delete的时间花费(单位:微秒)。

+

max_delete_elapse

+

bigint

+

最大delete的时间花费(单位:微秒)。

+

min_delete_elapse

+

bigint

+

最小delete的时间花费(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/STATEMENT_IOSTAT_COMPLEX_RUNTIME.md b/content/zh/docs/Developerguide/STATEMENT_IOSTAT_COMPLEX_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..96e3e90e7897f680330639efe2e95a336e920f99 --- /dev/null +++ b/content/zh/docs/Developerguide/STATEMENT_IOSTAT_COMPLEX_RUNTIME.md @@ -0,0 +1,81 @@ +# STATEMENT\_IOSTAT\_COMPLEX\_RUNTIME + +STATEMENT\_IOSTAT\_COMPLEX\_RUNTIME视图显示当前用户执行作业正在运行时的IO负载管理相关信息。以下涉及到iops,对于行存,均以万次/s为单位,对于列存,均以次/s为单位。 + +**表 1** STATEMENT\_IOSTAT\_COMPLEX\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

query_id

+

bigint

+

作业id。

+

mincurriops

+

integer

+

该作业当前io在各数据库节点中的最小值。

+

maxcurriops

+

integer

+

该作业当前io在各数据库节点中的最大值。

+

minpeakiops

+

integer

+

在作业运行时,作业io峰值中,各数据库节点的最小值。

+

maxpeakiops

+

integer

+

在作业运行时,作业io峰值中,各数据库节点的最大值。

+

io_limits

+

integer

+

该作业所设GUC参数io_limits。

+

io_priority

+

text

+

该作业所设GUC参数io_priority。

+

query

+

text

+

作业。

+

node_group

+

text

+

作业所属用户对应的逻辑openGauss。

+
+ diff --git a/content/zh/docs/Developerguide/STATEMENT_RESPONSETIME_PERCENTILE.md b/content/zh/docs/Developerguide/STATEMENT_RESPONSETIME_PERCENTILE.md new file mode 100644 index 0000000000000000000000000000000000000000..c4ddd820020f12380cf6e09a23ae713acfc0ea9d --- /dev/null +++ b/content/zh/docs/Developerguide/STATEMENT_RESPONSETIME_PERCENTILE.md @@ -0,0 +1,32 @@ +# STATEMENT\_RESPONSETIME\_PERCENTILE + +获取openGaussSQL响应时间P80,P95分布信息。 + +**表 1** STATEMENT\_RESPONSETIME\_PERCENTILE的字段 + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

p80

+

bigint

+

openGauss80%的SQL的响应时间(单位:微秒)。

+

p95

+

bigint

+

openGauss95%的SQL的响应时间(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/STATEMENT_USER_COMPLEX_HISTORY.md b/content/zh/docs/Developerguide/STATEMENT_USER_COMPLEX_HISTORY.md new file mode 100644 index 0000000000000000000000000000000000000000..753ab6cb839bc7e4e5cad725ccfac374f3e4e029 --- /dev/null +++ b/content/zh/docs/Developerguide/STATEMENT_USER_COMPLEX_HISTORY.md @@ -0,0 +1,4 @@ +# STATEMENT\_USER\_COMPLEX\_HISTORY + +STATEMENT\_USER\_COMPLEX\_HISTORY系统表显示数据库主节点执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。具体的字段请参考[表1](GS_WLM_SESSION_HISTORY.md#zh-cn_topic_0237122397_zh-cn_topic_0112535431_table75981925115018)。 + diff --git a/content/zh/docs/Developerguide/STATEMENT_WLMSTAT_COMPLEX_RUNTIME.md b/content/zh/docs/Developerguide/STATEMENT_WLMSTAT_COMPLEX_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..585d691029475a371afd0bf46d121a64dfd8936e --- /dev/null +++ b/content/zh/docs/Developerguide/STATEMENT_WLMSTAT_COMPLEX_RUNTIME.md @@ -0,0 +1,181 @@ +# STATEMENT\_WLMSTAT\_COMPLEX\_RUNTIME + +STATEMENT\_WLMSTAT\_COMPLEX\_RUNTIME视图显示和当前用户执行作业正在运行时的负载管理相关信息。 + +**表 1** STATEMENT\_WLMSTAT\_COMPLEX\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

连接后端的数据库OID。

+

datname

+

name

+

连接后端的数据库名称。

+

threadid

+

bigint

+

后端线程ID。

+

processid

+

integer

+

后端线程的pid。

+

usesysid

+

oid

+

登录后端的用户OID。

+

appname

+

text

+

连接到后端的应用名。

+

usename

+

name

+

登录到该后端的用户名。

+

priority

+

bigint

+

语句所在Cgroups的优先级。

+

attribute

+

text

+
语句的属性:
  • Ordinary:语句发送到数据库后被解析前的默认属性。
  • Simple:简单语句。
  • Complicated:复杂语句。
  • Internal:数据库内部语句。
+
+

block_time

+

bigint

+

语句当前为止的pending的时间,单位s。

+

elapsed_time

+

bigint

+

语句当前为止的实际执行时间,单位s。

+

total_cpu_time

+

bigint

+

语句在上一时间周期内的数据库节点上CPU使用的总时间,单位s。

+

cpu_skew_percent

+

integer

+

语句在上一时间周期内的数据库节点上CPU使用的倾斜率。

+

statement_mem

+

integer

+

语句执行使用的statement_mem,预留字段。

+

active_points

+

integer

+

语句占用的资源池并发点数。

+

dop_value

+

integer

+

语句的从资源池中获取的dop值。

+

control_group

+

text

+

该字段不支持。

+

status

+

text

+

该字段不支持

+

enqueue

+

text

+
语句当前的排队情况,包括:
  • Global:在全局队列中排队。
  • Respool:在资源池队列中排队。
  • CentralQueue:在中心协调节点(CCN)中排队。
  • Transaction:语句处于一个事务块中。
  • StoredProc:句处于一个存储过程中。
  • None:未在排队。
  • Forced None:事务块语句或存储过程语句由于超出设定的等待时间而强制执行。
+
+

resource_pool

+

name

+

语句当前所在的资源池。

+

query

+

text

+

该后端的最新查询。如果state状态是active(活的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。

+

is_plana

+

boolean

+

逻辑openGauss模式下,语句当前是否占用其他逻辑openGauss的资源执行。该值默认为f(否)。

+

node_group

+

text

+

语句所属用户对应的逻辑openGauss。

+
+ diff --git a/content/zh/docs/Developerguide/STATIO_ALL_INDEXES.md b/content/zh/docs/Developerguide/STATIO_ALL_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..eb3aa356a430cf7e7df3be7a26b4a39c5d363fad --- /dev/null +++ b/content/zh/docs/Developerguide/STATIO_ALL_INDEXES.md @@ -0,0 +1,67 @@ +# STATIO\_ALL\_INDEXES + +STATIO\_ALL\_INDEXES视图包含数据库中的每个索引行,显示特定索引的I/O的统计。 + +**表 1** STATIO\_ALL\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

索引的表的OID。

+

indexrelid

+

oid

+

该索引的OID。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

bigint

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/STATIO_ALL_SEQUENCES.md b/content/zh/docs/Developerguide/STATIO_ALL_SEQUENCES.md new file mode 100644 index 0000000000000000000000000000000000000000..ac0cb80878940df189ae97860782b48f4b40bfbb --- /dev/null +++ b/content/zh/docs/Developerguide/STATIO_ALL_SEQUENCES.md @@ -0,0 +1,53 @@ +# STATIO\_ALL\_SEQUENCES + +STATIO\_ALL\_SEQUENCES视图包含数据库中每个序列的每一行,显示特定序列关于I/O的统计。 + +**表 1** STATIO\_ALL\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

序列OID。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/STATIO_ALL_TABLES.md b/content/zh/docs/Developerguide/STATIO_ALL_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..b64253b1c2390fa4cd75909a40b2482315c208b1 --- /dev/null +++ b/content/zh/docs/Developerguide/STATIO_ALL_TABLES.md @@ -0,0 +1,95 @@ +# STATIO\_ALL\_TABLES + +STATIO\_ALL\_TABLES视图将包含数据库中每个表(包括TOAST表)的一行,显示出特定表I/O的统计。 + +**表 1** STATIO\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表OID。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

该表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

该表的TOAST表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

该表的TOAST表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

该表的TOAST表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

该表的TOAST表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/STATIO_SYS_INDEXES.md b/content/zh/docs/Developerguide/STATIO_SYS_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..16f9fbbb1145839adeb17a67a7d1157656284238 --- /dev/null +++ b/content/zh/docs/Developerguide/STATIO_SYS_INDEXES.md @@ -0,0 +1,67 @@ +# STATIO\_SYS\_INDEXES + +STATIO\_SYS\_INDEXES显示命名空间中所有系统表索引的IO状态信息。 + +**表 1** STATIO\_SYS\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

索引的表的OID。

+

indexrelid

+

oid

+

该索引的OID。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

bigint

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/STATIO_SYS_SEQUENCES.md b/content/zh/docs/Developerguide/STATIO_SYS_SEQUENCES.md new file mode 100644 index 0000000000000000000000000000000000000000..34885331dad0a698f779ae977a4020fe41ed5bc5 --- /dev/null +++ b/content/zh/docs/Developerguide/STATIO_SYS_SEQUENCES.md @@ -0,0 +1,53 @@ +# STATIO\_SYS\_SEQUENCES + +STATIO\_SYS\_SEQUENCES显示命名空间中所有系统表为序列的IO状态信息。 + +**表 1** STATIO\_SYS\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

序列OID。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/STATIO_SYS_TABLES.md b/content/zh/docs/Developerguide/STATIO_SYS_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..e30d375c816bd7936bf083dbf762a002a214a53f --- /dev/null +++ b/content/zh/docs/Developerguide/STATIO_SYS_TABLES.md @@ -0,0 +1,95 @@ +# STATIO\_SYS\_TABLES + +STATIO\_SYS\_TABLES视图显示命名空间中所有系统表的IO状态信息。 + +**表 1** STATIO\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表OID。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

该表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

该表的TOAST表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

该表的TOAST表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

该表的TOAST表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

该表的TOAST表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/STATIO_USER_INDEXES.md b/content/zh/docs/Developerguide/STATIO_USER_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..a23d0acef05af0c9c641f713e3d4f13628e7d820 --- /dev/null +++ b/content/zh/docs/Developerguide/STATIO_USER_INDEXES.md @@ -0,0 +1,67 @@ +# STATIO\_USER\_INDEXES + +STATIO\_USER\_INDEXES视图显示当前节点命名空间中所有用户关系表索引的IO状态信息。 + +**表 1** STATIO\_USER\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

索引的表的OID。

+

indexrelid

+

oid

+

该索引的OID。

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

bigint

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/STATIO_USER_SEQUENCES.md b/content/zh/docs/Developerguide/STATIO_USER_SEQUENCES.md new file mode 100644 index 0000000000000000000000000000000000000000..c9b0102e3fce11ca17bed1aba544c75a3e112ae8 --- /dev/null +++ b/content/zh/docs/Developerguide/STATIO_USER_SEQUENCES.md @@ -0,0 +1,53 @@ +# STATIO\_USER\_SEQUENCES + +STATIO\_USER\_SEQUENCE视图显示当前节点的命名空间中所有用户关系表类型为序列的IO状态信息。 + +**表 1** STATIO\_USER\_SEQUENCE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

序列OID。

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

bigint

+

从序列中读取的磁盘块数。

+

blks_hit

+

bigint

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/STATIO_USER_TABLES.md b/content/zh/docs/Developerguide/STATIO_USER_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..ec12995ec2c1af2852441fe254b26c02d7702e39 --- /dev/null +++ b/content/zh/docs/Developerguide/STATIO_USER_TABLES.md @@ -0,0 +1,95 @@ +# STATIO\_USER\_TABLES + +STATIO\_USER\_TABLES视图显示命名空间中所有用户关系表的IO状态信息。 + +**表 1** STATIO\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表OID。

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

bigint

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

bigint

+

该表缓存命中数。

+

idx_blks_read

+

bigint

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

bigint

+

表中所有索引命中缓存数。

+

toast_blks_read

+

bigint

+

该表的TOAST表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

bigint

+

该表的TOAST表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

bigint

+

该表的TOAST表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

bigint

+

该表的TOAST表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_ALL_INDEXES.md b/content/zh/docs/Developerguide/STAT_ALL_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..bbc0671ee7e79a7ef316db1216be43ddbd2badb7 --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_ALL_INDEXES.md @@ -0,0 +1,74 @@ +# STAT\_ALL\_INDEXES + +将包含本节点数据库中的每个索引行,显示访问特定索引的统计。 + +**表 1** STAT\_ALL\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

这个索引的表的OID。

+

indexrelid

+

oid

+

索引的OID。

+

schemaname

+

name

+

索引中模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_ALL_TABLES.md b/content/zh/docs/Developerguide/STAT_ALL_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..26d8b795704ebadb47fcbb66e9469b9f89e0a0a7 --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_ALL_TABLES.md @@ -0,0 +1,165 @@ +# STAT\_ALL\_TABLES + +本节点内数据库中每个表(包括TOAST表)的一行的统计信息。 + +**表 1** STAT\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次该表是手动清理的(不计算VACUUM FULL)的时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被autovacuum守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析该表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被autovacuum守护进程分析时间。

+

vacuum_count

+

bigint

+

该表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

该表被autovacuum清理的次数。

+

analyze_count

+

bigint

+

该表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

该表被autovacuum守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_BAD_BLOCK.md b/content/zh/docs/Developerguide/STAT_BAD_BLOCK.md new file mode 100644 index 0000000000000000000000000000000000000000..35eef54286c7fb9e45989a4666c126852286501e --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_BAD_BLOCK.md @@ -0,0 +1,81 @@ +# STAT\_BAD\_BLOCK + +获得当前节点表、索引等文件的读取失败信息。 + +**表 1** STAT\_BAD\_BLOCK字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

数据库进程名称。

+

databaseid

+

integer

+

database的oid。

+

tablespaceid

+

integer

+

tablespace的oid。

+

relfilenode

+

integer

+

relation的file node。

+

bucketid

+

smallint

+

一致性hash bucket ID。

+

forknum

+

integer

+

fork编号。

+

error_count

+

integer

+

error的数量。

+

first_time

+

timestamp with time zone

+

坏块第一次出现的时间。

+

last_time

+

timestamp with time zone

+

坏块最后出现的时间。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_DATABASE.md b/content/zh/docs/Developerguide/STAT_DATABASE.md new file mode 100644 index 0000000000000000000000000000000000000000..795c783a4011c796c18462ecfbcb03bf0e205684 --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_DATABASE.md @@ -0,0 +1,151 @@ +# STAT\_DATABASE + +视图将包含本节点中每个数据库的统计信息。 + +**表 1** STAT\_DATABASE字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

数据库的OID。

+

datname

+

name

+

此数据库的名称。

+

numbackends

+

integer

+

当前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。

+

xact_commit

+

bigint

+

此数据库中已经提交的事务数。

+

xact_rollback

+

bigint

+

此数据库中已经回滚的事务数。

+

blks_read

+

bigint

+

在这个数据库中读取的磁盘块的数量。

+

blks_hit

+

bigint

+

高速缓存中已经发现的磁盘块的次数,这样读取是不必要的(这只包括PostgreSQL缓冲区高速缓存,没有操作系统的文件系统缓存)。

+

tup_returned

+

bigint

+

通过数据库查询返回的行数。

+

tup_fetched

+

bigint

+

通过数据库查询抓取的行数。

+

tup_inserted

+

bigint

+

通过数据库查询插入的行数。

+

tup_updated

+

bigint

+

通过数据库查询更新的行数。

+

tup_deleted

+

bigint

+

通过数据库查询删除的行数。

+

conflicts

+

bigint

+

由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见STAT_DATABASE_CONFLICTS获取更多信息。

+

temp_files

+

bigint

+

通过数据库查询创建的临时文件数量。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不管log_temp_files设置。

+

temp_bytes

+

bigint

+

通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管log_temp_files设置。

+

deadlocks

+

bigint

+

在该数据库中检索的死锁数。

+

blk_read_time

+

double precision

+

通过数据库后端读取数据文件块花费的时间,以毫秒计算。

+

blk_write_time

+

double precision

+

通过数据库后端写入数据文件块花费的时间,以毫秒计算。

+

stats_reset

+

timestamp with time zone

+

重置当前状态统计的时间。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_DATABASE_CONFLICTS.md b/content/zh/docs/Developerguide/STAT_DATABASE_CONFLICTS.md new file mode 100644 index 0000000000000000000000000000000000000000..fff929b251ecafc103de3d21ae7e206fce5734e5 --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_DATABASE_CONFLICTS.md @@ -0,0 +1,67 @@ +# STAT\_DATABASE\_CONFLICTS + +显示当前节点数据库冲突状态的统计信息。 + +**表 1** STAT\_DATABASE\_CONFLICTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datid

+

oid

+

数据库标识。

+

datname

+

name

+

数据库名称。

+

confl_tablespace

+

bigint

+

冲突的表空间的数目。

+

confl_lock

+

bigint

+

冲突的锁数目。

+

confl_snapshot

+

bigint

+

冲突的快照数目。

+

confl_bufferpin

+

bigint

+

冲突的缓冲区数目。

+

confl_deadlock

+

bigint

+

冲突的死锁数目。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_SYS_INDEXES.md b/content/zh/docs/Developerguide/STAT_SYS_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..c3c05db0087d2a775466b3571c6ecda593d6d0f4 --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_SYS_INDEXES.md @@ -0,0 +1,74 @@ +# STAT\_SYS\_INDEXES + +显示pg\_catalog、information\_schema以及pg\_toast模式中所有系统表的索引状态信息。 + +**表 1** STAT\_SYS\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

此索引的表的OID。

+

indexrelid

+

oid

+

索引的OID。

+

schemaname

+

name

+

索引的模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_SYS_TABLES.md b/content/zh/docs/Developerguide/STAT_SYS_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..0eca9e378843043ca3cf2d6408b58a926f31e0bd --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_SYS_TABLES.md @@ -0,0 +1,165 @@ +# STAT\_SYS\_TABLES + +显示pg\_catalog、information\_schema模式的所有命名空间中系统表的统计信息。 + +**表 1** STAT\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次该表是手动清理的(不计算VACUUM FULL)时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被autovacuum守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析该表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被autovacuum守护进程分析的时间。

+

vacuum_count

+

bigint

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

该表被autovacuum清理的次数。

+

analyze_count

+

bigint

+

该表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

该表被autovacuum守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_USER_FUNCTIONS.md b/content/zh/docs/Developerguide/STAT_USER_FUNCTIONS.md new file mode 100644 index 0000000000000000000000000000000000000000..8d51031a1566ca1a49d4fc7cee95b0c294ca6c37 --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_USER_FUNCTIONS.md @@ -0,0 +1,60 @@ +# STAT\_USER\_FUNCTIONS + +STAT\_USER\_FUNCTIONS视图显示命名空间中用户自定义函数(函数语言为非内部语言)的状态信息。 + +**表 1** STAT\_USER\_FUNCTIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

funcid

+

oid

+

函数标识。

+

schemaname

+

name

+

schema的名称。

+

funcname

+

name

+

用户自定义函数的名称。

+

calls

+

bigint

+

函数被调用的次数。

+

total_time

+

double precision

+

调用此函数花费的总时间,包含调用其它函数的时间(单位:毫秒)。

+

self_time

+

double precision

+

调用此函数自己花费的时间,不包含调用其它函数的时间(单位:毫秒)。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_USER_INDEXES.md b/content/zh/docs/Developerguide/STAT_USER_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..bf15215d6278d44187820dd178dc883588205fa8 --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_USER_INDEXES.md @@ -0,0 +1,74 @@ +# STAT\_USER\_INDEXES + +显示数据库中用户自定义普通表的索引状态信息。 + +**表 1** STAT\_USER\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

此索引的表的OID。

+

indexrelid

+

oid

+

索引的OID。

+

schemaname

+

name

+

索引的模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

bigint

+

索引上开始的索引扫描数。

+

idx_tup_read

+

bigint

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

bigint

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_USER_TABLES.md b/content/zh/docs/Developerguide/STAT_USER_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..dd6bdb4ea642b328f20a2ff66804b9622186462a --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_USER_TABLES.md @@ -0,0 +1,165 @@ +# STAT\_USER\_TABLES + +显示当前节点所有命名空间中用户自定义普通表的状态信息。 + +**表 1** STAT\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(即没有更新所需的单独索引)。

+

n_live_tup

+

bigint

+

估计活跃行数。

+

n_dead_tup

+

bigint

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次该表是手动清理的(不计算VACUUM FULL)时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被autovacuum守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析该表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被autovacuum守护进程分析的时间。

+

vacuum_count

+

bigint

+

该表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

bigint

+

该表被autovacuum清理的次数。

+

analyze_count

+

bigint

+

该表被手动分析的次数。

+

autoanalyze_count

+

bigint

+

该表被autovacuum守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_XACT_ALL_TABLES.md b/content/zh/docs/Developerguide/STAT_XACT_ALL_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..3ae3d980d0d776975bdcab0cb106b3f1381a1d88 --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_XACT_ALL_TABLES.md @@ -0,0 +1,95 @@ +# STAT\_XACT\_ALL\_TABLES + +显示命名空间中所有普通表和toast表的事务状态信息。 + +**表 1** STAT\_XACT\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_XACT_SYS_TABLES.md b/content/zh/docs/Developerguide/STAT_XACT_SYS_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..461c5dfe2d6809b3b7b6d4708af33bd29d24c9da --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_XACT_SYS_TABLES.md @@ -0,0 +1,95 @@ +# STAT\_XACT\_SYS\_TABLES + +显示当前节点命名空间中系统表的事务状态信息。 + +**表 1** STAT\_XACT\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_XACT_USER_FUNCTIONS.md b/content/zh/docs/Developerguide/STAT_XACT_USER_FUNCTIONS.md new file mode 100644 index 0000000000000000000000000000000000000000..e012e9d4a925ed533da1dc596dba9d14007ba9ac --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_XACT_USER_FUNCTIONS.md @@ -0,0 +1,60 @@ +# STAT\_XACT\_USER\_FUNCTIONS + +视图包含当前节点本事务内函数执行的统计信息。 + +**表 1** STAT\_XACT\_USER\_FUNCTIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

funcid

+

oid

+

函数标识。

+

schemaname

+

name

+

模式的名称。

+

funcname

+

name

+

函数名称。

+

calls

+

bigint

+

函数被调用的次数。

+

total_time

+

double precision

+

函数的总执行时长。

+

self_time

+

double precision

+

当前线程调用函数的总的时长。

+
+ diff --git a/content/zh/docs/Developerguide/STAT_XACT_USER_TABLES.md b/content/zh/docs/Developerguide/STAT_XACT_USER_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..f947e270e46747fcd86f08b66431e88e0189f38e --- /dev/null +++ b/content/zh/docs/Developerguide/STAT_XACT_USER_TABLES.md @@ -0,0 +1,95 @@ +# STAT\_XACT\_USER\_TABLES + +显示当前节点命名空间中用户表的事务状态信息。 + +**表 1** STAT\_XACT\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

relid

+

oid

+

表的OID。

+

schemaname

+

name

+

该表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

bigint

+

该表发起的顺序扫描数。

+

seq_tup_read

+

bigint

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

bigint

+

该表发起的索引扫描数。

+

idx_tup_fetch

+

bigint

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

bigint

+

插入行数。

+

n_tup_upd

+

bigint

+

更新行数。

+

n_tup_del

+

bigint

+

删除行数。

+

n_tup_hot_upd

+

bigint

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_FILE_IOSTAT.md b/content/zh/docs/Developerguide/SUMMARY_FILE_IOSTAT.md new file mode 100644 index 0000000000000000000000000000000000000000..8758aad85599d62b8eec1f10679034ad6d74c1e6 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_FILE_IOSTAT.md @@ -0,0 +1,109 @@ +# SUMMARY\_FILE\_IOSTAT + +通过openGauss内对数据文件汇聚IO的统计,反映数据的IO性能,用以发现IO操作异常等性能问题。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_FILE\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

filenum

+

oid

+

文件标识。

+

dbid

+

oid

+

数据库标识。

+

spcid

+

oid

+

表空间标识。

+

phyrds

+

numeric

+

读物理文件的数目。

+

phywrts

+

numeric

+

写物理文件的数目。

+

phyblkrd

+

numeric

+

读物理文件块的数目。

+

phyblkwrt

+

numeric

+

写物理文件块的数目。

+

readtim

+

numeric

+

读文件的总时长(单位:微秒)。

+

writetim

+

numeric

+

写文件的总时长(单位:微秒)。

+

avgiotim

+

bigint

+

读写文件的平均时长(单位:微秒)。

+

lstiotim

+

bigint

+

最后一次读文件时长(单位:微秒)。

+

miniotim

+

bigint

+

读写文件的最小时长(单位:微秒)。

+

maxiowtm

+

bigint

+

读写文件的最大时长(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_FILE_REDO_IOSTAT.md b/content/zh/docs/Developerguide/SUMMARY_FILE_REDO_IOSTAT.md new file mode 100644 index 0000000000000000000000000000000000000000..58c32f3966a2e0275875b817e02011a71260b204 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_FILE_REDO_IOSTAT.md @@ -0,0 +1,67 @@ +# SUMMARY\_FILE\_REDO\_IOSTAT + +openGauss内汇聚所有的Redo\(WAL\)相关的统计信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_FILE\_REDO\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

phywrts

+

numeric

+

向wal buffer中写的次数。

+

phyblkwrt

+

numeric

+

向wal buffer中写的block的块数。

+

writetim

+

numeric

+

向xlog文件中写操作的时间(单位:微秒)。

+

avgiotim

+

bigint

+

平均写xlog的时间(writetim/phywrts)(单位:微秒)。

+

lstiotim

+

bigint

+

最后一次写xlog的时间(单位:微秒)。

+

miniotim

+

bigint

+

最小的写xlog时间(单位:微秒)。

+

maxiowtm

+

bigint

+

最大的写xlog时间(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_REL_IOSTAT.md b/content/zh/docs/Developerguide/SUMMARY_REL_IOSTAT.md new file mode 100644 index 0000000000000000000000000000000000000000..4634a541b426681b27c36b4bd2a20f56457b1cfd --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_REL_IOSTAT.md @@ -0,0 +1,46 @@ +# SUMMARY\_REL\_IOSTAT + +获取所有节点上的数据文件IO 统计信息,查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_REL\_IOSTAT字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

phyrds

+

numeric

+

读物理文件的数目。

+

phywrts

+

numeric

+

写物理文件的数目。

+

phyblkrd

+

numeric

+

读物理文件的块的数目。

+

phyblkwrt

+

numeric

+

写物理文件的块的数目。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATEMENT.md b/content/zh/docs/Developerguide/SUMMARY_STATEMENT.md new file mode 100644 index 0000000000000000000000000000000000000000..44dfc0150bd13ac71d1941ff4c8116a7100b3cd5 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATEMENT.md @@ -0,0 +1,228 @@ +# SUMMARY\_STATEMENT + +获得各数据库主节点的执行语句\(归一化SQL\)的全量信息\(包含数据库节点\)。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATEMENT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

node_id

+

integer

+

节点的ID(pgxc_node中的node_id)。

+

user_name

+

name

+

用户名称。

+

user_id

+

oid

+

用户OID。

+

unique_sql_id

+

bigint

+

归一化的SQL ID。

+

query

+

text

+

归一化的SQL。

+

n_calls

+

bigint

+

调用次数。

+

min_elapse_time

+

bigint

+

SQL在内核内的最小运行时间(单位:微秒)。

+

max_elapse_time

+

bigint

+

SQL在内核内的最大运行时间(单位:微秒)。

+

total_elapse_time

+

bigint

+

SQL在内核内的总运行时间(单位:微秒)。

+

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

+

buffer的块访问次数。

+

n_blocks_hit

+

bigint

+

buffer的块命中次数。

+

n_soft_parse

+

bigint

+

软解析次数。

+

n_hard_parse

+

bigint

+

硬解析次数。

+

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上的时间花费(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATEMENT_COUNT.md b/content/zh/docs/Developerguide/SUMMARY_STATEMENT_COUNT.md new file mode 100644 index 0000000000000000000000000000000000000000..f44cfa4f1eea9ff18bdc20186548547be00395c9 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATEMENT_COUNT.md @@ -0,0 +1,193 @@ +# SUMMARY\_STATEMENT\_COUNT + +显示数据库汇聚各节点\(数据库节点\)当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)和\(DDL、DML、DCL\)统计信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATEMENT\_COUNT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

user_name

+

text

+

用户名。

+

select_count

+

numeric

+

select语句统计结果。

+

update_count

+

numeric

+

update语句统计结果。

+

insert_count

+

numeric

+

insert语句统计结果。

+

delete_count

+

numeric

+

delete语句统计结果。

+

mergeinto_count

+

numeric

+

merge into语句统计结果。

+

ddl_count

+

numeric

+

DDL语句的数量。

+

dml_count

+

numeric

+

DML语句的数量。

+

dcl_count

+

numeric

+

DCL语句的数量。

+

total_select_elapse

+

numeric

+

总select的时间花费(单位:微秒)。

+

avg_select_elapse

+

bigint

+

平均select的时间花费(单位:微秒)。

+

max_select_elapse

+

bigint

+

最大select的时间花费(单位:微秒)。

+

min_select_elapse

+

bigint

+

最小select的时间花费(单位:微秒)。

+

total_update_elapse

+

numeric

+

总update的时间花费(单位:微秒)。

+

avg_update_elapse

+

bigint

+

平均update的时间花费(单位:微秒)。

+

max_update_elapse

+

bigint

+

最大update的时间花费(单位:微秒)。

+

min_update_elapse

+

bigint

+

最小update的时间花费(单位:微秒)。

+

total_insert_elapse

+

numeric

+

总insert的时间花费(单位:微秒)。

+

avg_insert_elapse

+

bigint

+

平均insert的时间花费(单位:微秒)。

+

max_insert_elapse

+

bigint

+

最大insert的时间花费(单位:微秒)。

+

min_insert_elapse

+

bigint

+

最小insert的时间花费(单位:微秒)。

+

total_delete_elapse

+

numeric

+

总delete的时间花费(单位:微秒)。

+

avg_delete_elapse

+

bigint

+

平均delete的时间花费(单位:微秒)。

+

max_delete_elapse

+

bigint

+

最大delete的时间花费(单位:微秒)。

+

min_delete_elapse

+

bigint

+

最小delete的时间花费(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATIO_ALL_INDEXES.md b/content/zh/docs/Developerguide/SUMMARY_STATIO_ALL_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..f5d4af02b9c857af18699b7c41471810df043576 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATIO_ALL_INDEXES.md @@ -0,0 +1,53 @@ +# SUMMARY\_STATIO\_ALL\_INDEXES + +SUMMARY\_STATIO\_ALL\_INDEXES视图包含含openGauss内汇聚的数据库中的每个索引行, 显示特定索引的I/O的统计。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATIO\_ALL\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

numeric

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATIO_ALL_SEQUENCES.md b/content/zh/docs/Developerguide/SUMMARY_STATIO_ALL_SEQUENCES.md new file mode 100644 index 0000000000000000000000000000000000000000..7fb677a6b8368081b123c4d15488d23d59fbd0c6 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATIO_ALL_SEQUENCES.md @@ -0,0 +1,46 @@ +# SUMMARY\_STATIO\_ALL\_SEQUENCES + +SUMMARY\_STATIO\_ALL\_SEQUENCES视图包含openGauss内汇聚的数据库中每个序列的每一行,显示特定序列关于I/O的统计。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATIO\_ALL\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

numeric

+

从序列中读取的磁盘块数。

+

blks_hit

+

numeric

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATIO_ALL_TABLES.md b/content/zh/docs/Developerguide/SUMMARY_STATIO_ALL_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..4309a3ad2dc19b2eb3e749f63c45e87295da388b --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATIO_ALL_TABLES.md @@ -0,0 +1,88 @@ +# SUMMARY\_STATIO\_ALL\_TABLES + +SUMMARY\_STATIO\_ALL\_TABLES视图将包含openGauss内汇聚的数据库中每个表\(包括TOAST表)的I/O的统计。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATIO\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

numeric

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

numeric

+

此表缓存命中数。

+

idx_blks_read

+

numeric

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

表中所有索引命中缓存数。

+

toast_blks_read

+

numeric

+

此表的TOAST表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

numeric

+

此表的TOAST表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

numeric

+

此表的TOAST表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

numeric

+

此表的TOAST表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATIO_SYS_INDEXES.md b/content/zh/docs/Developerguide/SUMMARY_STATIO_SYS_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..47927f1fad6a47858b1b065c7f5c936d9e6d703c --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATIO_SYS_INDEXES.md @@ -0,0 +1,53 @@ +# SUMMARY\_STATIO\_SYS\_INDEXES + +SUMMARY\_STATIO\_SYS\_INDEXES视图显示openGauss内汇聚的命名空间中所有系统表索引的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATIO\_SYS\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

numeric

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATIO_SYS_SEQUENCES.md b/content/zh/docs/Developerguide/SUMMARY_STATIO_SYS_SEQUENCES.md new file mode 100644 index 0000000000000000000000000000000000000000..8e297a291120e3bc3e39012d4effbbe58758b14b --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATIO_SYS_SEQUENCES.md @@ -0,0 +1,46 @@ +# SUMMARY\_STATIO\_SYS\_SEQUENCES + +SUMMARY\_STATIO\_SYS\_SEQUENCES视图显示openGauss内汇聚的命名空间中所有系统表为序列的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATIO\_SYS\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

numeric

+

从序列中读取的磁盘块数。

+

blks_hit

+

numeric

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATIO_SYS_TABLES.md b/content/zh/docs/Developerguide/SUMMARY_STATIO_SYS_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..9abbc1eeef5fb40fd1b35d420562379439adf614 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATIO_SYS_TABLES.md @@ -0,0 +1,88 @@ +# SUMMARY\_STATIO\_SYS\_TABLES + +SUMMARY\_STATIO\_SYS\_TABLES视图显示openGauss内汇聚的命名空间中所有系统表的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATIO\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

numeric

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

numeric

+

此表缓存命中数。

+

idx_blks_read

+

numeric

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

表中所有索引命中缓存数。

+

toast_blks_read

+

numeric

+

此表的TOAST表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

numeric

+

此表的TOAST表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

numeric

+

此表的TOAST表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

numeric

+

此表的TOAST表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATIO_USER_INDEXES.md b/content/zh/docs/Developerguide/SUMMARY_STATIO_USER_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..8f526b097fbdebe2abe70d11d76cb06107b698a5 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATIO_USER_INDEXES.md @@ -0,0 +1,53 @@ +# SUMMARY\_STATIO\_USER\_INDEXES + +SUMMARY\_STATIO\_USER\_INDEXES视图显示openGauss内汇聚的命名空间中所有用户关系表索引的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATIO\_USER\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

该索引的模式名。

+

relname

+

name

+

该索引的表名。

+

indexrelname

+

name

+

索引名称。

+

idx_blks_read

+

numeric

+

从索引中读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

索引命中缓存数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATIO_USER_SEQUENCES.md b/content/zh/docs/Developerguide/SUMMARY_STATIO_USER_SEQUENCES.md new file mode 100644 index 0000000000000000000000000000000000000000..bb635b58dcd9631e3623de971195d574fd005975 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATIO_USER_SEQUENCES.md @@ -0,0 +1,46 @@ +# SUMMARY\_STATIO\_USER\_SEQUENCES + +SUMMARY\_STATIO\_USER\_SEQUENCES视图显示openGauss内汇聚的命名空间中所有用户关系表类型为序列的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATIO\_USER\_SEQUENCES字段 + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

序列中模式名。

+

relname

+

name

+

序列名。

+

blks_read

+

numeric

+

从序列中读取的磁盘块数。

+

blks_hit

+

numeric

+

序列中缓存命中数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STATIO_USER_TABLES.md b/content/zh/docs/Developerguide/SUMMARY_STATIO_USER_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..76d39d02927dd69fb32701e931b7420434bb6f79 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STATIO_USER_TABLES.md @@ -0,0 +1,88 @@ +# SUMMARY\_STATIO\_USER\_TABLES + +SUMMARY\_STATIO\_USER\_TABLES视图显示openGauss内汇聚的命名空间中所有用户关系表的IO状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STATIO\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

该表模式名。

+

relname

+

name

+

表名。

+

heap_blks_read

+

numeric

+

从该表中读取的磁盘块数。

+

heap_blks_hit

+

numeric

+

此表缓存命中数。

+

idx_blks_read

+

numeric

+

从表中所有索引读取的磁盘块数。

+

idx_blks_hit

+

numeric

+

表中所有索引命中缓存数。

+

toast_blks_read

+

numeric

+

此表的TOAST表读取的磁盘块数(如果存在)。

+

toast_blks_hit

+

numeric

+

此表的TOAST表命中缓冲区数(如果存在)。

+

tidx_blks_read

+

numeric

+

此表的TOAST表索引读取的磁盘块数(如果存在)。

+

tidx_blks_hit

+

numeric

+

此表的TOAST表索引命中缓冲区数(如果存在)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_ALL_INDEXES.md b/content/zh/docs/Developerguide/SUMMARY_STAT_ALL_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..8da331f52c898e03438b4d97398ed90fafa1ae8f --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_ALL_INDEXES.md @@ -0,0 +1,60 @@ +# SUMMARY\_STAT\_ALL\_INDEXES + +将包含openGauss内汇聚数据库中的每个索引行,显示访问特定索引的统计。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_ALL\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

索引中模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

numeric

+

索引上开始的索引扫描数。

+

idx_tup_read

+

numeric

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

numeric

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_ALL_TABLES.md b/content/zh/docs/Developerguide/SUMMARY_STAT_ALL_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..889e90fae45f60fa5fb00bf03820f40a189fab7f --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_ALL_TABLES.md @@ -0,0 +1,158 @@ +# SUMMARY\_STAT\_ALL\_TABLES + +openGauss内汇聚数据库中每个表的一行(包括TOAST表)的统计信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

numeric

+

此表发起的顺序扫描数。

+

seq_tup_read

+

numeric

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

numeric

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

numeric

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

numeric

+

插入行数。

+

n_tup_upd

+

numeric

+

更新行数。

+

n_tup_del

+

numeric

+

删除行数。

+

n_tup_hot_upd

+

numeric

+

HOT更新行数(比如没有更新所需的单独索引)。

+

n_live_tup

+

numeric

+

估计活跃行数。

+

n_dead_tup

+

numeric

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次此表是手动清理的(不计算VACUUM FULL)的时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被autovacuum守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被autovacuum守护进程分析时间。

+

vacuum_count

+

numeric

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

numeric

+

这个表被autovacuum清理的次数。

+

analyze_count

+

numeric

+

这个表被手动分析的次数。

+

autoanalyze_count

+

numeric

+

这个表被autovacuum守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_BAD_BLOCK.md b/content/zh/docs/Developerguide/SUMMARY_STAT_BAD_BLOCK.md new file mode 100644 index 0000000000000000000000000000000000000000..58ceb920c7bbfc9962de1dac443cd50a7b380373 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_BAD_BLOCK.md @@ -0,0 +1,67 @@ +# SUMMARY\_STAT\_BAD\_BLOCK + +获得openGauss内汇聚的表、索引等文件的读取失败信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_BAD\_BLOCK字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

databaseid

+

integer

+

database的oid。

+

tablespaceid

+

integer

+

tablespace的oid。

+

relfilenode

+

integer

+

relation的file node。

+

forknum

+

bigint

+

fork编号。

+

error_count

+

bigint

+

error的数量。

+

first_time

+

timestamp with time zone

+

坏块第一次出现的时间。

+

last_time

+

timestamp with time zone

+

坏块最后出现的时间。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_DATABASE.md b/content/zh/docs/Developerguide/SUMMARY_STAT_DATABASE.md new file mode 100644 index 0000000000000000000000000000000000000000..d999215d0236216c2caa4e9da72f775c7da472a2 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_DATABASE.md @@ -0,0 +1,144 @@ +# SUMMARY\_STAT\_DATABASE + +视图将包含集群内汇聚的每个数据库的每一行,显示数据库统计。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_DATABASE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datname

+

name

+

这个数据库的名称。

+

numbackends

+

bigint

+

当前连接到该数据库的后端数。这是在返回一个反映目前状态值的视图中唯一的列;自上次重置所有其他列返回累积值。

+

xact_commit

+

numeric

+

此数据库中已经提交的事务数。

+

xact_rollback

+

numeric

+

此数据库中已经回滚的事务数。

+

blks_read

+

numeric

+

在这个数据库中读取的磁盘块的数量。

+

blks_hit

+

numeric

+

高速缓存中已经发现的磁盘块的次数,这样读取是不必要的(这只包括PostgreSQL缓冲区高速缓存,没有操作系统的文件系统缓存)。

+

tup_returned

+

numeric

+

通过数据库查询返回的行数。

+

tup_fetched

+

numeric

+

通过数据库查询抓取的行数。

+

tup_inserted

+

bigint

+

通过数据库查询插入的行数。

+

tup_updated

+

bigint

+

通过数据库查询更新的行数。

+

tup_deleted

+

bigint

+

通过数据库查询删除的行数。

+

conflicts

+

bigint

+

由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见STAT_DATABASE_CONFLICTS获取更多信息。

+

temp_files

+

numeric

+

通过数据库查询创建的临时文件数量。计算所有临时文件,不论为什么创建临时文件(比如排序或者哈希),而且不管log_temp_files设置。

+

temp_bytes

+

numeric

+

通过数据库查询写入临时文件的数据总量。计算所有临时文件,不论为什么创建临时文件,而且不管log_temp_files设置。

+

deadlocks

+

bigint

+

在该数据库中检索的死锁数。

+

blk_read_time

+

double precision

+

通过数据库后端读取数据文件块花费的时间,以毫秒计算。

+

blk_write_time

+

double precision

+

通过数据库后端写入数据文件块花费的时间,以毫秒计算。

+

stats_reset

+

timestamp with time zone

+

重置当前状态统计的时间。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_DATABASE_CONFLICTS.md b/content/zh/docs/Developerguide/SUMMARY_STAT_DATABASE_CONFLICTS.md new file mode 100644 index 0000000000000000000000000000000000000000..086bdbb278fa8d4c78bc74dbfdc586425a521120 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_DATABASE_CONFLICTS.md @@ -0,0 +1,60 @@ +# SUMMARY\_STAT\_DATABASE\_CONFLICTS + +显示openGauss内汇聚的数据库冲突状态的统计信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_DATABASE\_CONFLICTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

datname

+

name

+

数据库名称。

+

confl_tablespace

+

bigint

+

冲突的表空间的数目。

+

confl_lock

+

bigint

+

冲突的锁数目。

+

confl_snapshot

+

bigint

+

冲突的快照数目。

+

confl_bufferpin

+

bigint

+

冲突的缓冲区数目。

+

confl_deadlock

+

bigint

+

冲突的死锁数目。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_SYS_INDEXES.md b/content/zh/docs/Developerguide/SUMMARY_STAT_SYS_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..7b68d0b35d7207146d05ad3438308726f1e0745e --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_SYS_INDEXES.md @@ -0,0 +1,60 @@ +# SUMMARY\_STAT\_SYS\_INDEXES + +openGauss内汇聚pg\_catalog、information\_schema以及pg\_toast模式中所有系统表的索引状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_SYS\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

索引中模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

numeric

+

索引上开始的索引扫描数。

+

idx_tup_read

+

numeric

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

numeric

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_SYS_TABLES.md b/content/zh/docs/Developerguide/SUMMARY_STAT_SYS_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..74f21c1e2d6b8571fd4c130b51f9e9f72e473ad4 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_SYS_TABLES.md @@ -0,0 +1,158 @@ +# SUMMARY\_STAT\_SYS\_TABLES + +openGauss内汇聚 pg\_catalog、information\_schema模式的所有命名空间中系统表的统计信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

numeric

+

此表发起的顺序扫描数。

+

seq_tup_read

+

numeric

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

numeric

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

numeric

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

numeric

+

插入行数。

+

n_tup_upd

+

numeric

+

更新行数。

+

n_tup_del

+

numeric

+

删除行数。

+

n_tup_hot_upd

+

numeric

+

HOT更新行数(比如没有更新所需的单独索引)。

+

n_live_tup

+

numeric

+

估计活跃行数。

+

n_dead_tup

+

numeric

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次此表是手动清理的(不计算VACUUM FULL)时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被autovacuum守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被autovacuum守护进程分析的时间。

+

vacuum_count

+

numeric

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

numeric

+

这个表被autovacuum清理的次数。

+

analyze_count

+

numeric

+

这个表被手动分析的次数。

+

autoanalyze_count

+

numeric

+

这个表被autovacuum守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_USER_FUNCTIONS.md b/content/zh/docs/Developerguide/SUMMARY_STAT_USER_FUNCTIONS.md new file mode 100644 index 0000000000000000000000000000000000000000..b401c3746f0bcc8db5ae855c7a8f66877c492419 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_USER_FUNCTIONS.md @@ -0,0 +1,53 @@ +# SUMMARY\_STAT\_USER\_FUNCTIONS + +SUMMARY\_STAT\_USER\_FUNCTIONS用来统计所数据库节点用户自定义视图的相关统计信息,查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_USER\_FUNCTIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

schema的名称。

+

funcname

+

name

+

用户function的名称。

+

calls

+

numeric

+

总调用次数。

+

total_time

+

double precision

+

调用此function的总时间花费,包含调用其它function的时间(单位:毫秒)。

+

self_time

+

double precision

+

调用此function自己时间的花费,不包含调用其它function的时间(单位:毫秒)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_USER_INDEXES.md b/content/zh/docs/Developerguide/SUMMARY_STAT_USER_INDEXES.md new file mode 100644 index 0000000000000000000000000000000000000000..8e853d10d53212b9cc48cea14207726f00e1f35f --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_USER_INDEXES.md @@ -0,0 +1,60 @@ +# SUMMARY\_STAT\_USER\_INDEXES + +openGauss内汇聚所有数据库中用户自定义普通表的索引状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_USER\_INDEXES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

索引中模式名。

+

relname

+

name

+

索引的表名。

+

indexrelname

+

name

+

索引名。

+

idx_scan

+

numeric

+

索引上开始的索引扫描数。

+

idx_tup_read

+

numeric

+

通过索引上扫描返回的索引项数。

+

idx_tup_fetch

+

numeric

+

通过使用索引的简单索引扫描抓取的活表行数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_USER_TABLES.md b/content/zh/docs/Developerguide/SUMMARY_STAT_USER_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..7c135234f899e997da7ff51237bba93d3d306504 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_USER_TABLES.md @@ -0,0 +1,158 @@ +# SUMMARY\_STAT\_USER\_TABLES + +openGauss内汇聚所有命名空间中用户自定义普通表的状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_USER\_TABLES + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

numeric

+

此表发起的顺序扫描数。

+

seq_tup_read

+

numeric

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

numeric

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

numeric

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

numeric

+

插入行数。

+

n_tup_upd

+

numeric

+

更新行数。

+

n_tup_del

+

numeric

+

删除行数。

+

n_tup_hot_upd

+

numeric

+

HOT更新行数(即没有更新所需的单独索引)。

+

n_live_tup

+

numeric

+

估计活跃行数。

+

n_dead_tup

+

numeric

+

估计死行数。

+

last_vacuum

+

timestamp with time zone

+

最后一次此表是手动清理的(不计算VACUUM FULL)时间。

+

last_autovacuum

+

timestamp with time zone

+

上次被autovacuum守护进程清理的时间。

+

last_analyze

+

timestamp with time zone

+

上次手动分析这个表的时间。

+

last_autoanalyze

+

timestamp with time zone

+

上次被autovacuum守护进程分析的时间。

+

vacuum_count

+

numeric

+

这个表被手动清理的次数(不计算VACUUM FULL)。

+

autovacuum_count

+

numeric

+

这个表被autovacuum清理的次数。

+

analyze_count

+

numeric

+

这个表被手动分析的次数。

+

autoanalyze_count

+

numeric

+

这个表被autovacuum守护进程分析的次数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_ALL_TABLES.md b/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_ALL_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..e0c1e40390c8c7cbbda4fb73db8ba307be9b056f --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_ALL_TABLES.md @@ -0,0 +1,88 @@ +# SUMMARY\_STAT\_XACT\_ALL\_TABLES + +显示openGauss内汇聚的命名空间中所有普通表和toast表的事务状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_XACT\_ALL\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

numeric

+

此表发起的顺序扫描数。

+

seq_tup_read

+

numeric

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

numeric

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

numeric

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

numeric

+

插入行数。

+

n_tup_upd

+

numeric

+

更新行数。

+

n_tup_del

+

numeric

+

删除行数。

+

n_tup_hot_upd

+

numeric

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_SYS_TABLES.md b/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_SYS_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..8d71963082297bf8b9791ebe69067c87d48bcd85 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_SYS_TABLES.md @@ -0,0 +1,88 @@ +# SUMMARY\_STAT\_XACT\_SYS\_TABLES + +显示openGauss内汇聚的命名空间中系统表的事务状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_XACT\_SYS\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

numeric

+

此表发起的顺序扫描数。

+

seq_tup_read

+

numeric

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

numeric

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

numeric

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

numeric

+

插入行数。

+

n_tup_upd

+

numeric

+

更新行数。

+

n_tup_del

+

numeric

+

删除行数。

+

n_tup_hot_upd

+

numeric

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_USER_FUNCTIONS.md b/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_USER_FUNCTIONS.md new file mode 100644 index 0000000000000000000000000000000000000000..d8b04fb5b498e412d271ffb2b2d1516b67882a28 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_USER_FUNCTIONS.md @@ -0,0 +1,53 @@ +# SUMMARY\_STAT\_XACT\_USER\_FUNCTIONS + +视图包含openGauss内汇聚的本事务内函数执行的统信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_XACT\_USER\_FUNCTIONS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

模式的名称。

+

funcname

+

name

+

函数名称。

+

calls

+

numeric

+

函数被调用的次数。

+

total_time

+

double precision

+

函数的总执行时长。

+

self_time

+

double precision

+

当前线程调用函数的总的时长。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_USER_TABLES.md b/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_USER_TABLES.md new file mode 100644 index 0000000000000000000000000000000000000000..b049302c93833ca323c46d59803dc1c086800588 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_STAT_XACT_USER_TABLES.md @@ -0,0 +1,88 @@ +# SUMMARY\_STAT\_XACT\_USER\_TABLES + +显示集群内汇聚的命名空间中用户表的事务状态信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_STAT\_XACT\_USER\_TABLES字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

schemaname

+

name

+

此表的模式名。

+

relname

+

name

+

表名。

+

seq_scan

+

numeric

+

此表发起的顺序扫描数。

+

seq_tup_read

+

numeric

+

顺序扫描抓取的活跃行数。

+

idx_scan

+

numeric

+

此表发起的索引扫描数。

+

idx_tup_fetch

+

numeric

+

索引扫描抓取的活跃行数。

+

n_tup_ins

+

numeric

+

插入行数。

+

n_tup_upd

+

numeric

+

更新行数。

+

n_tup_del

+

numeric

+

删除行数。

+

n_tup_hot_upd

+

numeric

+

HOT更新行数(比如没有更新所需的单独索引)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_TRANSACTIONS_PREPARED_XACTS.md b/content/zh/docs/Developerguide/SUMMARY_TRANSACTIONS_PREPARED_XACTS.md new file mode 100644 index 0000000000000000000000000000000000000000..6ff75576eff01405602790550cc25491e70dacb0 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_TRANSACTIONS_PREPARED_XACTS.md @@ -0,0 +1,53 @@ +# SUMMARY\_TRANSACTIONS\_PREPARED\_XACTS + +显示openGauss中数据库主节点当前准备好进行两阶段提交的事务的信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_TRANSACTIONS\_PREPARED\_XACTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

transaction

+

xid

+

预备事务的数字事务标识。

+

gid

+

text

+

赋予该事务的全局事务标识。

+

prepared

+

timestamp with time zone

+

事务准备好提交的时间。

+

owner

+

name

+

执行该事务的用户的名称。

+

database

+

name

+

执行该事务所在的数据库名。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_USER_LOGIN.md b/content/zh/docs/Developerguide/SUMMARY_USER_LOGIN.md new file mode 100644 index 0000000000000000000000000000000000000000..9dc1db58abc39f227126f6b00f8747e18a252993 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_USER_LOGIN.md @@ -0,0 +1,53 @@ +# SUMMARY\_USER\_LOGIN + +SUMMARY\_USER\_LOGIN用来记录数据库主节点上用户登录和退出次数的相关信息,查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_USER\_LOGIN字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

user_name

+

text

+

用户名称。

+

user_id

+

integer

+

用户oid(同pg_authid中的oid字段)。

+

login_counter

+

bigint

+

登录次数。

+

logout_counter

+

bigint

+

退出次数。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_WORKLOAD_SQL_COUNT.md b/content/zh/docs/Developerguide/SUMMARY_WORKLOAD_SQL_COUNT.md new file mode 100644 index 0000000000000000000000000000000000000000..49f2a1d00802d3cef59051debfb85f4ad399ae65 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_WORKLOAD_SQL_COUNT.md @@ -0,0 +1,81 @@ +# SUMMARY\_WORKLOAD\_SQL\_COUNT + +显示openGauss内各数据库主节点的workload上的SQL数量分布。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_WORKLOAD\_SQL\_COUNT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

workload

+

name

+

负载名称。

+

select_count

+

bigint

+

select数量。

+

update_count

+

bigint

+

update数量。

+

insert_count

+

bigint

+

insert数量。

+

delete_count

+

bigint

+

delete数量。

+

ddl_count

+

bigint

+

ddl数量。

+

dml_count

+

bigint

+

dml数量。

+

dcl_count

+

bigint

+

dcl数量。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_WORKLOAD_SQL_ELAPSE_TIME.md b/content/zh/docs/Developerguide/SUMMARY_WORKLOAD_SQL_ELAPSE_TIME.md new file mode 100644 index 0000000000000000000000000000000000000000..a7f8d00f59b22af7db91d71e6ee483061c2e0fc3 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_WORKLOAD_SQL_ELAPSE_TIME.md @@ -0,0 +1,144 @@ +# SUMMARY\_WORKLOAD\_SQL\_ELAPSE\_TIME + +SUMMARY\_WORKLOAD\_SQL\_ELAPSE\_TIME用来统计数据库主节点上workload(业务)负载的SUID信息,查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_WORKLOAD\_SQL\_ELAPSE\_TIM字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

name

+

数据库进程名称。

+

workload

+

name

+

workload(业务负载)名称。

+

total_select_elapse

+

bigint

+

总select的时间花费(单位:微秒)。

+

max_select_elapse

+

bigint

+

最大select的时间花费(单位:微秒)。

+

min_select_elapse

+

bigint

+

最小select的时间花费(单位:微秒)。

+

avg_select_elapse

+

bigint

+

平均select的时间花费(单位:微秒)。

+

total_update_elapse

+

bigint

+

总update的时间花费(单位:微秒)。

+

max_update_elapse

+

bigint

+

最大update的时间花费(单位:微秒)。

+

min_update_elapse

+

bigint

+

最小update的时间花费(单位:微秒)。

+

avg_update_elapse

+

bigint

+

平均update的时间花费(单位:微秒)。

+

total_insert_elapse

+

bigint

+

总insert的时间花费(单位:微秒)。

+

max_insert_elapse

+

bigint

+

最大insert的时间花费(单位:微秒)。

+

min_insert_elapse

+

bigint

+

最小insert的时间花费(单位:微秒)。

+

avg_insert_elapse

+

bigint

+

平均insert的时间花费(单位:微秒)。

+

total_delete_elapse

+

bigint

+

总delete的时间花费(单位:微秒)。

+

max_delete_elapse

+

bigint

+

最大delete的时间花费(单位:微秒)。

+

min_delete_elapse

+

bigint

+

最小delete的时间花费(单位:微秒)。

+

avg_delete_elapse

+

bigint

+

平均delete的时间花费(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/SUMMARY_WORKLOAD_TRANSACTION.md b/content/zh/docs/Developerguide/SUMMARY_WORKLOAD_TRANSACTION.md new file mode 100644 index 0000000000000000000000000000000000000000..e024e89b2fddd9258002e46fad97c4981b0016b5 --- /dev/null +++ b/content/zh/docs/Developerguide/SUMMARY_WORKLOAD_TRANSACTION.md @@ -0,0 +1,109 @@ +# SUMMARY\_WORKLOAD\_TRANSACTION + +显示openGauss内汇聚的负载事务信息。查询视图必须具有monadmin权限。 + +**表 1** SUMMARY\_WORKLOAD\_TRANSACTION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

workload

+

name

+

负载的名称。

+

commit_counter

+

numeric

+

用户事务commit数量。

+

rollback_counter

+

numeric

+

用户事务rollback数量。

+

resp_min

+

bigint

+

用户事务最小响应时间(单位:微秒)。

+

resp_max

+

bigint

+

用户事务最大响应时间(单位:微秒)。

+

resp_avg

+

bigint

+

用户事务平均响应时间(单位:微秒)。

+

resp_total

+

numeric

+

用户事务总响应时间(单位:微秒)。

+

bg_commit_counter

+

numeric

+

后台事务commit数量。

+

bg_rollback_counter

+

numeric

+

后台事务rollback数量。

+

bg_resp_min

+

bigint

+

后台事务最小响应时间(单位:微秒)。

+

bg_resp_max

+

bigint

+

后台事务最大响应时间(单位:微秒)。

+

bg_resp_avg

+

bigint

+

后台事务平均响应时间(单位:微秒)。

+

bg_resp_total

+

numeric

+

后台事务总响应时间(单位:微秒)。

+
+ diff --git "a/content/zh/docs/Developerguide/Scan\346\226\271\345\274\217\347\232\204Hint.md" "b/content/zh/docs/Developerguide/Scan\346\226\271\345\274\217\347\232\204Hint.md" new file mode 100644 index 0000000000000000000000000000000000000000..5dcda02d70f25f2b8aecfebb20e30e18ab14dc35 --- /dev/null +++ "b/content/zh/docs/Developerguide/Scan\346\226\271\345\274\217\347\232\204Hint.md" @@ -0,0 +1,42 @@ +# Scan方式的Hint + +## 功能描述 + +指明scan使用的方法,可以是tablescan、indexscan和indexonlyscan。 + +## 语法格式 + +``` +[no] tablescan|indexscan|indexonlyscan(table [index]) +``` + +## 参数说明 + +- **no**表示hint的scan方式不使用。 + +- **table**表示hint指定的表,只能指定一个表,如果表存在别名应优先使用别名进行hint。 +- **index**表示使用indexscan或indexonlyscan的hint时,指定的索引名称,当前只能指定一个。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>对于indexscan或indexonlyscan,只有hint的索引属于hint的表时,才能使用该hint。 +>scan hint支持在行列存表、obs表、子查询表上指定。 + +## 示例 + +为了hint使用索引扫描,需要首先在表item的i\_item\_sk列上创建索引,名称为i。 + +``` +create index i on item(i_item_sk); +``` + +对[示例](Plan-Hint调优概述.md#zh-cn_topic_0237121532_section671421102912)中原语句使用如下hint: + +``` +explain +select /*+ indexscan(item i) */ i_product_name product_name ... +``` + +该hint表示:item表使用索引i进行扫描。生成计划如下所示: + +![](figures/zh-cn_image_0253037239.png) + diff --git a/content/zh/docs/Developerguide/Schema.md b/content/zh/docs/Developerguide/Schema.md index f9bd93344470d4df1c070a0ac35c5872ae0fb4ea..2bf52f0e66bf851c89d12d4e9c7e1440b04117ad 100644 --- a/content/zh/docs/Developerguide/Schema.md +++ b/content/zh/docs/Developerguide/Schema.md @@ -6,15 +6,15 @@ Schema又称作模式。通过管理Schema,允许多个用户使用同一数 相同的数据库对象名称可以应用在同一数据库的不同Schema中,而没有冲突。例如,a\_schema和b\_schema都可以包含名为mytable的表。具有所需权限的用户可以访问数据库的多个Schema中的对象。 -在初始数据库postgres中创建用户时,系统会自动帮助用户创建一个同名Schema。在其他数据库中,若需要同名Schema,则需要用户手动创建。 +在数据库创建用户时,系统会自动帮助用户创建一个同名Schema。 数据库对象是创建在数据库搜索路径中的第一个Schema内的。有关默认情况下的第一个Schema情况及如何变更Schema顺序等更多信息,请参见[搜索路径](#zh-cn_topic_0237121104_zh-cn_topic_0156599225_section03655314403)。 ## 创建、修改和删除Schema -- 要创建Schema,请使用[CREATE SCHEMA](CREATE-SCHEMA.md#ZH-CN_TOPIC_0242370577)。默认初始用户和系统管理员可以创建Schema,其他用户需要具备数据库的CREATE权限才可以在该数据库中创建Schema,赋权方式请参考[GRANT](GRANT.md)中将数据库的访问权限赋予指定的用户或角色中的语法。 -- 要更改Schema名称或者所有者,请使用[ALTER SCHEMA](ALTER-SCHEMA.md#ZH-CN_TOPIC_0242370534)。Schema所有者可以更改Schema。 -- 要删除Schema及其对象,请使用[DROP SCHEMA](DROP-SCHEMA.md#ZH-CN_TOPIC_0242370612)。Schema所有者可以删除Schema。 +- 要创建Schema,请使用[CREATE SCHEMA](CREATE-SCHEMA.md)。默认初始用户和系统管理员可以创建Schema,其他用户需要具备数据库的CREATE权限才可以在该数据库中创建Schema,赋权方式请参考[GRANT](GRANT.md)中将数据库的访问权限赋予指定的用户或角色中的语法。 +- 要更改Schema名称或者所有者,请使用[ALTER SCHEMA](ALTER-SCHEMA.md)。Schema所有者可以更改Schema。 +- 要删除Schema及其对象,请使用[DROP SCHEMA](DROP-SCHEMA.md)。Schema所有者可以删除Schema。 - 要在Schema内创建表,请以schema\_name.table\_name格式创建表。不指定schema\_name时,对象默认创建到[搜索路径](#zh-cn_topic_0237121104_zh-cn_topic_0156599225_section03655314403)中的第一个Schema内。 - 要查看Schema所有者,请对系统表PG\_NAMESPACE和PG\_USER执行如下关联查询。语句中的schema\_name请替换为实际要查找的Schema名称。 @@ -39,7 +39,7 @@ Schema又称作模式。通过管理Schema,允许多个用户使用同一数 搜索路径定义在[search\_path](语句行为.md#zh-cn_topic_0237124732_zh-cn_topic_0059779117_s304b0a206e2e4ca782210ffb66cbc4b0)参数中,参数取值形式为采用逗号分隔的Schema名称列表。如果创建对象时未指定目标Schema,则将该对象会被添加到搜索路径中列出的第一个Schema中。当不同Schema中存在同名的对象时,查询对象未指定Schema的情况下,将从搜索路径中包含该对象的第一个Schema中返回对象。 -- 要查看当前搜索路径,请使用[SHOW](SHOW.md#ZH-CN_TOPIC_0242370655)。 +- 要查看当前搜索路径,请使用[SHOW](SHOW.md)。 ``` postgres=# SHOW SEARCH_PATH; diff --git a/content/zh/docs/Developerguide/Session-Thread.md b/content/zh/docs/Developerguide/Session-Thread.md new file mode 100644 index 0000000000000000000000000000000000000000..387264bd92aba329e1e113d4a8e74060d542b2b7 --- /dev/null +++ b/content/zh/docs/Developerguide/Session-Thread.md @@ -0,0 +1,37 @@ +# Session/Thread + +- **[SESSION\_STAT](SESSION_STAT.md)** + +- **[GLOBAL\_SESSION\_STAT](GLOBAL_SESSION_STAT.md)** + +- **[SESSION\_TIME](SESSION_TIME.md)** + +- **[GLOBAL\_SESSION\_TIME](GLOBAL_SESSION_TIME.md)** + +- **[SESSION\_MEMORY](SESSION_MEMORY.md)** + +- **[GLOBAL\_SESSION\_MEMORY](GLOBAL_SESSION_MEMORY.md)** + +- **[SESSION\_MEMORY\_DETAIL](SESSION_MEMORY_DETAIL.md)** + +- **[GLOBAL\_SESSION\_MEMORY\_DETAIL](GLOBAL_SESSION_MEMORY_DETAIL.md)** + +- **[SESSION\_STAT\_ACTIVITY](SESSION_STAT_ACTIVITY.md)** + +- **[GLOBAL\_SESSION\_STAT\_ACTIVITY](GLOBAL_SESSION_STAT_ACTIVITY.md)** + +- **[THREAD\_WAIT\_STATUS](THREAD_WAIT_STATUS.md)** + +- **[GLOBAL\_THREAD\_WAIT\_STATUS](GLOBAL_THREAD_WAIT_STATUS.md)** + +- **[LOCAL\_THREADPOOL\_STATUS](LOCAL_THREADPOOL_STATUS.md)** + +- **[GLOBAL\_THREADPOOL\_STATUS](GLOBAL_THREADPOOL_STATUS.md)** + +- **[SESSION\_CPU\_RUNTIME](SESSION_CPU_RUNTIME.md)** + +- **[SESSION\_MEMORY\_RUNTIME](SESSION_MEMORY_RUNTIME.md)** + +- **[STATEMENT\_IOSTAT\_COMPLEX\_RUNTIME](STATEMENT_IOSTAT_COMPLEX_RUNTIME.md)** + + diff --git "a/content/zh/docs/Developerguide/Simple\350\257\215\345\205\270.md" "b/content/zh/docs/Developerguide/Simple\350\257\215\345\205\270.md" index cd5a72bafac062147af4377ecaa2302e35e8f836..40dfcd0f13f7da46216f345e42050d5551e4ddd9 100644 --- "a/content/zh/docs/Developerguide/Simple\350\257\215\345\205\270.md" +++ "b/content/zh/docs/Developerguide/Simple\350\257\215\345\205\270.md" @@ -20,7 +20,7 @@ Simple词典首先将输入标记转换为小写字母,然后检查停用词 ); ``` - 其中,停用词表文件全名为english.stop。关于创建simple词典的语法和更多参数,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370586)。 + 其中,停用词表文件全名为english.stop。关于创建simple词典的语法和更多参数,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md)。 2. 使用Simple词典。 diff --git "a/content/zh/docs/Developerguide/Snowball\350\257\215\345\205\270.md" "b/content/zh/docs/Developerguide/Snowball\350\257\215\345\205\270.md" index 23529ea5896b8eac05c64e8538314e64ff36d2c8..d3b43147efbc6fa963891c811f0330374611a33a 100644 --- "a/content/zh/docs/Developerguide/Snowball\350\257\215\345\205\270.md" +++ "b/content/zh/docs/Developerguide/Snowball\350\257\215\345\205\270.md" @@ -1,8 +1,8 @@ # Snowball词典 -Snowball词典模板支持词干分析词典,基于Martin Porter的Snowball项目,内置有许多语言的词干分析算法。openGauss中预定义有多种语言的Snowball词典,可通过系统表[PG\_TS\_DICT](PG_TS_DICT.md#ZH-CN_TOPIC_0242385852)查看预定义的词干分析词典以及支持的语言词干分析算法。 +Snowball词典模板支持词干分析词典,基于Martin Porter的Snowball项目,内置有许多语言的词干分析算法。openGauss中预定义有多种语言的Snowball词典,可通过系统表[PG\_TS\_DICT](PG_TS_DICT.md)查看预定义的词干分析词典以及支持的语言词干分析算法。 无论是否可以简化,Snowball词典将标示所有输入为已识别,因此它应当被放置在词典列表的最后。把Snowball词典放在任何其他词典前面会导致后继词典失效,因为输入token不会通过Snowball词典进入到下一个词典。 -关于Snowball词典的语法,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370586)。 +关于Snowball词典的语法,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md)。 diff --git a/content/zh/docs/Developerguide/Sqldiag.md b/content/zh/docs/Developerguide/Sqldiag.md new file mode 100644 index 0000000000000000000000000000000000000000..146491719efd7559c01045dd11fa07a5db8bc099 --- /dev/null +++ b/content/zh/docs/Developerguide/Sqldiag.md @@ -0,0 +1,19 @@ +# Sqldiag + +Sqliag是openGauss中SQL语句执行时长预测框架。现有的预测技术主要基于执行计划的模型预测,但这些预测方案仅适用于OLAP场景且可以获取执行计划的作业,对于OLTP或者HTAP这样的快速查询是没有使用价值的。和上述方案不同,Sqldiag着眼于数据库的历史SQL语句,因为短时间内数据库SQL语句执行时长不会有太大的差距,Sqldiag可以从历史数据中检测出已输入指令相似的指令集,并基于SQL向量化技术和时序预测算法预测SQL语句执行时长。该框架有如下优点: + +1. 不需要指令的执行计划,对数据库性能不会有任何的影响。 +2. 使用场景广泛,目前业内的很多算法具有很强的针对性,比如只适用于OLTP或者OLAP,Sqldiag使用场景广泛。 +3. 该框架鲁棒性强,理解容易,只需要简单的修改,用户就可以设计出自己的预测模型。 + +- **[概述](概述-11.md)** + +- **[使用指导](使用指导-12.md)** + +- **[获取帮助](获取帮助-13.md)** + +- **[命令参考](命令参考-14.md)** + +- **[常见问题处理](常见问题处理-15.md)** + + diff --git "a/content/zh/docs/Developerguide/Synonym\350\257\215\345\205\270.md" "b/content/zh/docs/Developerguide/Synonym\350\257\215\345\205\270.md" index 38de7b7cf773da4addf9809093f617e3a4b62584..e965c5055b3096fb43bc96cad5aeac510c371ee2 100644 --- "a/content/zh/docs/Developerguide/Synonym\350\257\215\345\205\270.md" +++ "b/content/zh/docs/Developerguide/Synonym\350\257\215\345\205\270.md" @@ -1,6 +1,6 @@ # Synonym词典 -Synonym词典用于定义、识别token的同义词并转化,不支持词组(词组形式的同义词可用Thesaurus词典定义,详细请参见[Thesaurus词典](Thesaurus词典.md#ZH-CN_TOPIC_0242370502))。 +Synonym词典用于定义、识别token的同义词并转化,不支持词组(词组形式的同义词可用Thesaurus词典定义,详细请参见[Thesaurus词典](Thesaurus词典.md))。 ## 示例 @@ -51,9 +51,9 @@ Synonym词典用于定义、识别token的同义词并转化,不支持词组 ``` - 其中,同义词词典文件全名为my\_synonyms.syn,所在目录为当前连接数据库主节点的/home/dicts/下。关于创建词典的语法和更多参数,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370586)。 + 其中,同义词词典文件全名为my\_synonyms.syn,所在目录为当前连接数据库主节点的/home/dicts/下。关于创建词典的语法和更多参数,请参见[ALTER TEXT SEARCH DICTIONARY](ALTER-TEXT-SEARCH-DICTIONARY.md)。 -- 星号(\*)可用于词典文件中的同义词结尾,表示该同义词是一个前缀。在to\_tsvector\(\)中该星号将被忽略,但在to\_tsquery\(\)中会匹配该前缀并对应输出结果(参照[处理查询](处理查询.md#ZH-CN_TOPIC_0242370493)一节)。 +- 星号(\*)可用于词典文件中的同义词结尾,表示该同义词是一个前缀。在to\_tsvector\(\)中该星号将被忽略,但在to\_tsquery\(\)中会匹配该前缀并对应输出结果(参照[处理查询](处理查询.md)一节)。 假设词典文件synonym\_sample.syn内容如下: diff --git a/content/zh/docs/Developerguide/THREAD_WAIT_STATUS.md b/content/zh/docs/Developerguide/THREAD_WAIT_STATUS.md new file mode 100644 index 0000000000000000000000000000000000000000..23f735f1e1b00752baf41b9c3c612f8c00c4a5a3 --- /dev/null +++ b/content/zh/docs/Developerguide/THREAD_WAIT_STATUS.md @@ -0,0 +1,102 @@ +# THREAD\_WAIT\_STATUS + +通过该视图可以检测当前实例中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况,具体事件信息请参见[15.3.67-表2 等待状态列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_zh-cn_topic_0059777957_t794f802302c24514a5db22d51eabacc4)、[15.3.67-表3 轻量级锁等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_table38811324183420)、[15.3.67-表4 IO等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_table124603113369)和[15.3.67-表5 事务锁等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_table11826123533718)。 + +**表 1** THREAD\_WAIT\_STATUS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

db_name

+

text

+

数据库名称。

+

thread_name

+

text

+

线程名称。

+

query_id

+

bigint

+

查询ID,对应debug_query_id。

+

tid

+

bigint

+

当前线程的线程号。

+

sessionid

+

bigint

+

session的ID。

+

lwtid

+

integer

+

当前线程的轻量级线程号。

+

psessionid

+

bigint

+

streaming线程的父线程。

+

tlevel

+

integer

+

streaming线程的层级。

+

smpid

+

integer

+

并行线程的ID。

+

wait_status

+

text

+

当前线程的等待状态。等待状态的详细信息请参见15.3.67-表2 等待状态列表

+

wait_event

+

text

+

如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、IO的信息;否则为空。

+
+ diff --git "a/content/zh/docs/Developerguide/TPCC\350\277\220\350\241\214\346\227\266-\346\263\250\345\205\245\347\243\201\347\233\230\346\273\241\346\225\205\351\232\234-TPCC\345\215\241\344\275\217\347\232\204\351\227\256\351\242\230.md" "b/content/zh/docs/Developerguide/TPCC\350\277\220\350\241\214\346\227\266-\346\263\250\345\205\245\347\243\201\347\233\230\346\273\241\346\225\205\351\232\234-TPCC\345\215\241\344\275\217\347\232\204\351\227\256\351\242\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..9d178f81f9e2eb437376b0af5ed5f397726cc73b --- /dev/null +++ "b/content/zh/docs/Developerguide/TPCC\350\277\220\350\241\214\346\227\266-\346\263\250\345\205\245\347\243\201\347\233\230\346\273\241\346\225\205\351\232\234-TPCC\345\215\241\344\275\217\347\232\204\351\227\256\351\242\230.md" @@ -0,0 +1,14 @@ +# TPCC运行时,注入磁盘满故障,TPCC卡住的问题 + +## 问题现象 + +TPCC运行时,注入磁盘满故障,TPCC卡住,故障消除后,TPCC自动续跑。 + +## 原因分析 + +数据库本身机制,在性能日志(gs\_profile)所在磁盘满时,导致无法写入而陷入无限等待,表现为TPCC卡住。磁盘满故障消除后,性能日志能正常写入,TPCC恢复正常。 + +## 处理分析 + +外部监控磁盘使用状况,定时进行清理磁盘。 + diff --git a/content/zh/docs/Developerguide/TRANSACTIONS_PREPARED_XACTS.md b/content/zh/docs/Developerguide/TRANSACTIONS_PREPARED_XACTS.md new file mode 100644 index 0000000000000000000000000000000000000000..4311f863039920c748eca33ee53137fc5603c5ae --- /dev/null +++ b/content/zh/docs/Developerguide/TRANSACTIONS_PREPARED_XACTS.md @@ -0,0 +1,53 @@ +# TRANSACTIONS\_PREPARED\_XACTS + +显示当前准备好进行两阶段提交的事务的信息。 + +**表 1** TRANSACTIONS\_PREPARED\_XACTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

transaction

+

xid

+

预备事务的数字事务标识。

+

gid

+

text

+

赋予该事务的全局事务标识。

+

prepared

+

timestamp with time zone

+

事务准备好提交的时间。

+

owner

+

name

+

执行该事务的用户的名称。

+

database

+

name

+

执行该事务所在的数据库名。

+
+ diff --git a/content/zh/docs/Developerguide/TRUNCATE.md b/content/zh/docs/Developerguide/TRUNCATE.md index fc8d79c7f3499eb02c5924a8525ae5586515c59c..8eeab4fcb95b6dc48a32e5295789c12c7917f274 100644 --- a/content/zh/docs/Developerguide/TRUNCATE.md +++ b/content/zh/docs/Developerguide/TRUNCATE.md @@ -55,8 +55,8 @@ ALTER TABLE [ IF EXISTS ] { [ ONLY ] table_name 不改变序列的值。这是缺省值。 - **CASCADE | RESTRICT** - - CASCADE:级联清空所有在该表上有外键引用的表,或者由于CASCADE而被添加到组中的表。 - - RESTRICT(缺省值):如果其他表在该表上有外键引用则拒绝清空。 + - CASCADE:级联清空所有由于CASCADE而被添加到组中的表。 + - RESTRICT(缺省值):完全清空。 - **partition\_name** diff --git "a/content/zh/docs/Developerguide/Thesaurus\350\257\215\345\205\270.md" "b/content/zh/docs/Developerguide/Thesaurus\350\257\215\345\205\270.md" index ff996e0cfc937708d9d4f0cc237086245aeadb60..c945070c8abd5ee4706d3d2c988b97787ab39fc7 100644 --- "a/content/zh/docs/Developerguide/Thesaurus\350\257\215\345\205\270.md" +++ "b/content/zh/docs/Developerguide/Thesaurus\350\257\215\345\205\270.md" @@ -29,7 +29,7 @@ Thesaurus词典,也叫做分类词典(缩写为TZ),是一组定义了词 ); ``` - 其中,词典定义文件全名为thesaurus\_astro.ths,所在目录为当前连接数据库主节点的/home/dicts/下 。子词典pg\_catalog.english\_stem是预定义的Snowball类型的英语词干词典,用于规范化输入词,子词典自身相关配置(例如停用词等)不在此处显示。关于创建词典的语法和更多参数,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md#ZH-CN_TOPIC_0242370586)。 + 其中,词典定义文件全名为thesaurus\_astro.ths,所在目录为当前连接数据库主节点的/home/dicts/下 。子词典pg\_catalog.english\_stem是预定义的Snowball类型的英语词干词典,用于规范化输入词,子词典自身相关配置(例如停用词等)不在此处显示。关于创建词典的语法和更多参数,请参见[CREATE TEXT SEARCH DICTIONARY](CREATE-TEXT-SEARCH-DICTIONARY.md)。 2. 创建词典后,将其绑定到对应文本搜索配置中需要处理的token类型上: diff --git a/content/zh/docs/Developerguide/Transaction.md b/content/zh/docs/Developerguide/Transaction.md new file mode 100644 index 0000000000000000000000000000000000000000..ea220d552e5e880c5b3c513d98f0053af5a6a018 --- /dev/null +++ b/content/zh/docs/Developerguide/Transaction.md @@ -0,0 +1,9 @@ +# Transaction + +- **[TRANSACTIONS\_PREPARED\_XACTS](TRANSACTIONS_PREPARED_XACTS.md)** + +- **[SUMMARY\_TRANSACTIONS\_PREPARED\_XACTS](SUMMARY_TRANSACTIONS_PREPARED_XACTS.md)** + +- **[GLOBAL\_TRANSACTIONS\_PREPARED\_XACTS](GLOBAL_TRANSACTIONS_PREPARED_XACTS.md)** + + diff --git a/content/zh/docs/Developerguide/UPDATE.md b/content/zh/docs/Developerguide/UPDATE.md index e10d1973aa3d672bd230a669819d0abb8e572161..f058f76d1d3743c5e7f8eb792a4d7573b4b11f10 100644 --- a/content/zh/docs/Developerguide/UPDATE.md +++ b/content/zh/docs/Developerguide/UPDATE.md @@ -8,7 +8,6 @@ - 要修改表,用户必须对该表有UPDATE权限。 - 对expression或condition条件里涉及到的任何表要有SELECT权限。 -- 不允许对表的分布列(distribute column)进行修改。 - 对于列存表,暂时不支持RETURNING子句。 - 列存表不支持结果不确定的更新\(non-deterministic update\)。试图对列存表用多行数据更新一行时会报错。 - 列存表的更新操作,旧记录空间不会回收,需要执行VACUUM FULL table\_name进行清理。 diff --git a/content/zh/docs/Developerguide/USER_LOGIN.md b/content/zh/docs/Developerguide/USER_LOGIN.md new file mode 100644 index 0000000000000000000000000000000000000000..d6176c3533e7486b5e76f37eef307a876036f69c --- /dev/null +++ b/content/zh/docs/Developerguide/USER_LOGIN.md @@ -0,0 +1,53 @@ +# USER\_LOGIN + +USER\_LOGIN用来记录用户登录和退出次数的相关信息。 + +**表 1** USER\_LOGIN字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

node_name

+

text

+

数据库进程名称。

+

user_name

+

text

+

用户名称。

+

user_id

+

integer

+

用户oid(同pg_authid中的oid字段)。

+

login_counter

+

bigint

+

登录次数。

+

logout_counter

+

bigint

+

退出次数。

+
+ diff --git a/content/zh/docs/Developerguide/Utility.md b/content/zh/docs/Developerguide/Utility.md new file mode 100644 index 0000000000000000000000000000000000000000..790e46827d715836b2748612f0770858a661e828 --- /dev/null +++ b/content/zh/docs/Developerguide/Utility.md @@ -0,0 +1,33 @@ +# Utility + +- **[REPLICATION\_STAT](REPLICATION_STAT.md)** + +- **[GLOBAL\_REPLICATION\_STAT](GLOBAL_REPLICATION_STAT.md)** + +- **[REPLICATION\_SLOTS](REPLICATION_SLOTS.md)** + +- **[GLOBAL\_REPLICATION\_SLOTS](GLOBAL_REPLICATION_SLOTS.md)** + +- **[BGWRITER\_STAT](BGWRITER_STAT.md)** + +- **[GLOBAL\_BGWRITER\_STAT](GLOBAL_BGWRITER_STAT.md)** + +- **[GLOBAL\_CKPT\_STATUS](GLOBAL_CKPT_STATUS.md)** + +- **[GLOBAL\_DOUBLE\_WRITE\_STATUS](GLOBAL_DOUBLE_WRITE_STATUS.md)** + +- **[GLOBAL\_PAGEWRITER\_STATUS](GLOBAL_PAGEWRITER_STATUS.md)** + +- **[GLOBAL\_RECORD\_RESET\_TIME](GLOBAL_RECORD_RESET_TIME.md)** + +- **[GLOBAL\_REDO\_STATUS](GLOBAL_REDO_STATUS.md)** + +- **[GLOBAL\_RECOVERY\_STATUS](GLOBAL_RECOVERY_STATUS.md)** + +- **[CLASS\_VITAL\_INFO](CLASS_VITAL_INFO.md)** + +- **[USER\_LOGIN](USER_LOGIN.md)** + +- **[SUMMARY\_USER\_LOGIN](SUMMARY_USER_LOGIN.md)** + + diff --git a/content/zh/docs/Developerguide/VACUUM.md b/content/zh/docs/Developerguide/VACUUM.md index 90abb60ab9afd41772f4750f48ce640bc46fb9d8..b6248ba95d2e8c997b3f77479185ebcb810d6b13 100644 --- a/content/zh/docs/Developerguide/VACUUM.md +++ b/content/zh/docs/Developerguide/VACUUM.md @@ -18,6 +18,7 @@ VACUUM回收表或B-Tree索引中已经删除的行所占据的存储空间。 - VACUUM ANALYZE先执行一个VACUUM操作,然后给每个选定的表执行一个ANALYZE。对于日常维护脚本而言,这是一个很方便的组合。 - 简单的VACUUM(不带FULL选项)只是简单地回收空间并且令其可以再次使用。这种形式的命令可以和对表的普通读写并发操作,因为没有请求排他锁。VACUUM FULL执行更广泛的处理,包括跨块移动行,以便把表压缩到最少的磁盘块数目里。这种形式要慢许多并且在处理的时候需要在表上施加一个排他锁。 - VACUUM列存表内部执行的操作包括三个:迁移delta表中的数据到主表、VACUUM主表的delta表、VACUUM主表的desc表。该操作不会回收delta表的存储空间,如果要回收delta表的冗余存储空间,需要对该列存表执行VACUUM DELTAMERGE。 +- 同时执行多个VACUUM FULL可能出现死锁。 ## 语法格式 diff --git a/content/zh/docs/Developerguide/WAIT_EVENTS.md b/content/zh/docs/Developerguide/WAIT_EVENTS.md new file mode 100644 index 0000000000000000000000000000000000000000..3a8e93b35eb39ba917dd53dbc61bc3a037def217 --- /dev/null +++ b/content/zh/docs/Developerguide/WAIT_EVENTS.md @@ -0,0 +1,81 @@ +# WAIT\_EVENTS + +WAIT\_EVENTS显示当前节点的event的等待相关的统计信息。具体事件信息见[15.3.67-表2 等待状态列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_zh-cn_topic_0059777957_t794f802302c24514a5db22d51eabacc4)、[15.3.67-表3 轻量级锁等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_table38811324183420)、[15.3.67-表4 IO等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_table124603113369)和[15.3.67-表5 事务锁等待事件列表](PG_THREAD_WAIT_STATUS.md#zh-cn_topic_0237122466_table11826123533718)。 + +**表 1** WAIT\_EVENTS字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

nodename

+

text

+

数据库进程名称。

+

type

+

text

+

event类型。

+

event

+

text

+

event名称。

+

wait

+

bigint

+

等待次数。

+

failed_wait

+

bigint

+

失败的等待次数。

+

total_wait_time

+

bigint

+

总等待时间(单位:微秒)。

+

avg_wait_time

+

bigint

+

平均等待时间(单位:微秒)。

+

max_wait_time

+

bigint

+

最大等待时间(单位:微秒)。

+

min_wait_time

+

bigint

+

最小等待时间(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/WDR-Snapshot-Schema.md b/content/zh/docs/Developerguide/WDR-Snapshot-Schema.md new file mode 100644 index 0000000000000000000000000000000000000000..f38db41cef068ea160af4d1e2154c5acddc43373 --- /dev/null +++ b/content/zh/docs/Developerguide/WDR-Snapshot-Schema.md @@ -0,0 +1,11 @@ +# WDR Snapshot Schema + +WDR Snasphot在启动后(打开参数[enable\_wdr\_snapshot](系统性能快照.md#zh-cn_topic_0237124757_section983311682019)),会在用户表空间"pg\_default",数据库"postgres"下新建schema "snapshot",用于持久化WDR快照数据。 + +根据参数[wdr\_snapshot\_retention\_days](系统性能快照.md#zh-cn_topic_0237124757_section1658494717518)来自动管理快照的生命周期。 + +- **[WDR Snapshot 原信息表](WDR-Snapshot-原信息表.md)** + +- **[WDR Snapshot 数据表](WDR-Snapshot-数据表.md)** + + diff --git "a/content/zh/docs/Developerguide/WDR-Snapshot-\345\216\237\344\277\241\346\201\257\350\241\250.md" "b/content/zh/docs/Developerguide/WDR-Snapshot-\345\216\237\344\277\241\346\201\257\350\241\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..886e2fd16e867da753589d5dd0d4fcecf9743422 --- /dev/null +++ "b/content/zh/docs/Developerguide/WDR-Snapshot-\345\216\237\344\277\241\346\201\257\350\241\250.md" @@ -0,0 +1,7 @@ +# WDR Snapshot 原信息表 + +- **[SNAPSHOT.SNAPSHOT](SNAPSHOT-SNAPSHOT.md)** + +- **[SNAPSHOT.TABLES\_SNAP\_TIMESTAMP](SNAPSHOT-TABLES_SNAP_TIMESTAMP.md)** + + diff --git "a/content/zh/docs/Developerguide/WDR-Snapshot-\346\225\260\346\215\256\350\241\250.md" "b/content/zh/docs/Developerguide/WDR-Snapshot-\346\225\260\346\215\256\350\241\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..9233275a5208c5a6e00e6ff06b2ee3a74dcb9070 --- /dev/null +++ "b/content/zh/docs/Developerguide/WDR-Snapshot-\346\225\260\346\215\256\350\241\250.md" @@ -0,0 +1,6 @@ +# WDR Snapshot 数据表 + +WDR Snapshot数据表命名原则: snap\_\{源数据表\}。 + +WDR Snapshot数据表来源为[DBE\_PERF Schema](DBE_PERF-Schema.md)下所有的视图。 + diff --git a/content/zh/docs/Developerguide/WLM_USER_RESOURCE_CONFIG.md b/content/zh/docs/Developerguide/WLM_USER_RESOURCE_CONFIG.md new file mode 100644 index 0000000000000000000000000000000000000000..d23814e96f2f12421a5e624e819e68bea76a58bb --- /dev/null +++ b/content/zh/docs/Developerguide/WLM_USER_RESOURCE_CONFIG.md @@ -0,0 +1,88 @@ +# WLM\_USER\_RESOURCE\_CONFIG + +WLM\_USER\_RESOURCE\_CONFIG视图显示用户的资源配置信息。 + +**表 1** WLM\_USER\_RESOURCE\_CONFIG字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

userid

+

oid

+

用户oid。

+

username

+

name

+

用户名称。

+

sysadmin

+

boolean

+

是否是sysadmin。

+

rpoid

+

oid

+

资源池的oid。

+

respool

+

name

+

资源池的名称。

+

parentid

+

oid

+

父用户的oid。

+

totalspace

+

bigint

+

占用总空间大小。

+

spacelimit

+

bigint

+

空间大上限。

+

childcount

+

integer

+

子用户数量。

+

childlist

+

text

+

子用户的列表。

+
+ diff --git a/content/zh/docs/Developerguide/WLM_USER_RESOURCE_RUNTIME.md b/content/zh/docs/Developerguide/WLM_USER_RESOURCE_RUNTIME.md new file mode 100644 index 0000000000000000000000000000000000000000..aa720a6da7ab7a88ea4ad3b83ff1dcd300f56c3d --- /dev/null +++ b/content/zh/docs/Developerguide/WLM_USER_RESOURCE_RUNTIME.md @@ -0,0 +1,95 @@ +# WLM\_USER\_RESOURCE\_RUNTIME + +WLM\_USER\_RESOURCE\_RUNTIME视图显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在GUC参数“use\_workload\_manager“为“on“时才有效。 + +**表 1** WLM\_USER\_RESOURCE\_RUNTIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

username

+

name

+

用户名。

+

used_memory

+

integer

+

正在使用的内存大小,单位MB。

+

total_memory

+

integer

+

可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。

+

used_cpu

+

integer

+

正在使用的CPU核数。

+

total_cpu

+

integer

+

在该机器节点上,用户关联控制组的CPU核数总和。

+

used_space

+

bigint

+

已使用的存储空间大小,单位KB。

+

total_space

+

bigint

+

可使用的存储空间大小,单位KB,值为-1表示未限制最大存储空间。

+

used_temp_space

+

bigint

+

已使用的临时空间大小(预留字段,暂未使用),单位KB。

+

total_temp_space

+

bigint

+

可使用的临时空间大小(预留字段,暂未使用),单位KB,值为-1表示未限制最大临时存储空间。

+

used_spill_space

+

bigint

+

已使用的下盘空间大小(预留字段,暂未使用),单位KB。

+

total_spill_space

+

bigint

+

可使用的下盘空间大小(预留字段,暂未使用),单位KB,值为-1表示未限制最大下盘空间。

+
+ diff --git a/content/zh/docs/Developerguide/WORKLOAD_SQL_COUNT.md b/content/zh/docs/Developerguide/WORKLOAD_SQL_COUNT.md new file mode 100644 index 0000000000000000000000000000000000000000..a4f2a167284d337f752cecfd44dbc0a696211d2c --- /dev/null +++ b/content/zh/docs/Developerguide/WORKLOAD_SQL_COUNT.md @@ -0,0 +1,74 @@ +# WORKLOAD\_SQL\_COUNT + +显示当前节点workload上的SQL数量分布。普通用户只可以看到自己在workload上的SQL分布;monadmin可以看到总的workload的负载情况。 + +**表 1** WORKLOAD\_SQL\_COUNT字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

workload

+

name

+

负载名称。

+

select_count

+

bigint

+

select数量。

+

update_count

+

bigint

+

update数量。

+

insert_count

+

bigint

+

insert数量。

+

delete_count

+

bigint

+

delete数量。

+

ddl_count

+

bigint

+

ddl数量。

+

dml_count

+

bigint

+

dml数量。

+

dcl_count

+

bigint

+

dcl数量。

+
+ diff --git a/content/zh/docs/Developerguide/WORKLOAD_SQL_ELAPSE_TIME.md b/content/zh/docs/Developerguide/WORKLOAD_SQL_ELAPSE_TIME.md new file mode 100644 index 0000000000000000000000000000000000000000..8eaaee2ed810a5b8648033fd71402bd3a1fe77fe --- /dev/null +++ b/content/zh/docs/Developerguide/WORKLOAD_SQL_ELAPSE_TIME.md @@ -0,0 +1,137 @@ +# WORKLOAD\_SQL\_ELAPSE\_TIME + +WORKLOAD\_SQL\_ELAPSE\_TIME用来统计workload(业务负载)上的SUID信息。 + +**表 1** WORKLOAD\_SQL\_ELAPSE\_TIME字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

workload

+

name

+

workload(业务负载)名称。

+

total_select_elapse

+

bigint

+

总select的时间花费(单位:微秒)。

+

max_select_elapse

+

bigint

+

最大select的时间花费(单位:微秒)。

+

min_select_elapse

+

bigint

+

最小select的时间花费(单位:微秒)。

+

avg_select_elapse

+

bigint

+

平均select的时间花费(单位:微秒)。

+

total_update_elapse

+

bigint

+

总update的时间花费(单位:微秒)。

+

max_update_elapse

+

bigint

+

最大update的时间花费(单位:微秒)。

+

min_update_elapse

+

bigint

+

最小update的时间花费(单位:微秒)。

+

avg_update_elapse

+

bigint

+

平均update的时间花费(单位:微秒)。

+

total_insert_elapse

+

bigint

+

总insert的时间花费(单位:微秒)。

+

max_insert_elapse

+

bigint

+

最大insert的时间花费(单位:微秒)。

+

min_insert_elapse

+

bigint

+

最小insert的时间花费(单位:微秒)。

+

avg_insert_elapse

+

bigint

+

平均insert的时间花费(单位:微秒)。

+

total_delete_elapse

+

bigint

+

总delete的时间花费(单位:微秒)。

+

max_delete_elapse

+

bigint

+

最大delete的时间花费(单位:微秒)。

+

min_delete_elapse

+

bigint

+

最小delete的时间花费(单位:微秒)。

+

avg_delete_elapse

+

bigint

+

平均delete的时间花费(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/WORKLOAD_TRANSACTION.md b/content/zh/docs/Developerguide/WORKLOAD_TRANSACTION.md new file mode 100644 index 0000000000000000000000000000000000000000..79d11a9f668ca98ba52cca6727e46a741eadb710 --- /dev/null +++ b/content/zh/docs/Developerguide/WORKLOAD_TRANSACTION.md @@ -0,0 +1,109 @@ +# WORKLOAD\_TRANSACTION + +当前节点上负载的事务信息。 + +**表 1** WORKLOAD\_TRANSACTION字段 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

名称

+

类型

+

描述

+

workload

+

name

+

负载的名称。

+

commit_counter

+

bigint

+

用户事务commit数量。

+

rollback_counter

+

bigint

+

用户事务rollback数量。

+

resp_min

+

bigint

+

用户事务最小响应时间(单位:微秒)。

+

resp_max

+

bigint

+

用户事务最大响应时间(单位:微秒)。

+

resp_avg

+

bigint

+

用户事务平均响应时间(单位:微秒)。

+

resp_total

+

bigint

+

用户事务总响应时间(单位:微秒)。

+

bg_commit_counter

+

bigint

+

后台事务commit数量。

+

bg_rollback_counter

+

bigint

+

后台事务rollback数量。

+

bg_resp_min

+

bigint

+

后台事务最小响应时间(单位:微秒)。

+

bg_resp_max

+

bigint

+

后台事务最大响应时间(单位:微秒)。

+

bg_resp_avg

+

bigint

+

后台事务平均响应时间(单位:微秒)。

+

bg_resp_total

+

bigint

+

后台事务总响应时间(单位:微秒)。

+
+ diff --git a/content/zh/docs/Developerguide/Wait-Events.md b/content/zh/docs/Developerguide/Wait-Events.md new file mode 100644 index 0000000000000000000000000000000000000000..76f68a39df09b54625e6b7b214b3c254a253607b --- /dev/null +++ b/content/zh/docs/Developerguide/Wait-Events.md @@ -0,0 +1,7 @@ +# Wait Events + +- **[WAIT\_EVENTS](WAIT_EVENTS.md)** + +- **[GLOBAL\_WAIT\_EVENTS](GLOBAL_WAIT_EVENTS.md)** + + diff --git a/content/zh/docs/Developerguide/Workload-Manager.md b/content/zh/docs/Developerguide/Workload-Manager.md new file mode 100644 index 0000000000000000000000000000000000000000..44fb10424e7bd54d6a3c84729b603ca971c29bac --- /dev/null +++ b/content/zh/docs/Developerguide/Workload-Manager.md @@ -0,0 +1,7 @@ +# Workload Manager + +- **[WLM\_USER\_RESOURCE\_CONFIG](WLM_USER_RESOURCE_CONFIG.md)** + +- **[WLM\_USER\_RESOURCE\_RUNTIME](WLM_USER_RESOURCE_RUNTIME.md)** + + diff --git a/content/zh/docs/Developerguide/Workload.md b/content/zh/docs/Developerguide/Workload.md new file mode 100644 index 0000000000000000000000000000000000000000..6e69fdc69e8bb450ee1fde9c01be14faa35cd4a7 --- /dev/null +++ b/content/zh/docs/Developerguide/Workload.md @@ -0,0 +1,17 @@ +# Workload + +- **[WORKLOAD\_SQL\_COUNT](WORKLOAD_SQL_COUNT.md)** + +- **[SUMMARY\_WORKLOAD\_SQL\_COUNT](SUMMARY_WORKLOAD_SQL_COUNT.md)** + +- **[WORKLOAD\_TRANSACTION](WORKLOAD_TRANSACTION.md)** + +- **[SUMMARY\_WORKLOAD\_TRANSACTION](SUMMARY_WORKLOAD_TRANSACTION.md)** + +- **[GLOBAL\_WORKLOAD\_TRANSACTION](GLOBAL_WORKLOAD_TRANSACTION.md)** + +- **[WORKLOAD\_SQL\_ELAPSE\_TIME](WORKLOAD_SQL_ELAPSE_TIME.md)** + +- **[SUMMARY\_WORKLOAD\_SQL\_ELAPSE\_TIME](SUMMARY_WORKLOAD_SQL_ELAPSE_TIME.md)** + + diff --git a/content/zh/docs/Developerguide/X-Tuner.md b/content/zh/docs/Developerguide/X-Tuner.md new file mode 100644 index 0000000000000000000000000000000000000000..7ac9b1cf74314fba5215dd3d0b23cfc3473e27af --- /dev/null +++ b/content/zh/docs/Developerguide/X-Tuner.md @@ -0,0 +1,13 @@ +# X-Tuner + +- **[概述](概述-8.md)** + +- **[使用指导](使用指导-9.md)** + +- **[获取帮助](获取帮助.md)** + +- **[命令参考](命令参考.md)** + +- **[常见问题处理](常见问题处理-10.md)** + + diff --git "a/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\2641\357\274\211.png" "b/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\2641\357\274\211.png" new file mode 100644 index 0000000000000000000000000000000000000000..2becb07629a18d90fa24ae5450a6237d08a1df33 Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\2641\357\274\211.png" differ diff --git "a/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\2642\357\274\211.png" "b/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\2642\357\274\211.png" new file mode 100644 index 0000000000000000000000000000000000000000..41a7ab13e33a0164f63d32d97b72ecfda7d65ab8 Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\2642\357\274\211.png" differ diff --git "a/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\264\347\244\272\344\276\2133-1\357\274\211.png" "b/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\264\347\244\272\344\276\2133-1\357\274\211.png" new file mode 100644 index 0000000000000000000000000000000000000000..8ba92c4ddd5df0d1b78fe20817ccb0ad95f7c7c5 Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\264\347\244\272\344\276\2133-1\357\274\211.png" differ diff --git "a/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\264\347\244\272\344\276\2133\357\274\211.png" "b/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\264\347\244\272\344\276\2133\357\274\211.png" new file mode 100644 index 0000000000000000000000000000000000000000..f57228342bf497736a5ee69f029191deb1fc7869 Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/12-4-5-4-\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230(\347\244\272\344\276\213\351\224\231\344\271\261\350\260\203\346\225\264\347\244\272\344\276\2133\357\274\211.png" differ diff --git a/content/zh/docs/Developerguide/figures/EXECUTE-IMMEDIATE-dynamic_select_clause.png b/content/zh/docs/Developerguide/figures/EXECUTE-IMMEDIATE-dynamic_select_clause.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8ff4fe5b63750006d7cbda13fb09eb43153b21 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/EXECUTE-IMMEDIATE-dynamic_select_clause.png differ diff --git a/content/zh/docs/Developerguide/figures/FOR_AS_loop.png b/content/zh/docs/Developerguide/figures/FOR_AS_loop.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb95b0afd1cf65cfa2cda35bdf4e076f2bbc5b2 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/FOR_AS_loop.png differ diff --git a/content/zh/docs/Developerguide/figures/IF_THEN.jpg b/content/zh/docs/Developerguide/figures/IF_THEN.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e0c994c47aff0233bc71499b6464a23a88e8b5f2 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/IF_THEN.jpg differ diff --git a/content/zh/docs/Developerguide/figures/IF_THEN_ELSE.jpg b/content/zh/docs/Developerguide/figures/IF_THEN_ELSE.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2f6cbe05da7a9847565189bdd4de6124e909571 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/IF_THEN_ELSE.jpg differ diff --git a/content/zh/docs/Developerguide/figures/IF_THEN_ELSIF_ELSE.png b/content/zh/docs/Developerguide/figures/IF_THEN_ELSIF_ELSE.png new file mode 100644 index 0000000000000000000000000000000000000000..31630a879e9cfa8e5fcd057f096eb8d82bf59db6 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/IF_THEN_ELSIF_ELSE.png differ diff --git "a/content/zh/docs/Developerguide/figures/ODBC\345\274\200\345\217\221\345\272\224\347\224\250\347\250\213\345\272\217\347\232\204\346\265\201\347\250\213.png" "b/content/zh/docs/Developerguide/figures/ODBC\345\274\200\345\217\221\345\272\224\347\224\250\347\250\213\345\272\217\347\232\204\346\265\201\347\250\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..51abcbcd6d35034c6d5754f77fc9a6398cbebd15 Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/ODBC\345\274\200\345\217\221\345\272\224\347\224\250\347\250\213\345\272\217\347\232\204\346\265\201\347\250\213.png" differ diff --git "a/content/zh/docs/Developerguide/figures/ODBC\347\263\273\347\273\237\346\234\272\346\236\204.png" "b/content/zh/docs/Developerguide/figures/ODBC\347\263\273\347\273\237\346\234\272\346\236\204.png" new file mode 100644 index 0000000000000000000000000000000000000000..f66a4d9d3a0b2af3126da1c67968ed90536baad4 Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/ODBC\347\263\273\347\273\237\346\234\272\346\236\204.png" differ diff --git "a/content/zh/docs/Developerguide/figures/SQL\345\274\225\346\223\216\346\211\247\350\241\214\346\237\245\350\257\242\347\261\273SQL\350\257\255\345\217\245\347\232\204\346\265\201\347\250\213.png" "b/content/zh/docs/Developerguide/figures/SQL\345\274\225\346\223\216\346\211\247\350\241\214\346\237\245\350\257\242\347\261\273SQL\350\257\255\345\217\245\347\232\204\346\265\201\347\250\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..15a28deba75f2428c785e0150d2f153140183516 Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/SQL\345\274\225\346\223\216\346\211\247\350\241\214\346\237\245\350\257\242\347\261\273SQL\350\257\255\345\217\245\347\232\204\346\265\201\347\250\213.png" differ diff --git "a/content/zh/docs/Developerguide/figures/SQL\346\211\247\350\241\214\350\256\241\345\210\222\347\244\272\344\276\213.png" "b/content/zh/docs/Developerguide/figures/SQL\346\211\247\350\241\214\350\256\241\345\210\222\347\244\272\344\276\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..f4c43b73c4dab2c8360ba9c4b7894793e3ac2345 Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/SQL\346\211\247\350\241\214\350\256\241\345\210\222\347\244\272\344\276\213.png" differ diff --git a/content/zh/docs/Developerguide/figures/anonymous_block.png b/content/zh/docs/Developerguide/figures/anonymous_block.png new file mode 100644 index 0000000000000000000000000000000000000000..03a1b7fce4fd91051bd03bd391add89f62bb8375 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/anonymous_block.png differ diff --git a/content/zh/docs/Developerguide/figures/assignment_value.png b/content/zh/docs/Developerguide/figures/assignment_value.png new file mode 100644 index 0000000000000000000000000000000000000000..13c05e0886942c714f88dd0644e4432d232c62f7 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/assignment_value.png differ diff --git a/content/zh/docs/Developerguide/figures/call_anonymous_block.png b/content/zh/docs/Developerguide/figures/call_anonymous_block.png new file mode 100644 index 0000000000000000000000000000000000000000..a922995d474f54125c589d24412d1618741946de Binary files /dev/null and b/content/zh/docs/Developerguide/figures/call_anonymous_block.png differ diff --git a/content/zh/docs/Developerguide/figures/call_clause.png b/content/zh/docs/Developerguide/figures/call_clause.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0f3c1b499be68f2b4f1f35b312c05b99834b2d Binary files /dev/null and b/content/zh/docs/Developerguide/figures/call_clause.png differ diff --git a/content/zh/docs/Developerguide/figures/call_procedure.png b/content/zh/docs/Developerguide/figures/call_procedure.png new file mode 100644 index 0000000000000000000000000000000000000000..cc33139552fe08c0814f78ec0fd7b60d3f32a581 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/call_procedure.png differ diff --git a/content/zh/docs/Developerguide/figures/case_when.png b/content/zh/docs/Developerguide/figures/case_when.png new file mode 100644 index 0000000000000000000000000000000000000000..ea133acf7eb8fd0537fbdc782838546bed1f1189 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/case_when.png differ diff --git a/content/zh/docs/Developerguide/figures/close_cursor.jpg b/content/zh/docs/Developerguide/figures/close_cursor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8b55369321f416b7c9286966ea39b5965b66227 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/close_cursor.jpg differ diff --git a/content/zh/docs/Developerguide/figures/cursor_typename.png b/content/zh/docs/Developerguide/figures/cursor_typename.png new file mode 100644 index 0000000000000000000000000000000000000000..ff82ca8dcf75e4c40c7522d75c329e60fb356022 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/cursor_typename.png differ diff --git a/content/zh/docs/Developerguide/figures/declare_variable.png b/content/zh/docs/Developerguide/figures/declare_variable.png new file mode 100644 index 0000000000000000000000000000000000000000..12a9342a08bf2a8777df3407fc296365c3b70e3b Binary files /dev/null and b/content/zh/docs/Developerguide/figures/declare_variable.png differ diff --git a/content/zh/docs/Developerguide/figures/dynamic_cursor_define.png b/content/zh/docs/Developerguide/figures/dynamic_cursor_define.png new file mode 100644 index 0000000000000000000000000000000000000000..f7d670d9ac82638c749868c1f47c9fe6c93edb11 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/dynamic_cursor_define.png differ diff --git a/content/zh/docs/Developerguide/figures/fetch_cursor.png b/content/zh/docs/Developerguide/figures/fetch_cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..2e34d6892396bc589d07d2266a2ee46e66f16898 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/fetch_cursor.png differ diff --git a/content/zh/docs/Developerguide/figures/for_loop.png b/content/zh/docs/Developerguide/figures/for_loop.png new file mode 100644 index 0000000000000000000000000000000000000000..f4adee6a07aabb8fcc209386508b5e270130f32b Binary files /dev/null and b/content/zh/docs/Developerguide/figures/for_loop.png differ diff --git a/content/zh/docs/Developerguide/figures/for_loop_query.png b/content/zh/docs/Developerguide/figures/for_loop_query.png new file mode 100644 index 0000000000000000000000000000000000000000..18fc66d6cf2dbc36e47c594ce47b48c9da569808 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/for_loop_query.png differ diff --git a/content/zh/docs/Developerguide/figures/forall.png b/content/zh/docs/Developerguide/figures/forall.png new file mode 100644 index 0000000000000000000000000000000000000000..a10937813faf2f4f8f5e34f61dd91fbfc5f0623b Binary files /dev/null and b/content/zh/docs/Developerguide/figures/forall.png differ diff --git a/content/zh/docs/Developerguide/figures/loop.png b/content/zh/docs/Developerguide/figures/loop.png new file mode 100644 index 0000000000000000000000000000000000000000..4067af0ae6eff0896ecd4a7a44fbe675e61d64d0 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/loop.png differ diff --git a/content/zh/docs/Developerguide/figures/noselect.png b/content/zh/docs/Developerguide/figures/noselect.png new file mode 100644 index 0000000000000000000000000000000000000000..f66ce422fe2640d9e24b0b85ea461497f05568fc Binary files /dev/null and b/content/zh/docs/Developerguide/figures/noselect.png differ diff --git "a/content/zh/docs/Developerguide/figures/openGauss\346\200\247\350\203\275\350\260\203\344\274\230\346\265\201\347\250\213.png" "b/content/zh/docs/Developerguide/figures/openGauss\346\200\247\350\203\275\350\260\203\344\274\230\346\265\201\347\250\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..1360be8c15cb1b1f3635f4dbf31fdcc101b90943 Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/openGauss\346\200\247\350\203\275\350\260\203\344\274\230\346\265\201\347\250\213.png" differ diff --git a/content/zh/docs/Developerguide/figures/open_dynamic_cursor.png b/content/zh/docs/Developerguide/figures/open_dynamic_cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..8282aee18b8a9e3e20f51296677b84c2293d147a Binary files /dev/null and b/content/zh/docs/Developerguide/figures/open_dynamic_cursor.png differ diff --git a/content/zh/docs/Developerguide/figures/open_for.png b/content/zh/docs/Developerguide/figures/open_for.png new file mode 100644 index 0000000000000000000000000000000000000000..acfed7a343bdf302b0428b613ef2f94a0c9a4130 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/open_for.png differ diff --git a/content/zh/docs/Developerguide/figures/open_static_cursor.png b/content/zh/docs/Developerguide/figures/open_static_cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..52eed83654c09e7958c2a4cbd5da152b4afa810a Binary files /dev/null and b/content/zh/docs/Developerguide/figures/open_static_cursor.png differ diff --git a/content/zh/docs/Developerguide/figures/raise.png b/content/zh/docs/Developerguide/figures/raise.png new file mode 100644 index 0000000000000000000000000000000000000000..85411be452cfb2aba72afd041e02139478b173d2 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/raise.png differ diff --git a/content/zh/docs/Developerguide/figures/raise_condition.png b/content/zh/docs/Developerguide/figures/raise_condition.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f844c357e3a4bc0acecfe96938a35e8f6c568a Binary files /dev/null and b/content/zh/docs/Developerguide/figures/raise_condition.png differ diff --git a/content/zh/docs/Developerguide/figures/raise_format.png b/content/zh/docs/Developerguide/figures/raise_format.png new file mode 100644 index 0000000000000000000000000000000000000000..c278db49b518b0f9e52192cc4aa5ad66fa1e646d Binary files /dev/null and b/content/zh/docs/Developerguide/figures/raise_format.png differ diff --git a/content/zh/docs/Developerguide/figures/raise_option.png b/content/zh/docs/Developerguide/figures/raise_option.png new file mode 100644 index 0000000000000000000000000000000000000000..2c28d3c5ffa7084dc29383b525d4a3eb7e99db8d Binary files /dev/null and b/content/zh/docs/Developerguide/figures/raise_option.png differ diff --git a/content/zh/docs/Developerguide/figures/raise_sqlstate.png b/content/zh/docs/Developerguide/figures/raise_sqlstate.png new file mode 100644 index 0000000000000000000000000000000000000000..6b9d3c19e90890ca0f889a13db0393c708e1e614 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/raise_sqlstate.png differ diff --git "a/content/zh/docs/Developerguide/figures/record\347\261\273\345\236\213\347\232\204\350\257\255\346\263\225.png" "b/content/zh/docs/Developerguide/figures/record\347\261\273\345\236\213\347\232\204\350\257\255\346\263\225.png" new file mode 100644 index 0000000000000000000000000000000000000000..339ec5a43417ec3331fd06ca60e23342e75f2a7a Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/record\347\261\273\345\236\213\347\232\204\350\257\255\346\263\225.png" differ diff --git a/content/zh/docs/Developerguide/figures/return_clause.jpg b/content/zh/docs/Developerguide/figures/return_clause.jpg new file mode 100644 index 0000000000000000000000000000000000000000..41ee83fd8a4f819aa088be9e06cd028c5e35db6c Binary files /dev/null and b/content/zh/docs/Developerguide/figures/return_clause.jpg differ diff --git a/content/zh/docs/Developerguide/figures/static_cursor_define.jpg b/content/zh/docs/Developerguide/figures/static_cursor_define.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5150409e5b3c37d82c777137d2bce68ff17df664 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/static_cursor_define.jpg differ diff --git a/content/zh/docs/Developerguide/figures/using_clause-0.png b/content/zh/docs/Developerguide/figures/using_clause-0.png new file mode 100644 index 0000000000000000000000000000000000000000..95fd0c9fc8230f3db6f343a3213d7623b9f4fc77 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/using_clause-0.png differ diff --git a/content/zh/docs/Developerguide/figures/using_clause-1.png b/content/zh/docs/Developerguide/figures/using_clause-1.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce079a0d75d31435f76fcf094a7eb36bf172e69 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/using_clause-1.png differ diff --git a/content/zh/docs/Developerguide/figures/using_clause-2.png b/content/zh/docs/Developerguide/figures/using_clause-2.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce079a0d75d31435f76fcf094a7eb36bf172e69 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/using_clause-2.png differ diff --git a/content/zh/docs/Developerguide/figures/using_clause.png b/content/zh/docs/Developerguide/figures/using_clause.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d894a3f6ca61503cce2a7d9eac808b01bce590 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/using_clause.png differ diff --git a/content/zh/docs/Developerguide/figures/when_clause.png b/content/zh/docs/Developerguide/figures/when_clause.png new file mode 100644 index 0000000000000000000000000000000000000000..e03d843e350d381cc518fbbd18998f338b2ee88a Binary files /dev/null and b/content/zh/docs/Developerguide/figures/when_clause.png differ diff --git a/content/zh/docs/Developerguide/figures/while_loop.png b/content/zh/docs/Developerguide/figures/while_loop.png new file mode 100644 index 0000000000000000000000000000000000000000..66506a24dd6442e143b554f5e8ef37501e612102 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/while_loop.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0118861065.jpg b/content/zh/docs/Developerguide/figures/zh-cn_image_0118861065.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9bbeac003592a2cf52c838e108b4978d903b5ad3 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0118861065.jpg differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0246254080.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0246254080.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b8167d67ed0337a0441c449aaa60e91f2b7398 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0246254080.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0246254081.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0246254081.png new file mode 100644 index 0000000000000000000000000000000000000000..b180446c80d35137031f1fcce446101cdb50c2ac Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0246254081.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0246254082.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0246254082.png new file mode 100644 index 0000000000000000000000000000000000000000..fb06b2b05dcc099bb0b4f53675cd187699411f98 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0246254082.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0252660975.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0252660975.png new file mode 100644 index 0000000000000000000000000000000000000000..8d006d2ba771efb806ff19e93555ecc0d5eaf2d3 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0252660975.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0252663634.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0252663634.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c43b73c4dab2c8360ba9c4b7894793e3ac2345 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0252663634.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253028833.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253028833.png new file mode 100644 index 0000000000000000000000000000000000000000..511de3baaf353522deb5e2a991490aa17ec5f062 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253028833.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253030479.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253030479.png new file mode 100644 index 0000000000000000000000000000000000000000..7aad3aefaabd51111ef2ef922fb38d088a454ba2 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253030479.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253032870.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253032870.png new file mode 100644 index 0000000000000000000000000000000000000000..34ee63b8e7ca84c24a46ec9257d00e11985998fd Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253032870.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253036670.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253036670.png new file mode 100644 index 0000000000000000000000000000000000000000..8e8fdc24f85d10f15b6defabc8fa90d0b127c753 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253036670.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253037239.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253037239.png new file mode 100644 index 0000000000000000000000000000000000000000..bbed7a77eed8a6eed3f9c2c958a6dd52941696fa Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253037239.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253038757.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253038757.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c2716f9092286367989af4ff35649f88ca09f5 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253038757.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253082069.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253082069.png new file mode 100644 index 0000000000000000000000000000000000000000..9686f9c39dbce6deecadc9af4a4cdf1f18cc0831 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253082069.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253403489.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253403489.png new file mode 100644 index 0000000000000000000000000000000000000000..058a79dd9fb3da7d5b74f799b4553b560ba87998 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253403489.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253403490.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253403490.png new file mode 100644 index 0000000000000000000000000000000000000000..69f157ffe2306cb88837aba31ef75b7397cd6ac6 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253403490.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253404022.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253404022.png new file mode 100644 index 0000000000000000000000000000000000000000..035210281b8a1fd46923c18896ac7a183f3bf631 Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253404022.png differ diff --git a/content/zh/docs/Developerguide/figures/zh-cn_image_0253404023.png b/content/zh/docs/Developerguide/figures/zh-cn_image_0253404023.png new file mode 100644 index 0000000000000000000000000000000000000000..3210b21a485aea2e1950c5d9cd0325aa9547aeec Binary files /dev/null and b/content/zh/docs/Developerguide/figures/zh-cn_image_0253404023.png differ diff --git "a/content/zh/docs/Developerguide/figures/\351\207\207\347\224\250JDBC\345\274\200\345\217\221\345\272\224\347\224\250\347\250\213\345\272\217\347\232\204\346\265\201\347\250\213.png" "b/content/zh/docs/Developerguide/figures/\351\207\207\347\224\250JDBC\345\274\200\345\217\221\345\272\224\347\224\250\347\250\213\345\272\217\347\232\204\346\265\201\347\250\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..884b9343d59ad1a297845d7c097bc6c9e3743f51 Binary files /dev/null and "b/content/zh/docs/Developerguide/figures/\351\207\207\347\224\250JDBC\345\274\200\345\217\221\345\272\224\347\224\250\347\250\213\345\272\217\347\232\204\346\265\201\347\250\213.png" differ diff --git a/content/zh/docs/Developerguide/java-sql-PreparedStatement.md b/content/zh/docs/Developerguide/java-sql-PreparedStatement.md index 305eddf9b3c1ae81a436d822f85ece1be79413fc..f5eae2c33ed6af781cb5d0578c29b56811648cdc 100644 --- a/content/zh/docs/Developerguide/java-sql-PreparedStatement.md +++ b/content/zh/docs/Developerguide/java-sql-PreparedStatement.md @@ -111,13 +111,6 @@ java.sql.PreparedStatement是预处理语句接口。

Yes

-

setNString(int parameterIndex, String value)

- -

void

- -

Yes

- -

setShort(int parameterIndex, short x)

void

diff --git a/content/zh/docs/Developerguide/libpq.md b/content/zh/docs/Developerguide/libpq.md index 3652014c139f894add7cadead6277591e3d5e7e3..18ace707969be1d0101a6048f70584dd9a27802b 100644 --- a/content/zh/docs/Developerguide/libpq.md +++ b/content/zh/docs/Developerguide/libpq.md @@ -8,7 +8,7 @@ - **[取消正在处理的查询](取消正在处理的查询.md)** -- **[示例](示例-10.md)** +- **[示例](示例-3.md)** - **[链接字符](链接字符.md)** diff --git "a/content/zh/docs/Developerguide/openGauss\344\272\213\345\212\241.md" "b/content/zh/docs/Developerguide/openGauss\344\272\213\345\212\241.md" index 44d1d063b4009e282690f3cd94e4bdaad35c6ba4..e9c7bbbf9fdb0d3c724aeddf134ca051aded8e20 100644 --- "a/content/zh/docs/Developerguide/openGauss\344\272\213\345\212\241.md" +++ "b/content/zh/docs/Developerguide/openGauss\344\272\213\345\212\241.md" @@ -13,7 +13,6 @@ - serializable:openGauss中等价于REPEATABLE READ。 - read committed:只能读取已提交的事务的数据(缺省),不能读取到未提交的数据。 - repeatable read:仅能读取事务开始之前提交的数据,不能读取未提交的数据以及在事务执行期间由其它并发事务提交的修改。 -- read uncommitted:读未提交,可以读取任何时刻的数据。 - default:设置为defualt\_transaction\_isolation所设隔离级别。 **默认值:**read committed @@ -115,7 +114,9 @@ 该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 -**取值范围:**0\~3 +该参数是内部参数,用户不能自己去设置参数值。 + +**取值范围:**0\~2 - 1 表示使用一主多备模式。 - 0 表示主备从模式。 diff --git a/content/zh/docs/Developerguide/record.md b/content/zh/docs/Developerguide/record.md new file mode 100644 index 0000000000000000000000000000000000000000..d5d2934631b2536a03ae84af15d4fd1caf70ead4 --- /dev/null +++ b/content/zh/docs/Developerguide/record.md @@ -0,0 +1,114 @@ +# record + +## record类型的变量 + +创建一个record变量的方式: + +定义一个record类型 ,然后使用该类型来声明一个变量。 + +## 语法 + +record类型的语法参见[图1](#zh-cn_topic_0237122215_fig092918316312)。 + +**图 1** record类型的语法 +![](figures/record类型的语法.png "record类型的语法") + +对以上语法格式的解释如下: + +- record\_type:声明的类型名称。 +- field:record类型中的成员名称。 +- datatype:record类型中成员的类型。 +- expression:设置默认值的表达式。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>在openGauss中: +>- record类型变量的赋值支持: +> - 在函数或存储过程的声明阶段,声明一个record类型,并且可以在该类型中定义成员变量。 +> - 一个record变量到另一个record变量的赋值。 +> - SELECT INTO和FETCH向一个record类型的变量中赋值。 +> - 将一个NULL值赋值给一个record变量。 +>- 不支持INSERT和UPDATE语句使用record变量进行插入数据和更新数据。 +>- 如果成员有复合类型,在声明阶段不支持指定默认值,该行为同声明阶段的变量一样。 + +## 示例 + +``` +下面存储过程中用到的表定义如下: +postgres=# \d emp_rec + Table "public.emp_rec" + Column | Type | Modifiers +----------+--------------------------------+----------- + empno | numeric(4,0) | not null + ename | character varying(10) | + job | character varying(9) | + mgr | numeric(4,0) | + hiredate | timestamp(0) without time zone | + sal | numeric(7,2) | + comm | numeric(7,2) | + deptno | numeric(2,0) | + +--演示在存储过程中对数组进行操作。 +postgres=# CREATE OR REPLACE FUNCTION regress_record(p_w VARCHAR2) +RETURNS +VARCHAR2 AS $$ +DECLARE + + --声明一个record类型. + type rec_type is record (name varchar2(100), epno int); + employer rec_type; + + --使用%type声明record类型 + type rec_type1 is record (name emp_rec.ename%type, epno int not null :=10); + employer1 rec_type1; + + --声明带有默认值的record类型 + type rec_type2 is record ( + name varchar2 not null := 'SCOTT', + epno int not null :=10); + employer2 rec_type2; + CURSOR C1 IS select ename,empno from emp_rec order by 1 limit 1; + +BEGIN + --对一个record类型的变量的成员赋值。 + employer.name := 'WARD'; + employer.epno = 18; + raise info 'employer name: % , epno:%', employer.name, employer.epno; + + --将一个record类型的变量赋值给另一个变量。 + employer1 := employer; + raise info 'employer1 name: % , epno: %',employer1.name, employer1.epno; + + --将一个record类型变量赋值为NULL。 + employer1 := NULL; + raise info 'employer1 name: % , epno: %',employer1.name, employer1.epno; + + --获取record变量的默认值。 + raise info 'employer2 name: % ,epno: %', employer2.name, employer2.epno; + + --在for循环中使用record变量 + for employer in select ename,empno from emp_rec order by 1 limit 1 + loop + raise info 'employer name: % , epno: %', employer.name, employer.epno; + end loop; + + --在select into 中使用record变量。 + select ename,empno into employer2 from emp_rec order by 1 limit 1; + raise info 'employer name: % , epno: %', employer2.name, employer2.epno; + + --在cursor中使用record变量。 + OPEN C1; + FETCH C1 INTO employer2; + raise info 'employer name: % , epno: %', employer2.name, employer2.epno; + CLOSE C1; + RETURN employer.name; +END; +$$ +LANGUAGE plpgsql; + +--调用该存储过程。 +postgres=# CALL regress_record('abc'); + +--删除存储过程。 +postgres=# DROP PROCEDURE regress_record; +``` + diff --git "a/content/zh/docs/Developerguide/\344\270\211\346\235\203\345\210\206\347\253\213.md" "b/content/zh/docs/Developerguide/\344\270\211\346\235\203\345\210\206\347\253\213.md" index eb576e6e44bd550452d7836a7ff6172a6a976d6e..9cd11b584a59f6ff2f415618bcd3cfea3222407a 100644 --- "a/content/zh/docs/Developerguide/\344\270\211\346\235\203\345\210\206\347\253\213.md" +++ "b/content/zh/docs/Developerguide/\344\270\211\346\235\203\345\210\206\347\253\213.md" @@ -1,8 +1,8 @@ # 三权分立 -[默认权限机制](默认权限机制.md#ZH-CN_TOPIC_0246507958)和[管理员](管理员.md)两节的描述基于的是openGauss创建之初的默认情况。从前面的介绍可以看出,默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。 +[默认权限机制](默认权限机制.md)和[管理员](管理员.md)两节的描述基于的是openGauss创建之初的默认情况。从前面的介绍可以看出,默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。 -在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立,将系统管理员的权限分立给安全管理员和审计管理员。 +在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立。将系统管理员的部分权限分立给安全管理员和审计管理员,形成系统管理员、安全管理员和审计管理员三权分立。 三权分立后,系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力。即不再拥有创建角色和用户的权限,并不再拥有查看和维护数据库审计日志的权限。关于CREATEROLE属性和AUDITADMIN属性的更多信息请参考[CREATE ROLE](CREATE-ROLE.md)。 @@ -62,27 +62,27 @@

模式

-

对除dbms_perf以外的所有模式有所有的权限。

+

对除dbe_perf以外的所有模式有所有的权限。

-

仅对dbms_perf模式和自己的模式有所有的权限,对其他用户的模式无权限。

+

仅对dbe_perf模式和自己的模式有所有的权限,对其他用户的模式无权限。

仅对自己的模式有所有的权限,对其他用户的模式无权限。

函数

-

对除dbms_perf模式下的函数以外的所有的函数有所有的权限。

+

对除dbe_perf模式下的函数以外的所有的函数有所有的权限。

-

仅对dbms_perf模式下的和自己的函数有所有的权限,对其他用户放在public这个公共模式下的函数有调用的权限,对其他用户放在其他模式下的函数无权限。

+

仅对dbe_perf模式下的和自己的函数有所有的权限,对其他用户放在public这个公共模式下的函数有调用的权限,对其他用户放在其他模式下的函数无权限。

仅对自己的函数有所有的权限,对其他用户放在public这个公共模式下的函数有调用的权限,对其他用户放在其他模式下的函数无权限。

自定义视图

-

对除dbms_perf模式下的视图以外的所有的视图有所有的权限。

+

对除dbe_perf模式下的视图以外的所有的视图有所有的权限。

-

仅对dbms_perf模式下的和自己的视图有所有的权限,对其他用户的视图无权限。

+

仅对dbe_perf模式下的和自己的视图有所有的权限,对其他用户的视图无权限。

仅对自己的视图有所有的权限,对其他用户的视图无权限。

@@ -91,7 +91,7 @@

可以查看所有系统表和视图。

-

只可以查看部分系统表和视图。详细请参见系统表和系统视图

+

只可以查看部分系统表和视图。详细请参见系统表和系统视图

diff --git "a/content/zh/docs/Developerguide/\344\270\273\346\234\215\345\212\241\345\231\250.md" "b/content/zh/docs/Developerguide/\344\270\273\346\234\215\345\212\241\345\231\250.md" index 7d1eb680ccf08b87dbfb5024af4438f684a5982d..d393ad842866c18f08a012608b02b043290fbda2 100644 --- "a/content/zh/docs/Developerguide/\344\270\273\346\234\215\345\212\241\345\231\250.md" +++ "b/content/zh/docs/Developerguide/\344\270\273\346\234\215\345\212\241\345\231\250.md" @@ -18,7 +18,7 @@ **参数说明:**指定在备机同步失败时,是否阻塞主机。 -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 +该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 **取值范围:**布尔型 @@ -34,7 +34,7 @@ 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 >![](public_sys-resources/icon-notice.gif) **须知:** ->- 此参数属于性能测试参数,用于测试带有备机和不带备机的性能参数。关闭参数后,不能进行升级、切换、故障等异常场景测试,否则会出现主备从不一致的情况。 +>- 此参数属于性能测试参数,用于测试带有备机和不带备机的性能参数。关闭参数后,不能进行切换、故障等异常场景测试,否则会出现主备从不一致的情况。 >- 此参数属于受控参数,不建议正常业务场景下关闭此参数。 **取值范围:**布尔型 @@ -76,7 +76,7 @@ 该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 -**取值范围:**整型,4096\~1072693248,单位为KB。 +**取值范围:**整型,4096\~1047552,单位为KB。 **默认值:**128MB(即131072KB) diff --git "a/content/zh/docs/Developerguide/\344\272\213\345\212\241\346\216\247\345\210\266.md" "b/content/zh/docs/Developerguide/\344\272\213\345\212\241\346\216\247\345\210\266.md" index f72b35160035d19596213d1b1c6c407f97347b7f..716022410574de91704693265069103fafac5b7b 100644 --- "a/content/zh/docs/Developerguide/\344\272\213\345\212\241\346\216\247\345\210\266.md" +++ "b/content/zh/docs/Developerguide/\344\272\213\345\212\241\346\216\247\345\210\266.md" @@ -4,7 +4,7 @@ ## 启动事务 -openGauss通过START TRANSACTION和BEGIN语法启动事务,请参考[SET TRANSACTION](SET-TRANSACTION.md)和[BEGIN](BEGIN.md)。 +openGauss通过START TRANSACTION和BEGIN语法启动事务,请参考[START TRANSACTION](START-TRANSACTION.md)和[BEGIN](BEGIN.md)。 ## 设置事务 @@ -16,7 +16,7 @@ openGauss通过COMMIT或者END可完成提交事务的功能,即提交事务 ## 回滚事务 -回滚是在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销。请参考[ROLLBACK](ROLLBACK.md#ZH-CN_TOPIC_0242370644)。 +回滚是在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销。请参考[ROLLBACK](ROLLBACK.md)。 >![](public_sys-resources/icon-note.gif) **说明:** >数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,如果其中有一个语句失败,那么整个请求都将会被回滚。 diff --git "a/content/zh/docs/Developerguide/\344\272\214\350\277\233\345\210\266\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/\344\272\214\350\277\233\345\210\266\347\261\273\345\236\213.md" index b740e30f1d30491728a5b57e2fb86b55fc101887..47e315d851e26e5ebd1a3b246eee6aa651da7925 100644 --- "a/content/zh/docs/Developerguide/\344\272\214\350\277\233\345\210\266\347\261\273\345\236\213.md" +++ "b/content/zh/docs/Developerguide/\344\272\214\350\277\233\345\210\266\347\261\273\345\236\213.md" @@ -16,6 +16,7 @@ openGauss支持的二进制类型请参见[表1](#zh-cn_topic_0237121951_zh-cn_t

BLOB

二进制大对象

+

说明:

列存不支持BLOB类型

diff --git "a/content/zh/docs/Developerguide/\344\273\216\350\277\231\351\207\214\345\274\200\345\247\213.md" "b/content/zh/docs/Developerguide/\344\273\216\350\277\231\351\207\214\345\274\200\345\247\213.md" index 09132cd987e75d67f2864014a6588d53befdf072..653ab5c2f7e8d21d30d30bc16e05dbdb36efc276 100644 --- "a/content/zh/docs/Developerguide/\344\273\216\350\277\231\351\207\214\345\274\200\345\247\213.md" +++ "b/content/zh/docs/Developerguide/\344\273\216\350\277\231\351\207\214\345\274\200\345\247\213.md" @@ -21,7 +21,7 @@ openGauss正常运行。 当结果显示为如下信息,则表示连接成功。 ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. @@ -51,6 +51,8 @@ openGauss正常运行。 如上创建了一个用户名为joe,密码为Bigdata@123的用户。 + **引申信息:**关于数据库用户的更多信息请参考[管理用户及权限](管理用户及权限.md)。 + 4. 创建数据库。 ``` @@ -63,12 +65,12 @@ openGauss正常运行。 CREATE DATABASE ``` - 创建完db\_tpcc数据库后,就可以按如下方法退出postgres数据库,使用新用户连接到此数据库执行接下来的创建表等操作。当然,也可以选择继续在默认的postgres数据库下做后续的体验。 + db\_tpcc数据库创建完成后,就可以按如下方法退出postgres数据库,使用新用户连接到db\_tpcc数据库执行创建表等操作。您也可以选择继续在默认的postgres数据库下进行后续的体验。 ``` postgres=# \q gsql -d db_tpcc -p 8000 -U joe -W Bigdata@123 - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. @@ -107,7 +109,6 @@ openGauss正常运行。 ``` ``` - CREATE TABLE ``` @@ -139,7 +140,7 @@ openGauss正常运行。 - 关于创建表的更多信息请参见[创建和管理表](创建和管理表.md)。 - 除了创建的表以外,数据库还包含很多系统表。这些系统表包含openGauss安装信息以及openGauss上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。请参见[查看系统表](查看系统表.md)。 - openGauss支持行列混合存储,为各种复杂场景下的交互分析提供极致查询性能,关于存储模型的选择,请参考[规划存储模型](规划存储模型.md)。 + openGauss支持行列混合存储,为各种复杂场景下的交互分析提供较高的查询性能,关于存储模型的选择,请参考[规划存储模型](规划存储模型.md)。 diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250COPY-FROM-STDIN\345\257\274\345\205\245\346\225\260\346\215\256.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250COPY-FROM-STDIN\345\257\274\345\205\245\346\225\260\346\215\256.md" index 8223c25d55275084f8d93fc37d59024eb2929372..73397b75bd2ce7259cd5998fd2ac0c0b9629bd9d 100644 --- "a/content/zh/docs/Developerguide/\344\275\277\347\224\250COPY-FROM-STDIN\345\257\274\345\205\245\346\225\260\346\215\256.md" +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250COPY-FROM-STDIN\345\257\274\345\205\245\346\225\260\346\215\256.md" @@ -6,6 +6,6 @@ - **[示例1:通过本地文件导入导出数据](示例1-通过本地文件导入导出数据.md)** -- **[示例2:从MySQL向openGauss进行数据迁移](示例2-从MySQL向openGauss进行数据迁移.md)** +- **[示例2:从MY向openGauss数据库进行数据迁移](示例2-从MY向openGauss数据库进行数据迁移.md)** diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250CREATE-TABLE-LIKE\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250CREATE-TABLE-LIKE\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" index c30c31d0c9908a721efe67c12fb57d358e03657f..37aa3a978e13640d5f9f2026a77e348f4a5e54e0 100644 --- "a/content/zh/docs/Developerguide/\344\275\277\347\224\250CREATE-TABLE-LIKE\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250CREATE-TABLE-LIKE\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" @@ -1,6 +1,6 @@ # 使用CREATE TABLE LIKE执行深层复制 -该方法使用CREATE TABLE LIKE语句创建原始表的副本,将原始表的数据填充至副本并重命名副本,完成原始表的复制。该方法不继承父表的主键和外键属性,您可以使用ALTER TABLE语句来添加它们。 +该方法使用CREATE TABLE LIKE语句创建原始表的副本,将原始表的数据填充至副本并重命名副本,完成原始表的复制。该方法不继承父表的主键属性,您可以使用ALTER TABLE语句来添加它们。 ## 操作步骤 diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250CREATE-TABLE\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250CREATE-TABLE\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" index 1ba5075d43a214e93ed910499699aa7549fe4693..62e3ffc2fe0c514d46debf466303cd39c9361659 100644 --- "a/content/zh/docs/Developerguide/\344\275\277\347\224\250CREATE-TABLE\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250CREATE-TABLE\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" @@ -2,7 +2,7 @@ 该方法使用CREATE TABLE语句创建原始表的副本,将原始表的数据填充至副本并重命名副本,完成原始表的复制。 -在创建新表时,可以指定表以及列属性,包括主键和外键。 +在创建新表时,可以指定表以及列属性,比如主键。 ## 操作步骤 diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250CSV\346\240\274\345\274\217\345\206\231\346\227\245\345\277\227.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250CSV\346\240\274\345\274\217\345\206\231\346\227\245\345\277\227.md" index 209d954b7a4386b9d4e644b44a37cd290a314c95..bb0ad16cc01c17a9941e6d80a39c71dea40d6a96 100644 --- "a/content/zh/docs/Developerguide/\344\275\277\347\224\250CSV\346\240\274\345\274\217\345\206\231\346\227\245\345\277\227.md" +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250CSV\346\240\274\345\274\217\345\206\231\346\227\245\345\277\227.md" @@ -15,9 +15,10 @@ CREATE TABLE postgres_log ( log_time timestamp(3) with time zone, +node_name text, user_name text, database_name text, -process_id integer, +process_id bigint, connection_from text, "session_id" text, session_line_num bigint, @@ -25,6 +26,8 @@ command_tag text, session_start_time timestamp with time zone, virtual_transaction_id text, transaction_id bigint, +query_id bigint, +module text, error_severity text, sql_state_code text, message text, @@ -36,8 +39,7 @@ context text, query text, query_pos integer, location text, -application_name text, -PRIMARY KEY ("transaction_id", session_line_num) +application_name text ); ``` @@ -60,108 +62,117 @@ PRIMARY KEY ("transaction_id", session_line_num)

毫秒级的时间戳

-

sql_state_code

+

module

-

SQLSTATE代码

+

日志所属模块

+ + +

node_name

+ +

节点名称

+ +

error_severity

+ +

ERRORSTATE代码

user_name

用户名

-

message

+

sql_state_code

-

错误消息

+

SQLSTATE代码

database_name

数据库名

-

detail

+

message

-

详细错误消息

+

错误消息

process_id

进程ID

-

hint

+

detail

-

提示

+

详细错误消息

connection_from

客户主机:端口号

-

internal_query

+

hint

-

内部查询(查询那些导致错误的信息,如果有的话)

+

提示

session_id

会话ID

-

internal_query_pos

+

internal_query

-

内部查询指针

+

内部查询(查询那些导致错误的信息,如果有的话)

session_line_num

每个会话的行数

-

context

+

internal_query_pos

-

环境

+

内部查询指针

command_tag

命令标签

-

query

+

context

-

错误发生位置的字符统计

+

环境

session_start_time

会话开始时间

-

query_pos

+

query

-

错误发生位置指针

+

错误发生位置的字符统计

virtual_transaction_id

常规事务

-

location

+

query_pos

-

openGauss源代码中错误的位置(如果log_error_verbosity的值设为verbose )

+

错误发生位置指针

transaction_id

事务ID

-

application_name

+

location

-

应用名称

+

openGauss源代码中错误的位置(如果log_error_verbosity的值设为verbose )

-

error_state_code

+

query_id

-

ERRORSTATE代码

+

查询ID

-

-

+

application_name

-

-

+

应用名称

@@ -183,5 +194,4 @@ COPY postgres_log FROM '/opt/data/pg_log/logfile.csv' WITH csv; - 设置[log\_filename](记录日志的位置.md#zh-cn_topic_0237124721_zh-cn_topic_0059778787_s3226ae3209154e249928c24ec67c5809)和[log\_rotation\_age](记录日志的位置.md#zh-cn_topic_0237124721_zh-cn_topic_0059778787_s3ce09b8a7ae543b18fae13a821a725a5),为日志文件提供一个一致的、可预测的命名方案。通过日志文件名,预测一个独立的日志文件完成并进入准备导入状态的时间。 - 将[log\_rotation\_size](记录日志的位置.md#zh-cn_topic_0237124721_zh-cn_topic_0059778787_s282e72143bb14915bedb4b432586b07e)设为0来终止基于尺寸的日志回滚,因为基于尺寸的日志回滚让预测日志文件名变得非常的困难。 - 将[log\_truncate\_on\_rotation](记录日志的位置.md#zh-cn_topic_0237124721_zh-cn_topic_0059778787_s143b6d35ddbe48b8810106a4d3929e8a)设为on以便区分在同一日志文件中旧的日志数据和新的日志数据。 -- [表1](#zh-cn_topic_0237124724_zh-cn_topic_0059779007_zh-cn_topic_0058967802_table44188316)包含了一个特定的主键,对防止意外导致导入两次相同的信息起到保护作用。COPY命令要求所有的数据在同一时间进行导入,所以在COPY过程中出现的所有错误都会导致整个导入失败。多次对同一日志文件进行导入会发生主键冲突,导致导入失败,请等到日志文件写入完成后再执行导入。设置主键也会限制日志没有写完整时部分日志的导入。 diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250Plan-Hint\350\277\233\350\241\214\350\260\203\344\274\230.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250Plan-Hint\350\277\233\350\241\214\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..225074aff05c37e940f17b8ff5e5fadc203ffcf5 --- /dev/null +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250Plan-Hint\350\277\233\350\241\214\350\260\203\344\274\230.md" @@ -0,0 +1,17 @@ +# 使用Plan Hint进行调优 + +- **[Plan Hint调优概述](Plan-Hint调优概述.md)** + +- **[Join顺序的Hint](Join顺序的Hint.md)** + +- **[Join方式的Hint](Join方式的Hint.md)** + +- **[行数的Hint](行数的Hint.md)** + +- **[Scan方式的Hint](Scan方式的Hint.md)** + +- **[子链接块名的hint](子链接块名的hint.md)** + +- **[Hint的错误、冲突及告警](Hint的错误-冲突及告警.md)** + + diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250gs_dump\345\222\214gs_dumpall\345\221\275\344\273\244\345\257\274\345\207\272\346\225\260\346\215\256.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250gs_dump\345\222\214gs_dumpall\345\221\275\344\273\244\345\257\274\345\207\272\346\225\260\346\215\256.md" index 7646992375246eabbc58371f7e74db172b31485e..b84cd9e2ca9ce9e12b2251d53dfa84aea2dbdaf0 100644 --- "a/content/zh/docs/Developerguide/\344\275\277\347\224\250gs_dump\345\222\214gs_dumpall\345\221\275\344\273\244\345\257\274\345\207\272\346\225\260\346\215\256.md" +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250gs_dump\345\222\214gs_dumpall\345\221\275\344\273\244\345\257\274\345\207\272\346\225\260\346\215\256.md" @@ -1,6 +1,6 @@ # 使用gs\_dump和gs\_dumpall命令导出数据 -- **[概述](概述-12.md)** +- **[概述](概述-5.md)** - **[导出单个数据库](导出单个数据库.md)** diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250gs_restore\345\221\275\344\273\244\345\257\274\345\205\245\346\225\260\346\215\256.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250gs_restore\345\221\275\344\273\244\345\257\274\345\205\245\346\225\260\346\215\256.md" index 5b78d7ae6d208c4413556caae27a3a789c652cf0..8d86ab6f070b89faa95bd05318fdd8191f994d39 100644 --- "a/content/zh/docs/Developerguide/\344\275\277\347\224\250gs_restore\345\221\275\344\273\244\345\257\274\345\205\245\346\225\260\346\215\256.md" +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250gs_restore\345\221\275\344\273\244\345\257\274\345\205\245\346\225\260\346\215\256.md" @@ -2,7 +2,7 @@ ## 操作场景 -gs\_restore是openGauss提供的与gs\_dump配套的导入工具。通过该工具,可将gs\_dump导出的文件导入至数据库。gs\_restore支持导入的文件格式包含自定义归档格式、目录归档格式和tar归档格式。 +gs\_restore是openGauss数据库提供的与gs\_dump配套的导入工具。通过该工具,可将gs\_dump导出的文件导入至数据库。gs\_restore支持导入的文件格式包含自定义归档格式、目录归档格式和tar归档格式。 gs\_restore具备如下两种功能。 @@ -93,7 +93,7 @@ gs\_restore工具在导入时,允许用户选择需要导入的内容,并支 - 其他参数说明请参见《工具参考》中“服务端工具 \> gs\_restor”章节。 + 其他参数说明请参见《工具参考》中“服务端工具 \> gs\_restore”章节。 ## 示例 @@ -176,6 +176,7 @@ human_resource=# select * from hr.staffs; 201 | Michael | Hartstein | MHARTSTE | 515.123.5555 | 1996-02-17 00:00:00 | MK_MAN | 13000.00 | | 100 | 20 gsql -d human_resource -p 8000 + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. @@ -262,6 +263,7 @@ restore operation successful total time: 23472 ms gsql -d backupdb -p 8000 -r + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. @@ -287,6 +289,7 @@ restore operation successful total time: 554 ms gsql -d backupdb -p 8000 -r + gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250gsql\350\277\236\346\216\245.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250gsql\350\277\236\346\216\245.md" index 8d081fde5f488e69d5e5338572e7d80acaeffda5..a92b16657a6d311135488d30bdff2790ffbf2f87 100644 --- "a/content/zh/docs/Developerguide/\344\275\277\347\224\250gsql\350\277\236\346\216\245.md" +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250gsql\350\277\236\346\216\245.md" @@ -37,9 +37,9 @@ gsql是openGauss提供的在命令行下运行的数据库连接工具。此工 omm用户是管理员用户,因此系统显示“DBNAME=\#”。若使用普通用户身份登录和连接数据库,系统显示“DBNAME=\>”。 - “Non-SSL connection”表示未使用SSL方式连接数据库。 + “Non-SSL connection”表示未使用SSL方式连接数据库。如果需要高安全性时,请[使用SSL连接](用SSL进行安全的TCP-IP连接.md)。 -3. 首次登录需要修改密码。原始密码固定为XuanYuan@2012,需将原始密码修改为自定义的密码,例如Mypwd123,命令如下: +3. 首次登录需要修改密码。原始密码为安装openGauss数据库手动输入的密码,具体请参见《安装指南》,此处需将原始密码修改为自定义的密码,例如Mypwd123,命令如下: ``` postgres=# ALTER ROLE omm IDENTIFIED BY 'Mypwd123' REPLACE 'XuanYuan@2012'; @@ -55,7 +55,7 @@ gsql是openGauss提供的在命令行下运行的数据库连接工具。此工 ## 远程连接数据库 1. 完成远程连接配置,操作步骤参见[配置服务端远程连接](配置服务端远程连接.md)。 -2. 在客户端机器(10.10.0.30)上,上传客户端工具包并配置gsql的执行环境变量。 +2. 在客户端机器(10.10.0.30)上,上传客户端工具包并配置gsql的执行环境变量。此处以openEuler环境为例。 1. 以root用户登录客户端机器。 2. 创建“/tmp/tools”目录。 @@ -63,7 +63,7 @@ gsql是openGauss提供的在命令行下运行的数据库连接工具。此工 mkdir /tmp/tools ``` - 3. 获取软件安装包中的“-EULER-64bit-ClientTools.tar.gz”上传到“/tmp/tools”路径下。 + 3. 获取软件安装包中的“openGauss-1.0.0-openEuler-64bit-Libpq.tar.gz”上传到“/tmp/tools”路径下。 >![](public_sys-resources/icon-note.gif) **说明:** >- 软件包相对位置为安装时所放位置,根据实际情况填写。 @@ -73,7 +73,7 @@ gsql是openGauss提供的在命令行下运行的数据库连接工具。此工 ``` cd /tmp/tools - tar -zxvf openGauss-1.0.0-EULER-64bit-ClientTools.tar.gz + tar -zxvf openGauss-1.0.0-openEuler-64bit-Libpq.tar.gz ``` 5. 设置环境变量。 diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250\345\210\206\345\214\272\350\241\250.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\345\210\206\345\214\272\350\241\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..9f4564087a9ab074ea7bbcf0e17a4f0c4dea6f57 --- /dev/null +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\345\210\206\345\214\272\350\241\250.md" @@ -0,0 +1,12 @@ +# 使用分区表 + +分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储。这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。分区表和普通表相比具有以下优点: + +1. 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。 +2. 增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。 +3. 方便维护:如果分区表的某个分区出现故障,需要修复数据,只修复该分区即可。 + +openGauss支持的分区表为范围分区表。 + +范围分区表:将数据基于范围映射到每一个分区。这个范围是由创建分区表时指定的分区键决定的。分区键经常采用日期,例如将销售数据按照月份进行分区。 + diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250\345\220\210\345\271\266\346\226\271\345\274\217\346\233\264\346\226\260\345\222\214\346\217\222\345\205\245\346\225\260\346\215\256.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\345\220\210\345\271\266\346\226\271\345\274\217\346\233\264\346\226\260\345\222\214\346\217\222\345\205\245\346\225\260\346\215\256.md" index fd0ac3edf75b0480707c75e4af83cbf56706ec6a..acc2db3493df7f01b7bb2c40bc3171c90e51fac8 100644 --- "a/content/zh/docs/Developerguide/\344\275\277\347\224\250\345\220\210\345\271\266\346\226\271\345\274\217\346\233\264\346\226\260\345\222\214\346\217\222\345\205\245\346\225\260\346\215\256.md" +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\345\220\210\345\271\266\346\226\271\345\274\217\346\233\264\346\226\260\345\222\214\346\217\222\345\205\245\346\225\260\346\215\256.md" @@ -55,7 +55,7 @@ MERGE INTO语句将目标表和源表中数据针对关联条件进行匹配, INSERT VALUES (p.product_id, p.product_name, p.category) ; ``` - 上述语句中使用的参数说明,请见[表1](#zh-cn_topic_0237121140_zh-cn_topic_0165787112_table1973914406416)。更多信息,请参见[MERGE INTO](MERGE-INTO.md#ZH-CN_TOPIC_0242370634)。 + 上述语句中使用的参数说明,请见[表1](#zh-cn_topic_0237121140_zh-cn_topic_0165787112_table1973914406416)。更多信息,请参见[MERGE INTO](MERGE-INTO.md)。 **表 1** MERGE INTO语句参数说明 @@ -71,7 +71,7 @@ MERGE INTO语句将目标表和源表中数据针对关联条件进行匹配,

INTO 子句

指定需要更新或插入数据的目标表。

-
  • 目标表支持指定别名。
  • 目标表不支持复制表。
+
  • 目标表支持指定别名。
  • 目标表支持复制表,但复制表不能带有含volatile函数的列(如自增列);如果enable_stream_operator=off,目标复制表需要带有主键或某一列满足unique not null约束。

取值:newproducts np

说明:名为newproducts,别名为np的目标表。

@@ -80,6 +80,7 @@ MERGE INTO语句将目标表和源表中数据针对关联条件进行匹配,

USING子句

指定源表。源表支持指定别名。

+

目标表是复制表时,源表也需要是复制表。

取值:products p

名为products,别名为p的源表。

diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250\345\261\200\351\203\250\350\201\232\347\260\207.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\345\261\200\351\203\250\350\201\232\347\260\207.md" new file mode 100644 index 0000000000000000000000000000000000000000..0be15c4532cc09e737cda24ee8a4f5cf22d09a3e --- /dev/null +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\345\261\200\351\203\250\350\201\232\347\260\207.md" @@ -0,0 +1,9 @@ +# 使用局部聚簇 + +局部聚簇(Partial Cluster Key)是列存下的一种技术。这种技术可以通过min/max稀疏索引较快的实现基表扫描的filter过滤。Partial Cluster Key可以指定多列,但是一般不建议超过2列。Partial Cluster Key的选取原则: + +1. 受基表中的简单表达式约束。这种约束一般形如col op const,其中col为列名,op为操作符 =、\>、\>=、<=、<,const为常量值。 +2. 尽量采用选择度比较高\(过滤掉更多数据\)的简单表达式中的列。 +3. 尽量把选择度比较低的约束col放在Partial Cluster Key中的前面。 +4. 尽量把枚举类型的列放在Partial Cluster Key中的前面。 + diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250\346\214\207\345\257\274-12.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\346\214\207\345\257\274-12.md" new file mode 100644 index 0000000000000000000000000000000000000000..27b6d45ba11b633229eaae86ed003093138b1d87 --- /dev/null +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\346\214\207\345\257\274-12.md" @@ -0,0 +1,75 @@ +# 使用指导 + +## 前提条件 + +首先需要保证用户提供的历史日志及待预测负载格式符合要求,其次为保证预测准确率,用户提供的历史语句日志应尽可能全面并具有代表性。 + +## 背景信息 + +工具目录下提供了示例数据集及演示代码,更加详细的说明与工具所需依赖请参考工具根目录下的Readme文件。 + +## 操作步骤 + +1. 如果这是您第一次使用本工具,您应该提供历史日志以供模型训练,类型为: + + ``` + 执行开始时间 | 执行结束时间 | 锁时间 | 执行等待时间 | 语句文本 + ``` + + 历史日志中每一行的格式如上,其中每两列之间的分隔符为'\\t|\\t',如果某列无法提供,请将其置0。 + +2. 执行训练命令进行训练: + + ``` + python src/main.py train [--train LOG_FILE] [--model MODEL_DIR] + ``` + + - **LOG\_FILE**: 供训练用历史日志的路径。 + + - **MODEL\_DIR**: 训练生成的模型及中间文件存储路径。 + +3. 在进行预测之前,请确保训练过程已经顺利完成。待预测负载需要为文件格式,格式为每行为一条语句。 + + 执行预测命令进行预测: + + ``` + python src/main.py predict [--model MODEL_DIR] [--predict WORKLOAD_FILE] [--ratio RETRAIN_RATIO] + ``` + + - **MODEL\_DIR**: 模型路径,应与训练过程所指定的同名参数值一致。 + + - **WORKLOAD\_FILE**: 待预测负载文件路径。 + + - **RETRAIN\_RATIO**: 推荐模型重训的阈值。 默认值为0.5,代表如果未训练元素数量达到已训练元素数量的0.5倍时,工具会提示您建议重新训练模型,使您的预测结果更加精准。在出现此提示时,不会影响该次预测。 + + - 预测结果为一个float类型的列表 ,其中第n个值代表了待预测负载第n行语句的预测执行时间。该结果会显示在您的屏幕上,且被返回。 + + + +>![](public_sys-resources/icon-note.gif) **说明:** +>如果您希望同时训练并预测,工具提供了快速启动方式命令: +>``` +>python src/main.py all [--train LOG_FILE] [--model MODEL_DIR] [--predict WORKLOAD_FILE] [--ratio RETRAIN_RATIO] +>``` +>各个参数含义与分别执行时一致。 + +## 示例 + +使用工具提供的demo数据进行训练: + +``` +python src/main.py train --train test/data/train.csv --model test/data/ +``` + +使用工具提供的demo数据进行预测: + +``` +python src/main.py predict --model test/data/ --predict test/data/test.csv --ratio 0.2 +``` + +快速启动: + +``` +python src/main.py all --train test/data/train.csv --model test/data/ --predict test/data/test.csv --ratio 0.2 +``` + diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250\346\214\207\345\257\274-9.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\346\214\207\345\257\274-9.md" new file mode 100644 index 0000000000000000000000000000000000000000..1e426b92b7d914247c4368ff41491b3029cd255b --- /dev/null +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\346\214\207\345\257\274-9.md" @@ -0,0 +1,30 @@ +# 使用指导 + +## 前提条件 + +需要首先保证数据库状态正常、客户端能够正常连接、且要求数据库内倒入数据,以便调优程序可以执行benchmark测试调优效果;用户需保证当前Python运行环境安装好相应依赖,且能够正常启动调优程序。 + +## 背景信息 + +调优程序是一个独立于数据库内核之外的工具,需要提供数据库及其所在实例的用户名和登录密码信息,以便控制数据库执行benchmark进行性能测试;在启动调优程序前,要求用户测试环境交互正常,能够正常跑通benchmark测试脚本、能够正常连接数据库。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>如果需要调优的参数中,包含重启数据库后才能使修改生效的参数,那么在调优过程中数据库将会重启多次。如果用户的数据库正在执行作业,请慎用此功能。 + +## 使用步骤 + +1. 用户进行数据库安全配置,并验证调优程序所在客户机能够正常访问到数据库实例所在的服务器; +2. 用户向数据库实例内倒入数据(如TPC-C, TPC-H),并根据调优程序所给出的示例代码,编写符合自己实际业务的benchmark(benchmark实例脚本路径在benchmark目录中).并手动验证benchmark可以正常跑通并可获得稳定的测试结果,记录下此时的测试结果,以方便后续对比调优效果; +3. 用户在确保数据库运行正常并在无其他人使用时,备份现有参数,并修改调优参数列表配置文件(文件路径在knobs目录中,默认配置文件是knobs\_htap.py),设定需要调整的参数及其范围; +4. 用户输入数据库连接信息,选择当前调优模式为“训练”或“调优”,启动参数调优程序;例如在X-Tuner根目录中输入 + + python main.py -m train --db-name postgres\\ + + --db-user dba --port 1234 \\ + + --host 192.168.1.2 --host-user opengauss\\ + + --benchmark tpcc --model-path mymodel + +5. 若为“训练”模式,则输出训练后的模型,程序退出;若为“调优”模式,则输出调优后的最优参数列表,程序退出。用户通过对比调优结果,自行判断是否应该设置为该参数,并手动设置为推荐参数或重置为调优前参数。 + diff --git "a/content/zh/docs/Developerguide/\344\275\277\347\224\250\346\214\207\345\257\274.md" "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\346\214\207\345\257\274.md" new file mode 100644 index 0000000000000000000000000000000000000000..b1b18b1ba84812a26b546177b8f32a1793eb70db --- /dev/null +++ "b/content/zh/docs/Developerguide/\344\275\277\347\224\250\346\214\207\345\257\274.md" @@ -0,0 +1,207 @@ +# 使用指导 + +## 数据收集 + +1. 打开数据收集。 + 1. 设置ActiveSQL operator信息相关参数: + + ``` + enable_resource_track=on + resource_track_level=operator + enable_resource_record=on + resource_track_cost=10(默认值为100000) + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- resource\_track\_cost需设置为小于需要收集的查询总代价,满足条件的信息才能被收集。 + >- Cgroups功能正常加载。 + + 2. 信息收集: + + 执行业务查询语句。 + + 查看实时收集数据: + + ``` + select * from gs_wlm_plan_operator_history; + ``` + + 预期:满足resource\_track\_duration和resource\_track\_cost的作业被全量收集。 + +2. 关闭数据收集。 + 1. 设置ActiveSQL operator信息相关参数: + + ``` + enable_resource_track=off 或 + resource_track_level=none 或 + resource_track_level=query + ``` + + 2. 执行业务查询语句。 + + 等待三分钟之后查看当前节点上的数据: + + ``` + select * from gs_wlm_plan_operator_info; + ``` + + 预期:所查表和视图无新增数据。 + +3. 数据持久化保存。 + 1. 设置ActiveSQL operator信息相关参数: + + ``` + enable_resource_track=on + resource_track_level=operator + enable_resource_record=on + resource_track_duration=0(默认值为60s) + resource_track_cost=10(默认值为100000) + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- resource\_track\_cost需设置为小于需要收集的查询总代价,满足条件的信息才能被收集。 + >- Cgroups功能正常加载。 + + 2. 执行业务查询语句。 + + 等待三分钟之后查看当前节点上的数据: + + ``` + select * from gs_wlm_plan_operator_info; + ``` + + 预期:满足resource\_track\_duration和resource\_track\_cost的作业被全量收集。 + + + +## 模型管理(系统管理员用户) + +>![](public_sys-resources/icon-note.gif) **说明:** +>模型管理操作需要在数据库正常的状态下进行。 + +1. 新增模型: + + INSERT INTO gs\_opt\_model values\('......'\); + + 示例: + + ``` + INSERT INTO gs_opt_model values('rlstm', 'model_name', 'datname', '127.0.0.1', 5000, 2000, 1, -1, 64, 512, 0 , false, false, '{S, T}', '{0,0}', '{0,0}', 'Text'); + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 具体模型参数设置请参考[GS\_OPT\_MODEL](GS_OPT_MODEL.md)。 + >- 目前 "template\_name" 列只支持 "rlstm"; + >- "datname" 列请和用于模型使用和训练的数据库保持一致,否则无法使用。 + >- "model\_name" 一列需要满足unique约束。 + >- 其他参数设置见产品文档[最佳实践](最佳实践.md)部分。 + +2. 修改模型参数: + + ``` + UPDATE gs_opt_model SET = WHERE model_name = ; + ``` + +3. 删除模型: + + ``` + DELETE FROM gs_opt_model WHERE model_name = ; + ``` + +4. 查询现有模型及其状态: + + ``` + SELECT * FROM gs_opt_model; + ``` + + +## 模型训练(系统管理员用户) + +1. 配置/添加模型训练参数:参考[模型管理(系统管理员用户)](#section664217249345)进行模型添加、模型参数修改,来指定训练参数。 + + 例: + + 模型添加: + + ``` + INSERT INTO gs_opt_model values('rlstm', 'default', 'postgres', '127.0.0.1', 5000, 2000, 1, -1, 64, 512, 0 , false, false, '{S, T}', '{0,0}', '{0,0}', 'Text'); + ``` + + 训练参数更新: + + ``` + UPDATE gs_opt_model SET = WHERE model_name = ; + ``` + +2. 前提条件为数据库状态正常且历史数据正常收集: + + 删除原有encoding数据: + + ``` + DELETE FROM gs_wlm_plan_encoding_table; + ``` + + 进行数据编码,需要指定数据库名: + + ``` + SELECT gather_encoding_info('postgres'); + ``` + + 开始训练: + + ``` + SELECT model_train_opt('rlstm', 'default'); + ``` + +3. 查看模型训练状态: + + ``` + SELECT * FROM track_model_train_opt('rlstm', 'default'); + ``` + + 返回Tensorboard所用URL: + + ![](figures/url.png) + + 打开URL查看模型训练状态: + + ![](figures/zh-cn_image_0243595915.png) + + +## 模型预测 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 模型预测功能需在数据库状态正常、指定模型已被训练且收敛的条件下进行。 +>- 目前,模型训练参数的标签设置中需要包含“S”标签,explain中才可显示“p-time”预测值。 +> 例:INSERT INTO gs\_opt\_model values\('rlstm', 'default', 'postgres', '127.0.0.1', 5000, 1000, 1, -1, 50, 500, 0 , false, false, '\{**S**, T\}', '\{0,0\}', '\{0,0\}', 'Text'\); + +1. 调用explain接口: + + ``` + explain (analyze on, predictor ) + SELECT ... + ``` + + 预期结果: + + ``` + 例:Row Adapter (cost=110481.35..110481.35 rows=100 p-time=99..182 width=100) (actual time=375.158..375.160 rows=2 loops=1) + 其中,“p-time”列为标签预测值。 + ``` + + +## 其他功能 + +1. 检查AiEngine是否可连接: + + ``` + postgres=# select check_engine_status('aiEngine-ip-address',running-port); + ``` + +2. 查看模型对应日志在AiEngine侧的保存路径: + + ``` + postgres=# select track_model_train_opt('template_name', 'model_name'); + ``` + + diff --git "a/content/zh/docs/Developerguide/\345\205\250\346\226\207\346\243\200\347\264\242.md" "b/content/zh/docs/Developerguide/\345\205\250\346\226\207\346\243\200\347\264\242.md" index 04ad3327c65c51cc6d542f85bb86f2716b1ad89e..b8e1e97423254d4ec7657aa172177d03a56cf7df 100644 --- "a/content/zh/docs/Developerguide/\345\205\250\346\226\207\346\243\200\347\264\242.md" +++ "b/content/zh/docs/Developerguide/\345\205\250\346\226\207\346\243\200\347\264\242.md" @@ -1,7 +1,5 @@ # 全文检索 -全文检索(或者说文本搜索)提供了查询可读性文档的能力,并且通过查询相关度将结果进行排序。搜索最常见的方式是:找到包含指定查询词的所有记录,并且按照查询顺序返回这些记录。 - - **[介绍](介绍.md)** - **[表和索引](表和索引.md)** diff --git "a/content/zh/docs/Developerguide/\345\205\250\346\226\207\346\243\200\347\264\242\346\246\202\350\277\260.md" "b/content/zh/docs/Developerguide/\345\205\250\346\226\207\346\243\200\347\264\242\346\246\202\350\277\260.md" index 1dce73f4a74aa1f43f57ffe0ed8489aa92b9497d..699a69b97eeda6be6b76fa84d1f28483f70e80a0 100644 --- "a/content/zh/docs/Developerguide/\345\205\250\346\226\207\346\243\200\347\264\242\346\246\202\350\277\260.md" +++ "b/content/zh/docs/Developerguide/\345\205\250\346\226\207\346\243\200\347\264\242\346\246\202\350\277\260.md" @@ -31,5 +31,5 @@ 词典能够对token如何标准化做到细粒度控制。使用合适的词典,可以定义不被索引的停用词。 -数据类型tsvector用于存储预处理文档,tsquery用于存储查询条件,详细请参见[文本搜索类型](文本搜索类型.md#ZH-CN_TOPIC_0242370420)。为这些数据类型提供的函数和操作符请参见[文本检索函数和操作符](文本检索函数和操作符.md#ZH-CN_TOPIC_0242370440)。其中最重要的是匹配运算符@@,将在[基本文本匹配](基本文本匹配.md#ZH-CN_TOPIC_0242370480)中介绍。 +数据类型tsvector用于存储预处理文档,tsquery用于存储查询条件,详细请参见[文本搜索类型](文本搜索类型.md)。为这些数据类型提供的函数和操作符请参见[文本检索函数和操作符](文本检索函数和操作符.md)。其中最重要的是匹配运算符@@,将在[基本文本匹配](基本文本匹配.md)中介绍。 diff --git "a/content/zh/docs/Developerguide/\345\205\263\344\272\216COPY-FROM-STDIN\345\257\274\345\205\245\346\225\260\346\215\256.md" "b/content/zh/docs/Developerguide/\345\205\263\344\272\216COPY-FROM-STDIN\345\257\274\345\205\245\346\225\260\346\215\256.md" index 31ca91d1d93583a320aeafe1686e5f4d2b35e64e..c79acc71f5b31b856bb48ca092f8583edd13f839 100644 --- "a/content/zh/docs/Developerguide/\345\205\263\344\272\216COPY-FROM-STDIN\345\257\274\345\205\245\346\225\260\346\215\256.md" +++ "b/content/zh/docs/Developerguide/\345\205\263\344\272\216COPY-FROM-STDIN\345\257\274\345\205\245\346\225\260\346\215\256.md" @@ -4,6 +4,6 @@ 用户可以使用以下方式通过COPY FROM STDIN语句直接向openGauss写入数据。 -- 通过键盘输入向openGauss写入数据。详细请参见[COPY](COPY.md)。 +- 通过键盘输入向openGauss数据库写入数据。详细请参见[COPY](COPY.md)。 - 通过JDBC驱动的CopyManager接口从文件或者数据库向openGauss写入数据。此方法支持COPY语法中copy option的所有参数。 diff --git "a/content/zh/docs/Developerguide/\345\205\263\344\272\216\346\234\254\346\226\207\346\241\243.md" "b/content/zh/docs/Developerguide/\345\205\263\344\272\216\346\234\254\346\226\207\346\241\243.md" new file mode 100644 index 0000000000000000000000000000000000000000..339bf21852beba30891337124c5697c5415b2765 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\205\263\344\272\216\346\234\254\346\226\207\346\241\243.md" @@ -0,0 +1,79 @@ +# 关于本文档 + +## 概述 + +本章介绍如何设计、创建、查询和维护数据库。包括SQL语句、存储过程、系统表和视图等。 + +## 读者对象 + +本文档是为基于openGauss进行C/Java应用程序开发的程序员而写的,提供了必要的参考信息。 + +作为应用程序开发人员,至少需要了解以下知识: + +- 操作系统知识。这是一切的基础。 +- C/Java语言。这是做应用程序开发的基础。 +- 熟悉C/Java的一种IDE。这是高效完成开发任务的必备条件。 +- SQL语法。这是操作数据库的必备能力。 + +## 符号约定 + +在本文中可能出现下列标志,它们所代表的含义如下。 + + + + + + + + + + + + + + + + + + + + + + +

符号

+

说明

+

+

表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。

+

+

表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。

+

+

表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。

+

+

用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

+

“须知”不涉及人身伤害。

+

+

对正文中重点信息的补充说明。

+

“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。

+
+ +## 修改记录 + + + + + + + + + + + + +

文档版本

+

发布日期

+

修改说明

+

01

+

2020-05-12

+

第一次正式发布。

+
+ diff --git "a/content/zh/docs/Developerguide/\345\205\263\351\224\256\345\255\227.md" "b/content/zh/docs/Developerguide/\345\205\263\351\224\256\345\255\227.md" index f28d8699e0a8053bea25cf2b7fca30da5557bc78..4c4a9373a927aeeb6498b28dd083c96defafe6c6 100644 --- "a/content/zh/docs/Developerguide/\345\205\263\351\224\256\345\255\227.md" +++ "b/content/zh/docs/Developerguide/\345\205\263\351\224\256\345\255\227.md" @@ -2,12 +2,17 @@ SQL里有保留字和非保留字之分。根据标准,保留字决不能用做其他标识符。非保留字只是在特定的环境里有特殊的含义,而在其他环境里是可以用做标识符的。 +标识符的命名需要遵守如下规范: + +- 标识符需要为字母、下划线、数字(0-9)或美元符号($)。 +- 标识符必须以字母(a-z)或下划线(\_)开头。 + **表 1** SQL关键字 - @@ -393,13 +398,13 @@ SQL里有保留字和非保留字之分。根据标准,保留字决不能用 - - - - - - - - - - - - - - - - - - - - - - - -

关键字

openGauss

+

openGauss

SQL:1999

保留

BEGIN_NON_ANOYBLOCK

+

BEGIN_NON_ANOYBLOCK

非保留

+

非保留

-

+

-

-

+

-

BETWEEN

@@ -1599,13 +1604,13 @@ SQL里有保留字和非保留字之分。根据标准,保留字决不能用

-

DIRECTORY

+

DIRECTORY

非保留

+

非保留

-

+

-

-

+

-

DISABLE

@@ -1716,13 +1721,13 @@ SQL里有保留字和非保留字之分。根据标准,保留字决不能用

保留

DUPLICATE

+

DUPLICATE

非保留

+

非保留

-

+

-

-

+

-

DYNAMIC

@@ -2022,13 +2027,13 @@ SQL里有保留字和非保留字之分。根据标准,保留字决不能用

-

FAST

+

FAST

非保留

+

非保留

-

+

-

-

+

-

FETCH

@@ -5028,13 +5033,13 @@ SQL里有保留字和非保留字之分。根据标准,保留字决不能用

-

SPILL

+

SPILL

非保留

+

非保留

-

+

-

-

+

-

SPLIT

@@ -5451,13 +5456,13 @@ SQL里有保留字和非保留字之分。根据标准,保留字决不能用

保留

TIMESTAMPDIFF

+

TIMESTAMPDIFF

非保留(不能是函数或类型)

+

非保留(不能是函数或类型)

-

+

-

-

+

-

TIMEZONE_HOUR

diff --git "a/content/zh/docs/Developerguide/\345\205\263\351\227\255\350\277\236\346\216\245.md" "b/content/zh/docs/Developerguide/\345\205\263\351\227\255\350\277\236\346\216\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..2e22588d782571e16036493139e727fd77a07226 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\205\263\351\227\255\350\277\236\346\216\245.md" @@ -0,0 +1,6 @@ +# 关闭连接 + +在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。 + +关闭数据库连接可以直接调用其close方法即可。如:**Connection conn = null; conn.close\(\)**; + diff --git "a/content/zh/docs/Developerguide/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" "b/content/zh/docs/Developerguide/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" index ad11998c629476b10195027d4a3b5297a9b1d0d8..912ac8736ae69480725e173875402bb4c7f00b66 100644 --- "a/content/zh/docs/Developerguide/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" +++ "b/content/zh/docs/Developerguide/\345\205\266\344\273\226\344\274\230\345\214\226\345\231\250\351\200\211\351\241\271.md" @@ -193,24 +193,6 @@ **默认值:**off -## query\_dop - -**参数说明: **用户自定义的查询并行度。该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,-64-64 - -\[1,64\]:打开固定SMP功能,系统会使用固定并行度。 - -0:打开SMP自适应功能,系统会根据资源情况和计划特征动态选取最优并行度。 - -\[-64,-1\]:打开SMP自适应功能,并限制自适应选取的最大并行度。 - ->![](public_sys-resources/icon-note.gif) **说明:** ->- 在开启并行查询后,请保证系统CPU、内存、网络、I/O等资源充足,以达到最佳效果。 ->- 为了避免用户设置不合理的过大值造成性能劣化,系统会计算出该数据库节点可用最大CPU核数,并以此来作为query\_dop的上限。如果用户设置query\_dop超过4并且同时超过该上限,那么系统会重置query\_dop为该上限值。 - -**默认值:**1 - ## enable\_analyze\_check **参数说明: **标识是否允许在生成计划的时候,对于在pg\_class中显示reltuples和relpages均为0的表,检查该表是否曾进行过统计信息收集。 diff --git "a/content/zh/docs/Developerguide/\345\205\266\344\273\226\345\233\240\347\264\240\345\257\271LLVM\346\200\247\350\203\275\347\232\204\345\275\261\345\223\215.md" "b/content/zh/docs/Developerguide/\345\205\266\344\273\226\345\233\240\347\264\240\345\257\271LLVM\346\200\247\350\203\275\347\232\204\345\275\261\345\223\215.md" new file mode 100644 index 0000000000000000000000000000000000000000..76c685530b1864e084a887e4148879f6bba97f16 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\205\266\344\273\226\345\233\240\347\264\240\345\257\271LLVM\346\200\247\350\203\275\347\232\204\345\275\261\345\223\215.md" @@ -0,0 +1,17 @@ +# 其他因素对LLVM性能的影响 + +LLVM优化效果不仅依赖于数据库内部具体的实现,还与当前所选择的硬件环境等有关。 + +- 表达式调用C-函数个数 + + 数据库内部针对表达式计算并未实现全codegen,即在整个表达式计算中部分表达式实现了codegen,部分直接调用原本的C代码。如果整个表达式计算中后者占据了主要部分,使用LLVM动态编译优化,可能会导致性能劣化。通过设置log\_min\_message的级别为DEBUG1可以查看到哪些表达式直接调用了C代码实现。 + +- 内存资源 + + LLVM特性的一个重要思想是保障数据的局域特性,即数据应尽可能的存放在寄存器中。同时应减少数据加载,因此在使用LLVM优化时应设置足够大的work\_mem,保证对应使用LLVM优化的执行代码整个过程在内存中实现,否则可能引起性能劣化。 + +- 优化器代价估算 + + LLVM特性实现了简易的代价估算模型,即依据当前参与节点运算的表大小决定当前节点是否考虑使用LLVM动态编译优化。如果优化器低估了实际参与运算的行数,则原本可获得收益的未正常获得收益。反之亦然。 + + diff --git "a/content/zh/docs/Developerguide/\345\205\266\344\273\226\347\263\273\347\273\237\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\345\205\266\344\273\226\347\263\273\347\273\237\345\207\275\346\225\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..909d94493f8e94f5afc0c28e85bec14e130138dc --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\205\266\344\273\226\347\263\273\347\273\237\345\207\275\346\225\260.md" @@ -0,0 +1,2310 @@ +# 其他系统函数 + +openGauss为内建数据类型提供了大量的函数和操作符。用户也可以自行定义自己所需的函数和操作符。PSQL命令\\df和\\do可以逐个罗列出现有的函数和操作符。如果用户关心这些函数和操作符的可移植性,那请注意,除了算术和比较操作符以及上述直接标注出的函数,大部分本章中描述的函数和操作符是没有被SQL标准规定的。本章所介绍的扩充后的函数在其他SQL数据库管理系统中也存在,而且很多时候,这些函数的不同版本实现都是兼容且具备一致性的。 + +openGauss的内建函数和操作符继承自开源PGXC/PG,本小节所列举的函数,相关细节描述请参见PGXC/PG官方文档,链接如下: + +http://postgres-xc.sourceforge.net/docs/1\_1/functions.html + +https://www.postgresql.org/docs/9.2/functions.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

abbrev

+

abs

+

abstime

+

abstimeeq

+

abstimege

+

abstimegt

+

abstimein

+

abstimele

+

abstimelt

+

abstimene

+

abstimeout

+

abstimerecv

+

abstimesend

+

aclcontains

+

acldefault

+

aclexplode

+

aclinsert

+

aclitemeq

+

aclitemin

+

aclitemout

+

aclremove

+

acos

+

add_months

+

age

+

any_in

+

any_out

+

anyarray_in

+

anyarray_out

+

anyarray_recv

+

anyarray_send

+

anyelement_in

+

anyelement_out

+

anyenum_in

+

anyenum_out

+

anynonarray_in

+
+ +- abbrev +- abs +- abstime +- abstimeeq +- abstimege +- abstimegt +- abstimein +- abstimele +- abstimelt +- abstimene +- abstimeout +- abstimerecv +- abstimesend +- aclcontains +- acldefault +- aclexplode +- aclinsert +- aclitemeq +- aclitemin +- aclitemout +- aclremove +- acos +- add\_months +- age +- any\_in +- any\_out +- anyarray\_in +- anyarray\_out +- anyarray\_recv +- anyarray\_send +- anyelement\_in +- anyelement\_out +- anyenum\_in +- anyenum\_out +- anynonarray\_in +- anynonarray\_out +- anyrange\_in +- anyrange\_out +- anytextcat +- area +- areajoinsel +- areasel +- array\_agg +- array\_agg\_finalfn +- array\_agg\_transfn +- array\_append +- array\_cat +- array\_dims +- array\_eq +- array\_extend +- array\_fill +- array\_ge +- array\_gt +- array\_in +- array\_larger +- array\_le +- array\_length +- array\_lower +- array\_lt +- array\_ndims +- array\_ne +- array\_out +- array\_prepend +- array\_recv +- array\_send +- array\_smaller +- array\_to\_json +- array\_to\_string +- array\_typanalyze +- array\_upper +- arraycontained +- arraycontains +- arraycontjoinsel +- arraycontsel +- arrayoverlap +- ascii +- asin +- atan +- atan2 +- avg +- bigint\_tid +- bit +- bit\_and +- bit\_in +- bit\_length +- bit\_or +- bit\_out +- bit\_recv +- bit\_send +- bitand +- bitcat +- bitcmp +- biteq +- bitge +- bitgt +- bitle +- bitlt +- bitne +- bitnot +- bitor +- bitshiftleft +- bitshiftright +- bittypmodin +- bittypmodout +- bitxor +- bool +- bool\_and +- bool\_int1 +- bool\_int2 +- bool\_int8 +- bool\_or +- booland\_statefunc +- booleq +- boolge +- boolgt +- boolin +- boolle +- boollt +- boolne +- boolor\_statefunc +- boolout +- boolrecv +- boolsend +- box +- box\_above +- box\_above\_eq +- box\_add +- box\_below +- box\_below\_eq +- box\_center +- box\_contain +- box\_contain\_pt +- box\_contained +- box\_distance +- box\_div +- box\_eq +- box\_ge +- box\_gt +- box\_in +- box\_intersect +- box\_le +- box\_left +- box\_lt +- box\_mul +- box\_out +- box\_overabove +- box\_overbelow +- box\_overlap +- box\_overleft +- box\_overright +- box\_recv +- box\_right +- box\_same +- box\_send +- box\_sub +- bpchar +- bpchar\_date +- bpchar\_float4 +- bpchar\_float8 +- bpchar\_int4 +- bpchar\_int8 +- bpchar\_larger +- bpchar\_numeric +- bpchar\_pattern\_ge +- bpchar\_pattern\_gt +- bpchar\_pattern\_le +- bpchar\_pattern\_lt +- bpchar\_smaller +- bpchar\_sortsupport +- bpchar\_timestamp +- bpcharcmp +- bpchareq +- bpcharge +- bpchargt +- bpchariclike +- bpcharicnlike +- bpcharicregexeq +- bpcharicregexne +- bpcharin +- bpcharle +- bpcharlike +- bpcharlt +- bpcharne +- bpcharnlike +- bpcharout +- bpcharrecv +- bpcharregexeq +- bpcharregexne +- bpcharsend +- bpchartypmodin +- bpchartypmodout +- broadcast +- btabstimecmp +- btarraycmp +- btbeginscan +- btboolcmp +- btbpchar\_pattern\_cmp +- btbuild +- btbuildempty +- btbulkdelete +- btcanreturn +- btcharcmp +- btcostestimate +- btendscan +- btfloat48cmp +- btfloat4cmp +- btfloat4sortsupport +- btfloat84cmp +- btfloat8cmp +- btfloat8sortsupport +- btgetbitmap +- btgettuple +- btinsert +- btint24cmp +- btint28cmp +- btint2cmp +- btint2sortsupport +- btint42cmp +- btint48cmp +- btint4cmp +- btint4sortsupport +- btint82cmp +- btint84cmp +- btint8cmp +- btint8sortsupport +- btmarkpos +- btmerge +- btnamecmp +- btnamesortsupport +- btoidcmp +- btoidsortsupport +- btoidvectorcmp +- btoptions +- btrecordcmp +- btreltimecmp +- btrescan +- btrestrpos +- btrim +- bttext\_pattern\_cmp +- bttextcmp +- bttextsortsupport +- bttidcmp +- bttintervalcmp +- btvacuumcleanup +- bucketabstime +- bucketbool +- bucketbpchar +- bucketbytea +- bucketcash +- bucketchar +- bucketdate +- bucketfloat4 +- bucketfloat8 +- bucketint1 +- bucketint2 +- bucketint2vector +- bucketint4 +- bucketint8 +- bucketinterval +- bucketname +- bucketnumeric +- bucketnvarchar2 +- bucketoid +- bucketoidvector +- bucketraw +- bucketreltime +- bucketsmalldatetime +- buckettext +- buckettime +- buckettimestamp +- buckettimestamptz +- buckettimetz +- bucketuuid +- bucketvarchar +- bytea\_sortsupport +- bytea\_string\_agg\_finalfn +- bytea\_string\_agg\_transfn +- byteacat +- byteacmp +- byteaeq +- byteage +- byteagt +- byteain +- byteale +- bytealike +- bytealt +- byteane +- byteanlike +- byteaout +- bytearecv +- byteasend +- cash\_cmp +- cash\_div\_cash +- cash\_div\_flt4 +- cash\_div\_flt8 +- cash\_div\_int1 +- cash\_div\_int2 +- cash\_div\_int4 +- cash\_div\_int8 +- cash\_eq +- cash\_ge +- cash\_gt +- cash\_in +- cash\_le +- cash\_lt +- cash\_mi +- cash\_mul\_flt4 +- cash\_mul\_flt8 +- cash\_mul\_int1 +- cash\_mul\_int2 +- cash\_mul\_int4 +- cash\_mul\_int8 +- cash\_ne +- cash\_out +- cash\_pl +- cash\_recv +- cash\_send +- cash\_words +- cashlarger +- cashsmaller +- cbrt +- cbtreebuild +- cbtreecanreturn +- cbtreecostestimate +- cbtreegetbitmap +- cbtreegettuple +- cbtreeoptions +- ceil +- ceiling +- center +- cginbuild +- cgingetbitmap +- char +- char\_length +- character\_length +- chareq +- charge +- chargt +- charin +- charle +- charlt +- charne +- charout +- charrecv +- charsend +- check\_engine\_status +- checksum +- checksumtext\_agg\_transfn +- chr +- cideq +- cidin +- cidout +- cidr +- cidr\_in +- cidr\_out +- cidr\_recv +- cidr\_send +- cidrecv +- cidsend +- circle +- circle\_above +- circle\_add\_pt +- circle\_below +- circle\_center +- circle\_contain +- circle\_contain\_pt +- circle\_contained +- circle\_distance +- circle\_div\_pt +- circle\_eq +- circle\_ge +- circle\_gt +- circle\_in +- circle\_le +- circle\_left +- circle\_lt +- circle\_mul\_pt +- circle\_ne +- circle\_out +- circle\_overabove +- circle\_overbelow +- circle\_overlap +- circle\_overleft +- circle\_overright +- circle\_recv +- circle\_right +- circle\_same +- circle\_send +- circle\_sub\_pt +- clock\_timestamp +- close\_lb +- close\_ls +- close\_lseg +- close\_pb +- close\_pl +- close\_ps +- close\_sb +- close\_sl +- col\_description +- comm\_client\_info +- complex\_array\_in +- concat +- concat\_ws +- contjoinsel +- contsel +- convert +- convert\_from +- convert\_to +- convert\_to\_nocase +- corr +- cos +- cot +- count +- covar\_pop +- covar\_samp +- create\_wdr\_snapshot +- cstore\_tid\_out +- cstring\_in +- cstring\_out +- cstring\_recv +- cstring\_send +- cume\_dist +- cupointer\_bigint +- current\_database +- current\_query +- current\_schema +- current\_schemas +- current\_setting +- current\_user +- currtid +- currtid2 +- currval +- cursor\_to\_xml +- cursor\_to\_xmlschema +- database\_to\_xml +- database\_to\_xml\_and\_xmlschema +- database\_to\_xmlschema +- datalength +- date +- date\_bpchar +- date\_cmp +- date\_cmp\_timestamp +- date\_cmp\_timestamptz +- date\_eq +- date\_eq\_timestamp +- date\_eq\_timestamptz +- date\_ge +- date\_ge\_timestamp +- date\_ge\_timestamptz +- date\_gt +- date\_gt\_timestamp +- date\_gt\_timestamptz +- date\_in +- date\_larger +- date\_le +- date\_le\_timestamp +- date\_le\_timestamptz +- date\_list\_agg\_noarg2\_transfn +- date\_list\_agg\_transfn +- date\_lt +- date\_lt\_timestamp +- date\_lt\_timestamptz +- date\_mi +- date\_mi\_interval +- date\_mii +- date\_ne +- date\_ne\_timestamp +- date\_ne\_timestamptz +- date\_out +- date\_part +- date\_pl\_interval +- date\_pli +- date\_recv +- date\_send +- date\_smaller +- date\_sortsupport +- date\_text +- date\_trunc +- date\_varchar +- daterange +- daterange\_canonical +- daterange\_subdiff +- datetime\_pl +- datetimetz\_pl +- dcbrt +- decode +- definer\_current\_user +- degrees +- dense\_rank +- dexp +- diagonal +- diameter +- disable\_conn +- dispell\_init +- dispell\_lexize +- dist\_cpoly +- dist\_lb +- dist\_pb +- dist\_pc +- dist\_pl +- dist\_ppath +- dist\_ps +- dist\_sb +- dist\_sl +- div +- dlog1 +- dlog10 +- domain\_in +- domain\_recv +- dpow +- dround +- dsimple\_init +- dsimple\_lexize +- dsqrt +- dsynonym\_init +- dsynonym\_lexize +- dtrunc +- elem\_contained\_by\_range +- empty\_blob +- encode +- encode\_plan\_node +- enum\_cmp +- enum\_eq +- enum\_first +- enum\_ge +- enum\_gt +- enum\_in +- enum\_larger +- enum\_last +- enum\_le +- enum\_lt +- enum\_ne +- enum\_out +- enum\_range +- enum\_recv +- enum\_send +- enum\_smaller +- eqjoinsel +- eqsel +- every +- exec\_hadoop\_sql +- exec\_on\_extension +- exp +- f4toi1 +- f8toi1 +- factorial +- family +- fdw\_handler\_in +- fdw\_handler\_out +- first\_value +- float4 +- float4\_accum +- float4\_bpchar +- float4\_list\_agg\_noarg2\_transfn +- float4\_list\_agg\_transfn +- float4\_text +- float4\_varchar +- float48div +- float48eq +- float48ge +- float48gt +- float48le +- float48lt +- float48mi +- float48mul +- float48ne +- float48pl +- float4abs +- float4div +- float4eq +- float4ge +- float4gt +- float4in +- float4larger +- float4le +- float4lt +- float4mi +- float4mul +- float4ne +- float4out +- float4pl +- float4recv +- float4send +- float4smaller +- float4um +- float4up +- float8 +- float8\_accum +- float8\_avg +- float8\_bpchar +- float8\_collect +- float8\_corr +- float8\_covar\_pop +- float8\_covar\_samp +- float8\_interval +- float8\_list\_agg\_noarg2\_transfn +- float8\_list\_agg\_transfn +- float8\_regr\_accum +- float8\_regr\_avgx +- float8\_regr\_avgy +- float8\_regr\_collect +- float8\_regr\_intercept +- float8\_regr\_r2 +- float8\_regr\_slope +- float8\_regr\_sxx +- float8\_regr\_sxy +- float8\_regr\_syy +- float8\_stddev\_pop +- float8\_stddev\_samp +- float8\_text +- float8\_var\_pop +- float8\_var\_samp +- float8\_varchar +- float84div +- float84eq +- float84ge +- float84gt +- float84le +- float84lt +- float84mi +- float84mul +- float84ne +- float84pl +- float8abs +- float8div +- float8eq +- float8ge +- float8gt +- float8in +- float8larger +- float8le +- float8lt +- float8mi +- float8mul +- float8ne +- float8out +- float8pl +- float8recv +- float8send +- float8smaller +- float8um +- float8up +- floor +- flt4\_mul\_cash +- flt8\_mul\_cash +- fmgr\_c\_validator +- fmgr\_internal\_validator +- fmgr\_sql\_validator +- format +- format\_type +- generate\_series +- generate\_subscripts +- generate\_wdr\_report +- get\_hostname +- get\_nodename +- get\_prepared\_pending\_xid +- get\_schema\_oid +- getbucket +- getdatabaseencoding +- getpgusername +- gin\_clean\_pending\_list +- gin\_cmp\_prefix +- gin\_cmp\_tslexeme +- gin\_extract\_tsquery +- gin\_extract\_tsvector +- gin\_tsquery\_consistent +- gin\_tsquery\_triconsistent +- ginarrayconsistent +- ginarrayextract +- ginarraytriconsistent +- ginbeginscan +- ginbuild +- ginbuildempty +- ginbulkdelete +- gincostestimate +- ginendscan +- gingetbitmap +- gininsert +- ginmarkpos +- ginmerge +- ginoptions +- ginqueryarrayextract +- ginrescan +- ginrestrpos +- ginvacuumcleanup +- gist\_box\_compress +- gist\_box\_consistent +- gist\_box\_decompress +- gist\_box\_penalty +- gist\_box\_picksplit +- gist\_box\_same +- gist\_box\_union +- gist\_circle\_compress +- gist\_circle\_consistent +- gist\_point\_compress +- gist\_point\_consistent +- gist\_point\_distance +- gist\_poly\_compress +- gist\_poly\_consistent +- gistbeginscan +- gistbuild +- gistbuildempty +- gistbulkdelete +- gistcostestimate +- gistendscan +- gistgetbitmap +- gistgettuple +- gistinsert +- gistmarkpos +- gistmerge +- gistoptions +- gistrescan +- gistrestrpos +- gistvacuumcleanup +- global\_comm\_get\_client\_info +- global\_comm\_get\_recv\_stream +- global\_comm\_get\_send\_stream +- global\_comm\_get\_status +- gs\_all\_control\_group\_info +- gs\_all\_nodegroup\_control\_group\_info +- gs\_cgroup\_map\_ng\_conf +- gs\_extend\_library +- gs\_fault\_inject +- gs\_get\_next\_xid\_csn +- gs\_get\_nodegroup\_tablecount +- gs\_password\_notifytime +- gs\_stat\_get\_wlm\_plan\_operator\_info +- gs\_switch\_relfilenode +- gs\_total\_nodegroup\_memory\_detail +- gs\_wlm\_get\_resource\_pool\_info +- gs\_wlm\_get\_session\_info +- gs\_wlm\_get\_user\_info +- gs\_wlm\_get\_user\_session\_info +- gs\_wlm\_get\_workload\_records +- gs\_wlm\_node\_clean +- gs\_wlm\_node\_recover +- gs\_wlm\_readjust\_user\_space +- gs\_wlm\_readjust\_user\_space\_through\_username +- gs\_wlm\_readjust\_user\_space\_with\_reset\_flag +- gs\_wlm\_rebuild\_user\_resource\_pool +- gs\_wlm\_session\_respool +- gtsquery\_compress +- gtsquery\_consistent +- gtsquery\_decompress +- gtsquery\_penalty +- gtsquery\_picksplit +- gtsquery\_same +- gtsquery\_union +- gtsvector\_compress +- gtsvector\_consistent +- gtsvector\_decompress +- gtsvector\_penalty +- gtsvector\_picksplit +- gtsvector\_same +- gtsvector\_union +- gtsvectorin +- gtsvectorout +- has\_any\_column\_privilege +- has\_column\_privilege +- has\_database\_privilege +- has\_directory\_privilege +- has\_foreign\_data\_wrapper\_privilege +- has\_function\_privilege +- has\_language\_privilege +- has\_nodegroup\_privilege +- has\_schema\_privilege +- has\_sequence\_privilege +- has\_server\_privilege +- has\_table\_privilege +- has\_tablespace\_privilege +- has\_type\_privilege +- hash\_aclitem +- hash\_array +- hash\_numeric +- hash\_range +- hashbeginscan +- hashbpchar +- hashbuild +- hashbuildempty +- hashbulkdelete +- hashchar +- hashcostestimate +- hashendscan +- hashenum +- hashfloat4 +- hashfloat8 +- hashgetbitmap +- hashgettuple +- hashinet +- hashinsert +- hashint1 +- hashint2 +- hashint2vector +- hashint4 +- hashint8 +- hashmacaddr +- hashmarkpos +- hashmerge +- hashname +- hashoid +- hashoidvector +- hashoptions +- hashrescan +- hashrestrpos +- hashtext +- hashvacuumcleanup +- hashvarlena +- height +- hextoraw +- host +- hostmask +- i1tof4 +- i1tof8 +- i1toi2 +- i1toi4 +- i1toi8 +- i2toi1 +- i4toi1 +- i8toi1 +- iclikejoinsel +- iclikesel +- icnlikejoinsel +- icnlikesel +- icregexeqjoinsel +- icregexeqsel +- icregexnejoinsel +- icregexnesel +- inet\_client\_addr +- inet\_client\_port +- inet\_in +- inet\_out +- inet\_recv +- inet\_send +- inet\_server\_addr +- inet\_server\_port +- inetand +- inetmi +- inetmi\_int8 +- inetnot +- inetor +- inetpl +- initcap +- instr +- int1\_avg\_accum +- int1\_bool +- int1\_bpchar +- int1\_mul\_cash +- int1\_numeric +- int1\_nvarchar2 +- int1\_text +- int1\_varchar +- int1abs +- int1and +- int1cmp +- int1div +- int1eq +- int1ge +- int1gt +- int1in +- int1inc +- int1larger +- int1le +- int1lt +- int1mi +- int1mod +- int1mul +- int1ne +- int1not +- int1or +- int1out +- int1pl +- int1recv +- int1send +- int1shl +- int1shr +- int1smaller +- int1um +- int1up +- int1xor +- int2 +- int2\_accum +- int2\_avg\_accum +- int2\_bool +- int2\_bpchar +- int2\_list\_agg\_noarg2\_transfn +- int2\_list\_agg\_transfn +- int2\_mul\_cash +- int2\_sum +- int2\_text +- int2\_varchar +- int24div +- int24eq +- int24ge +- int24gt +- int24le +- int24lt +- int24mi +- int24mul +- int24ne +- int24pl +- int28div +- int28eq +- int28ge +- int28gt +- int28le +- int28lt +- int28mi +- int28mul +- int28ne +- int28pl +- int2abs +- int2and +- int2div +- int2eq +- int2ge +- int2gt +- int2in +- int2larger +- int2le +- int2lt +- int2mi +- int2mod +- int2mul +- int2ne +- int2not +- int2or +- int2out +- int2pl +- int2recv +- int2send +- int2shl +- int2shr +- int2smaller +- int2um +- int2up +- int2vectoreq +- int2vectorin +- int2vectorout +- int2vectorrecv +- int2vectorsend +- int2xor +- int4 +- int4\_accum +- int4\_avg\_accum +- int4\_bpchar +- int4\_list\_agg\_noarg2\_transfn +- int4\_list\_agg\_transfn +- int4\_mul\_cash +- int4\_sum +- int4\_text +- int4\_varchar +- int42div +- int42eq +- int42ge +- int42gt +- int42le +- int42lt +- int42mi +- int42mul +- int42ne +- int42pl +- int48div +- int48eq +- int48ge +- int48gt +- int48le +- int48lt +- int48mi +- int48mul +- int48ne +- int48pl +- int4abs +- int4and +- int4div +- int4eq +- int4ge +- int4gt +- int4in +- int4inc +- int4larger +- int4le +- int4lt +- int4mi +- int4mod +- int4mul +- int4ne +- int4not +- int4or +- int4out +- int4pl +- int4range +- int4range\_canonical +- int4range\_subdiff +- int4recv +- int4send +- int4shl +- int4shr +- int4smaller +- int4um +- int4up +- int4xor +- int8 +- int8\_accum +- int8\_avg +- int8\_avg\_accum +- int8\_avg\_collect +- int8\_bool +- int8\_bpchar +- int8\_list\_agg\_noarg2\_transfn +- int8\_list\_agg\_transfn +- int8\_mul\_cash +- int8\_sum +- int8\_sum\_to\_int8 +- int8\_text +- int8\_varchar +- int82div +- int82eq +- int82ge +- int82gt +- int82le +- int82lt +- int82mi +- int82mul +- int82ne +- int82pl +- int84div +- int84eq +- int84ge +- int84gt +- int84le +- int84lt +- int84mi +- int84mul +- int84ne +- int84pl +- int8abs +- int8and +- int8div +- int8eq +- int8ge +- int8gt +- int8in +- int8inc +- int8inc\_any +- int8inc\_float8\_float8 +- int8larger +- int8le +- int8lt +- int8mi +- int8mod +- int8mul +- int8ne +- int8not +- int8or +- int8out +- int8pl +- int8pl\_inet +- int8range +- int8range\_canonical +- int8range\_subdiff +- int8recv +- int8send +- int8shl +- int8shr +- int8smaller +- int8um +- int8up +- int8xor +- integer\_pl\_date +- inter\_lb +- inter\_sb +- inter\_sl +- internal\_in +- internal\_out +- interval +- interval\_accum +- interval\_avg +- interval\_cmp +- interval\_collect +- interval\_div +- interval\_eq +- interval\_ge +- interval\_gt +- interval\_hash +- interval\_in +- interval\_larger +- interval\_le +- interval\_list\_agg\_noarg2\_transfn +- interval\_list\_agg\_transfn +- interval\_lt +- interval\_mi +- interval\_mul +- interval\_ne +- interval\_out +- interval\_pl +- interval\_pl\_date +- interval\_pl\_time +- interval\_pl\_timestamp +- interval\_pl\_timestamptz +- interval\_pl\_timetz +- interval\_recv +- interval\_send +- interval\_smaller +- interval\_transform +- interval\_um +- intervaltypmodin +- intervaltypmodout +- intinterval +- isclosed +- isempty +- isfinite +- ishorizontal +- isopen +- isparallel +- isperp +- isvertical +- json\_in +- json\_out +- json\_recv +- json\_send +- justify\_days +- justify\_hours +- justify\_interval +- kill\_snapshot +- lag +- language\_handler\_in +- language\_handler\_out +- last\_day +- last\_value +- lastval +- lead +- left +- length +- lengthb +- like +- like\_escape +- likejoinsel +- likesel +- line +- line\_distance +- line\_eq +- line\_horizontal +- line\_in +- line\_interpt +- line\_intersect +- line\_out +- line\_parallel +- line\_perp +- line\_recv +- line\_send +- line\_vertical +- list\_agg\_finalfn +- list\_agg\_noarg2\_transfn +- list\_agg\_transfn +- listagg +- ln +- lo\_close +- lo\_creat +- lo\_create +- lo\_export +- lo\_import +- lo\_lseek +- lo\_open +- lo\_tell +- lo\_truncate +- lo\_unlink +- local\_ckpt\_stat +- local\_double\_write\_stat +- local\_pagewriter\_stat +- local\_recovery\_status +- local\_redo\_stat +- local\_rto\_stat +- log +- loread +- lower +- lower\_inc +- lower\_inf +- lowrite +- lpad +- lseg +- lseg\_center +- lseg\_distance +- lseg\_eq +- lseg\_ge +- lseg\_gt +- lseg\_horizontal +- lseg\_in +- lseg\_interpt +- lseg\_intersect +- lseg\_le +- lseg\_length +- lseg\_lt +- lseg\_ne +- lseg\_out +- lseg\_parallel +- lseg\_perp +- lseg\_recv +- lseg\_send +- lseg\_vertical +- ltrim +- macaddr\_and +- macaddr\_cmp +- macaddr\_eq +- macaddr\_ge +- macaddr\_gt +- macaddr\_in +- macaddr\_le +- macaddr\_lt +- macaddr\_ne +- macaddr\_not +- macaddr\_or +- macaddr\_out +- macaddr\_recv +- macaddr\_send +- makeaclitem +- masklen +- max +- md5 +- min +- mktinterval +- mod +- model\_train\_opt +- money +- mul\_d\_interval +- multiply +- name +- nameeq +- namege +- namegt +- nameiclike +- nameicnlike +- nameicregexeq +- nameicregexne +- namein +- namele +- namelike +- namelt +- namene +- namenlike +- nameout +- namerecv +- nameregexeq +- nameregexne +- namesend +- neqjoinsel +- neqsel +- netmask +- network +- network\_cmp +- network\_eq +- network\_ge +- network\_gt +- network\_le +- network\_lt +- network\_ne +- network\_sub +- network\_subeq +- network\_sup +- network\_supeq +- next\_day +- nextval +- ngram\_end +- ngram\_lextype +- ngram\_nexttoken +- ngram\_start +- nlikejoinsel +- nlikesel +- node\_oid\_name +- notlike +- now +- npoints +- nth\_value +- ntile +- numeric +- numeric\_abs +- numeric\_accum +- numeric\_add +- numeric\_avg +- numeric\_avg\_accum +- numeric\_avg\_collect +- numeric\_bpchar +- numeric\_cmp +- numeric\_collect +- numeric\_div +- numeric\_div\_trunc +- numeric\_eq +- numeric\_exp +- numeric\_fac +- numeric\_ge +- numeric\_gt +- numeric\_in +- numeric\_inc +- numeric\_int1 +- numeric\_larger +- numeric\_le +- numeric\_list\_agg\_noarg2\_transfn +- numeric\_list\_agg\_transfn +- numeric\_ln +- numeric\_log +- numeric\_lt +- numeric\_mod +- numeric\_mul +- numeric\_ne +- numeric\_out +- numeric\_power +- numeric\_recv +- numeric\_send +- numeric\_smaller +- numeric\_sortsupport +- numeric\_sqrt +- numeric\_stddev\_pop +- numeric\_stddev\_samp +- numeric\_sub +- numeric\_text +- numeric\_transform +- numeric\_uminus +- numeric\_uplus +- numeric\_var\_pop +- numeric\_var\_samp +- numeric\_varchar +- numerictypmodin +- numerictypmodout +- numnode +- numrange +- numrange\_subdiff +- numtoday +- numtodsinterval +- nvarchar2 +- nvarchar2in +- nvarchar2out +- nvarchar2recv +- nvarchar2send +- nvarchar2typmodin +- nvarchar2typmodout +- obj\_description +- octet\_length +- oid +- oideq +- oidge +- oidgt +- oidin +- oidlarger +- oidle +- oidlt +- oidne +- oidout +- oidrecv +- oidsend +- oidsmaller +- oidvectoreq +- oidvectorge +- oidvectorgt +- oidvectorin +- oidvectorin\_extend +- oidvectorle +- oidvectorlt +- oidvectorne +- oidvectorout +- oidvectorout\_extend +- oidvectorrecv +- oidvectorrecv\_extend +- oidvectorsend +- oidvectorsend\_extend +- oidvectortypes +- on\_pb +- on\_pl +- on\_ppath +- on\_ps +- on\_sb +- on\_sl +- opaque\_in +- opaque\_out +- ordered\_set\_transition +- overlaps +- overlay +- path +- path\_add +- path\_add\_pt +- path\_center +- path\_contain\_pt +- path\_distance +- path\_div\_pt +- path\_in +- path\_inter +- path\_length +- path\_mul\_pt +- path\_n\_eq +- path\_n\_ge +- path\_n\_gt +- path\_n\_le +- path\_n\_lt +- path\_npoints +- path\_out +- path\_recv +- path\_send +- path\_sub\_pt +- percent\_rank +- percentile\_cont +- percentile\_cont\_float8\_final +- percentile\_cont\_interval\_final +- pg\_autovac\_coordinator +- pg\_available\_extension\_versions +- pg\_available\_extensions +- pg\_buffercache\_pages +- pg\_cancel\_invalid\_query +- pg\_char\_to\_encoding +- pg\_check\_xidlimit +- pg\_clean\_region\_info +- pg\_collation\_for +- pg\_comm\_delay +- pg\_comm\_recv\_stream +- pg\_comm\_send\_stream +- pg\_comm\_status +- pg\_control\_group\_config +- pg\_create\_physical\_replication\_slot +- pg\_current\_sessid +- pg\_current\_sessionid +- pg\_current\_userid +- pg\_cursor +- pg\_encoding\_max\_length +- pg\_encoding\_to\_char +- pg\_extension\_config\_dump +- pg\_extension\_update\_paths +- pg\_filenode\_relation +- pg\_get\_replication\_slot\_name +- pg\_get\_replication\_slots +- pg\_get\_xidlimit +- pg\_lock\_status +- pg\_log\_comm\_status +- pg\_logical\_slot\_get\_binary\_changes +- pg\_logical\_slot\_peek\_binary\_changes +- pg\_node\_tree\_in +- pg\_node\_tree\_out +- pg\_node\_tree\_recv +- pg\_node\_tree\_send +- pg\_notify +- pg\_parse\_clog +- pg\_partition\_filenode +- pg\_pool\_ping +- pg\_pool\_validate +- pg\_prepared\_statement +- pg\_prepared\_xact +- pg\_relation\_compression\_ratio +- pg\_relation\_with\_compression +- pg\_resume\_bkp\_flag +- pg\_sequence\_parameters +- pg\_show\_all\_settings +- pg\_stat\_file\_recursive +- pg\_stat\_get\_activity\_for\_temptable +- pg\_stat\_get\_activity\_ng +- pg\_stat\_get\_bgwriter\_stat\_reset\_time +- pg\_stat\_get\_buf\_fsync\_backend +- pg\_stat\_get\_cgroup\_info +- pg\_stat\_get\_checkpoint\_sync\_time +- pg\_stat\_get\_checkpoint\_write\_time +- pg\_stat\_get\_db\_blk\_read\_time +- pg\_stat\_get\_db\_blk\_write\_time +- pg\_stat\_get\_db\_conflict\_all +- pg\_stat\_get\_db\_conflict\_bufferpin +- pg\_stat\_get\_db\_conflict\_snapshot +- pg\_stat\_get\_db\_conflict\_startup\_deadlock +- pg\_stat\_get\_db\_conflict\_tablespace +- pg\_stat\_get\_db\_stat\_reset\_time +- pg\_stat\_get\_db\_temp\_bytes +- pg\_stat\_get\_db\_temp\_files +- pg\_stat\_get\_file\_stat +- pg\_stat\_get\_function\_total\_time +- pg\_stat\_get\_mem\_mbytes\_reserved +- pg\_stat\_get\_partition\_tuples\_hot\_updated +- pg\_stat\_get\_pooler\_status +- pg\_stat\_get\_realtime\_info\_internal +- pg\_stat\_get\_redo\_stat +- pg\_stat\_get\_role\_name +- pg\_stat\_get\_session\_wlmstat +- pg\_stat\_get\_status +- pg\_stat\_get\_stream\_replications +- pg\_stat\_get\_wal\_receiver +- pg\_stat\_get\_wal\_senders +- pg\_stat\_get\_wlm\_ec\_operator\_info +- pg\_stat\_get\_wlm\_instance\_info +- pg\_stat\_get\_wlm\_instance\_info\_with\_cleanup +- pg\_stat\_get\_wlm\_node\_resource\_info +- pg\_stat\_get\_wlm\_operator\_info +- pg\_stat\_get\_wlm\_realtime\_ec\_operator\_info +- pg\_stat\_get\_wlm\_realtime\_operator\_info +- pg\_stat\_get\_wlm\_realtime\_session\_info +- pg\_stat\_get\_wlm\_session\_info +- pg\_stat\_get\_wlm\_session\_info\_internal +- pg\_stat\_get\_wlm\_session\_iostat\_info +- pg\_stat\_get\_wlm\_statistics +- pg\_stat\_get\_workload\_struct\_info +- pg\_stat\_get\_xact\_blocks\_fetched +- pg\_stat\_get\_xact\_blocks\_hit +- pg\_stat\_get\_xact\_function\_calls +- pg\_stat\_get\_xact\_function\_self\_time +- pg\_stat\_get\_xact\_function\_total\_time +- pg\_stat\_get\_xact\_numscans +- pg\_stat\_get\_xact\_tuples\_fetched +- pg\_stat\_get\_xact\_tuples\_returned +- pg\_stat\_reset +- pg\_sync\_cstore\_delta +- pg\_tde\_info +- pg\_test\_err\_contain\_err +- pg\_timezone\_abbrevs +- pg\_timezone\_names +- pgxc\_get\_csn +- pgxc\_get\_thread\_wait\_status +- pgxc\_lock\_for\_sp\_database +- pgxc\_max\_datanode\_size +- pgxc\_node\_str +- pgxc\_pool\_connection\_status +- pgxc\_snapshot\_status +- pgxc\_stat\_dirty\_tables +- pgxc\_unlock\_for\_sp\_database +- pi +- plainto\_tsquery +- plancache\_clean +- plancache\_status +- point +- point\_above +- point\_add +- point\_below +- point\_distance +- point\_div +- point\_eq +- point\_horiz +- point\_in +- point\_left +- point\_mul +- point\_ne +- point\_out +- point\_recv +- point\_right +- point\_send +- point\_sub +- point\_vert +- poly\_above +- poly\_below +- poly\_center +- poly\_contain +- poly\_contain\_pt +- poly\_contained +- poly\_distance +- poly\_in +- poly\_left +- poly\_npoints +- poly\_out +- poly\_overabove +- poly\_overbelow +- poly\_overlap +- poly\_overleft +- poly\_overright +- poly\_recv +- poly\_right +- poly\_same +- poly\_send +- polygon +- position +- positionjoinsel +- positionsel +- postgresql\_fdw\_validator +- pound\_end +- pound\_lextype +- pound\_nexttoken +- pound\_start +- pow +- power +- prepare\_statement\_status +- prsd\_end +- prsd\_headline +- prsd\_lextype +- prsd\_nexttoken +- prsd\_start +- psortbuild +- psortcanreturn +- psortcostestimate +- psortgetbitmap +- psortgettuple +- psortoptions +- pt\_contained\_circle +- pt\_contained\_poly +- pv\_builtin\_functions +- pv\_compute\_pool\_workload +- pv\_os\_run\_info +- pv\_session\_memory +- pv\_session\_memory\_detail +- pv\_session\_stat +- pv\_session\_time +- pv\_thread\_memory\_detail +- pv\_total\_memory\_detail +- query\_to\_xml +- query\_to\_xml\_and\_xmlschema +- query\_to\_xmlschema +- querytree +- quote\_ident +- quote\_literal +- quote\_nullable +- radians +- radius +- random +- range\_adjacent +- range\_after +- range\_before +- range\_cmp +- range\_contained\_by +- range\_contains +- range\_contains\_elem +- range\_eq +- range\_ge +- range\_gist\_compress +- range\_gist\_consistent +- range\_gist\_decompress +- range\_gist\_penalty +- range\_gist\_picksplit +- range\_gist\_same +- range\_gist\_union +- range\_gt +- range\_in +- range\_intersect +- range\_le +- range\_lt +- range\_minus +- range\_ne +- range\_out +- range\_overlaps +- range\_overleft +- range\_overright +- range\_recv +- range\_send +- range\_typanalyze +- range\_union +- rank +- rawcat +- rawcmp +- raweq +- rawge +- rawgt +- rawin +- rawle +- rawlike +- rawlt +- rawne +- rawnlike +- rawout +- rawrecv +- rawsend +- rawtohex +- read\_disable\_conn\_file +- record\_eq +- record\_ge +- record\_gt +- record\_in +- record\_le +- record\_lt +- record\_ne +- record\_out +- record\_recv +- record\_send +- regclass +- regclassin +- regclassout +- regclassrecv +- regclasssend +- regconfigin +- regconfigout +- regconfigrecv +- regconfigsend +- regdictionaryin +- regdictionaryout +- regdictionaryrecv +- regdictionarysend +- regexeqjoinsel +- regexeqsel +- regexnejoinsel +- regexnesel +- regexp\_matches +- regexp\_replace +- regexp\_split\_to\_array +- regexp\_split\_to\_table +- regoperatorin +- regoperatorout +- regoperatorrecv +- regoperatorsend +- regoperin +- regoperout +- regoperrecv +- regopersend +- regprocedurein +- regprocedureout +- regprocedurerecv +- regproceduresend +- regprocin +- regprocout +- regprocrecv +- regprocsend +- regr\_avgx +- regr\_avgy +- regr\_count +- regr\_intercept +- regr\_r2 +- regr\_slope +- regr\_sxx +- regr\_sxy +- regr\_syy +- regtypein +- regtypeout +- regtyperecv +- regtypesend +- reltime +- reltimeeq +- reltimege +- reltimegt +- reltimein +- reltimele +- reltimelt +- reltimene +- reltimeout +- reltimerecv +- reltimesend +- remote\_ckpt\_stat +- remote\_double\_write\_stat +- remote\_pagewriter\_stat +- remote\_recovery\_status +- remote\_redo\_stat +- remote\_rto\_stat +- repeat +- replace +- report\_fatal +- reset\_unique\_sql +- reverse +- RI\_FKey\_cascade\_del +- RI\_FKey\_cascade\_upd +- RI\_FKey\_check\_ins +- RI\_FKey\_check\_upd +- RI\_FKey\_noaction\_del +- RI\_FKey\_noaction\_upd +- RI\_FKey\_restrict\_del +- RI\_FKey\_restrict\_upd +- RI\_FKey\_setdefault\_del +- RI\_FKey\_setdefault\_upd +- RI\_FKey\_setnull\_del +- RI\_FKey\_setnull\_upd +- right +- round +- row\_number +- row\_to\_json +- rpad +- rtrim +- scalargtjoinsel +- scalargtsel +- scalarltjoinsel +- scalarltsel +- schema\_to\_xml +- schema\_to\_xml\_and\_xmlschema +- schema\_to\_xmlschema +- session\_user +- sessionid2pid +- set\_bit +- set\_byte +- set\_config +- set\_hashbucket\_info +- set\_masklen +- set\_working\_grand\_version\_num\_manually +- setseed +- setval +- setweight +- shell\_in +- shell\_out +- shobj\_description +- sign +- signal\_backend +- similar\_escape +- sin +- slope +- smalldatetime\_cmp +- smalldatetime\_eq +- smalldatetime\_ge +- smalldatetime\_gt +- smalldatetime\_hash +- smalldatetime\_in +- smalldatetime\_larger +- smalldatetime\_le +- smalldatetime\_lt +- smalldatetime\_ne +- smalldatetime\_out +- smalldatetime\_recv +- smalldatetime\_send +- smalldatetime\_smaller +- smgreq +- smgrin +- smgrne +- smgrout +- spg\_kd\_choose +- spg\_kd\_config +- spg\_kd\_inner\_consistent +- spg\_kd\_picksplit +- spg\_quad\_choose +- spg\_quad\_config +- spg\_quad\_inner\_consistent +- spg\_quad\_leaf\_consistent +- spg\_quad\_picksplit +- spg\_text\_choose +- spg\_text\_config +- spg\_text\_inner\_consistent +- spg\_text\_leaf\_consistent +- spg\_text\_picksplit +- spgbeginscan +- spgbuild +- spgbuildempty +- spgbulkdelete +- spgcanreturn +- spgcostestimate +- spgendscan +- spggetbitmap +- spggettuple +- spginsert +- spgmarkpos +- spgmerge +- spgoptions +- spgrescan +- spgrestrpos +- spgvacuumcleanup +- split\_part +- sqrt +- statement\_timestamp +- stddev +- stddev\_pop +- stddev\_samp +- string\_agg +- string\_agg\_finalfn +- string\_agg\_transfn +- string\_to\_array +- strip +- strpos +- substr +- substrb +- substring +- substring\_inner +- sum +- suppress\_redundant\_updates\_trigger +- sysdate +- table\_data\_skewness +- table\_distribution +- table\_to\_xml +- table\_to\_xml\_and\_xmlschema +- table\_to\_xmlschema +- tablespace\_oid\_name +- tan +- text +- text\_date +- text\_float4 +- text\_float8 +- text\_ge +- text\_gt +- text\_int1 +- text\_int2 +- text\_int4 +- text\_int8 +- text\_larger +- text\_le +- text\_lt + +- text\_numeric +- text\_pattern\_ge +- text\_pattern\_gt +- text\_pattern\_le +- text\_pattern\_lt +- text\_smaller +- text\_timestamp +- textanycat +- textcat +- texteq +- texticlike +- texticnlike +- texticregexeq +- texticregexne +- textin +- textlen +- textlike +- textne +- textnlike +- textout +- textrecv +- textregexeq +- textregexne +- textsend +- thesaurus\_init +- thesaurus\_lexize +- threadpool\_status +- tideq +- tidge +- tidgt +- tidin +- tidlarger +- tidle +- tidlt +- tidne +- tidout +- tidrecv +- tidsend +- tidsmaller +- time +- time\_cmp +- time\_eq +- time\_ge +- time\_gt +- time\_hash +- time\_in +- time\_larger +- time\_le +- time\_lt +- time\_mi\_interval +- time\_mi\_time +- time\_ne +- time\_out +- time\_pl\_interval +- time\_recv +- time\_send +- time\_smaller +- time\_transform +- timedate\_pl +- timemi +- timenow +- timeofday +- timepl +- timestamp +- timestamp\_cmp +- timestamp\_cmp\_date +- timestamp\_cmp\_timestamptz +- timestamp\_diff +- timestamp\_eq +- timestamp\_eq\_date +- timestamp\_eq\_timestamptz +- timestamp\_ge +- timestamp\_ge\_date +- timestamp\_ge\_timestamptz +- timestamp\_gt +- timestamp\_gt\_date +- timestamp\_gt\_timestamptz +- timestamp\_hash +- timestamp\_in +- timestamp\_larger +- timestamp\_le +- timestamp\_le\_date +- timestamp\_le\_timestamptz +- timestamp\_list\_agg\_noarg2\_transfn +- timestamp\_list\_agg\_transfn +- timestamp\_lt +- timestamp\_lt\_date +- timestamp\_lt\_timestamptz +- timestamp\_mi +- timestamp\_mi\_interval +- timestamp\_ne +- timestamp\_ne\_date +- timestamp\_ne\_timestamptz +- timestamp\_out +- timestamp\_pl\_interval +- timestamp\_recv +- timestamp\_send +- timestamp\_smaller +- timestamp\_sortsupport +- timestamp\_text +- timestamp\_transform +- timestamp\_varchar +- timestamptypmodin +- timestamptypmodout +- timestamptz +- timestamptz\_cmp +- timestamptz\_cmp\_date +- timestamptz\_cmp\_timestamp +- timestamptz\_eq +- timestamptz\_eq\_date +- timestamptz\_eq\_timestamp +- timestamptz\_ge +- timestamptz\_ge\_date +- timestamptz\_ge\_timestamp +- timestamptz\_gt +- timestamptz\_gt\_date +- timestamptz\_gt\_timestamp +- timestamptz\_in +- timestamptz\_larger +- timestamptz\_le +- timestamptz\_le\_date +- timestamptz\_le\_timestamp +- timestamptz\_list\_agg\_noarg2\_transfn +- timestamptz\_list\_agg\_transfn +- timestamptz\_lt +- timestamptz\_lt\_date +- timestamptz\_lt\_timestamp +- timestamptz\_mi +- timestamptz\_mi\_interval +- timestamptz\_ne +- timestamptz\_ne\_date +- timestamptz\_ne\_timestamp +- timestamptz\_out +- timestamptz\_pl\_interval +- timestamptz\_recv +- timestamptz\_send +- timestamptz\_smaller +- timestamptztypmodin +- timestamptztypmodout +- timestampzone\_text +- timetypmodin +- timetypmodout +- timetz +- timetz\_cmp +- timetz\_eq +- timetz\_ge +- timetz\_gt +- timetz\_hash +- timetz\_in +- timetz\_larger +- timetz\_le +- timetz\_lt +- timetz\_mi\_interval +- timetz\_ne +- timetz\_out +- timetz\_pl\_interval +- timetz\_recv +- timetz\_send +- timetz\_smaller +- timetzdate\_pl +- timetztypmodin +- timetztypmodout +- timezone +- tinterval +- tintervalct +- tintervalend +- tintervaleq +- tintervalge +- tintervalgt +- tintervalin +- tintervalle +- tintervalleneq +- tintervallenge +- tintervallengt +- tintervallenle +- tintervallenlt +- tintervallenne +- tintervallt +- tintervalne +- tintervalout +- tintervalov +- tintervalrecv +- tintervalrel +- tintervalsame +- tintervalsend +- tintervalstart +- to\_ascii +- to\_char +- to\_date +- to\_hex +- to\_number +- to\_timestamp +- to\_tsquery +- to\_tsvector +- to\_tsvector\_for\_batch +- total\_cpu +- total\_memory +- track\_model\_train\_opt +- transaction\_timestamp +- translate +- trigger\_in +- trigger\_out +- trunc +- ts\_headline +- ts\_lexize +- ts\_match\_qv +- ts\_match\_tq +- ts\_match\_tt +- ts\_match\_vq +- ts\_parse +- ts\_rank +- ts\_rank\_cd +- ts\_rewrite +- ts\_stat +- ts\_token\_type +- ts\_typanalyze +- tsmatchjoinsel +- tsmatchsel +- tsq\_mcontained +- tsq\_mcontains +- tsquery\_and +- tsquery\_cmp +- tsquery\_eq +- tsquery\_ge +- tsquery\_gt +- tsquery\_le +- tsquery\_lt +- tsquery\_ne +- tsquery\_not +- tsquery\_or +- tsqueryin +- tsqueryout +- tsqueryrecv +- tsquerysend +- tsrange +- tsrange\_subdiff +- tstzrange +- tstzrange\_subdiff +- tsvector\_cmp +- tsvector\_concat +- tsvector\_eq +- tsvector\_ge +- tsvector\_gt +- tsvector\_le +- tsvector\_lt +- tsvector\_ne +- tsvector\_update\_trigger +- tsvector\_update\_trigger\_column +- tsvectorin +- tsvectorout +- tsvectorrecv +- tsvectorsend +- txid\_current +- txid\_current\_snapshot +- txid\_snapshot\_in +- txid\_snapshot\_out +- txid\_snapshot\_recv +- txid\_snapshot\_send +- txid\_snapshot\_xip +- txid\_snapshot\_xmax +- txid\_snapshot\_xmin +- txid\_visible\_in\_snapshot +- unique\_key\_recheck +- unknownin +- unknownout +- unknownrecv +- unknownsend +- unnest +- update\_pgjob +- upper +- upper\_inc +- upper\_inf +- uuid\_cmp +- uuid\_eq +- uuid\_ge +- uuid\_gt +- uuid\_hash +- uuid\_in +- uuid\_le +- uuid\_lt +- uuid\_ne +- uuid\_out +- uuid\_recv +- uuid\_send +- var\_pop +- var\_samp +- varbit +- varbit\_in +- varbit\_out +- varbit\_recv +- varbit\_send +- varbit\_transform +- varbitcmp +- varbiteq +- varbitge +- varbitgt +- varbitle +- varbitlt +- varbitne +- varbittypmodin +- varbittypmodout +- varchar +- varchar\_date +- varchar\_float4 +- varchar\_float8 +- varchar\_int4 +- varchar\_int8 +- varchar\_numeric +- varchar\_timestamp +- varchar\_transform +- varcharin +- varcharout +- varcharrecv +- varcharsend +- varchartypmodin +- varchartypmodout +- variance +- version +- void\_in +- void\_out +- void\_recv +- void\_send +- wdr\_xdb\_query +- width +- width\_bucket +- xideq +- xideq4 +- xideqint4 +- xideqint8 +- xidin +- xidin4 +- xidlt +- xidlt4 +- xidout +- xidout4 +- xidrecv +- xidrecv4 +- xidsend +- xidsend4 +- xml +- xml\_in +- xml\_is\_well\_formed +- xml\_is\_well\_formed\_content +- xml\_is\_well\_formed\_document +- xml\_out +- xml\_recv +- xml\_send +- xmlagg +- xmlcomment +- xmlconcat2 +- xmlexists +- xmlvalidate +- xpath +- xpath\_exists +- zhprs\_end +- zhprs\_getlexeme +- zhprs\_lextype +- zhprs\_start + diff --git "a/content/zh/docs/Developerguide/\345\205\266\344\273\226\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\345\205\266\344\273\226\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..d0e9c56cd1449bfb2804a711583b4fc8032e513e --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\205\266\344\273\226\350\257\255\345\217\245.md" @@ -0,0 +1,7 @@ +# 其他语句 + +- **[锁操作](锁操作.md)** + +- **[游标操作](游标操作.md)** + + diff --git "a/content/zh/docs/Developerguide/\345\205\266\345\256\203\351\200\211\351\241\271.md" "b/content/zh/docs/Developerguide/\345\205\266\345\256\203\351\200\211\351\241\271.md" index 8c6bb7ae6124aff42837c9a282a8c9a0c25fe3b5..300fcd3bfa3d69891e84cbfd5c56601f49add6ce 100644 --- "a/content/zh/docs/Developerguide/\345\205\266\345\256\203\351\200\211\351\241\271.md" +++ "b/content/zh/docs/Developerguide/\345\205\266\345\256\203\351\200\211\351\241\271.md" @@ -36,7 +36,9 @@ 该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 -**默认值:**131072 +**单位**: 8KB + +**默认值:**131072, 即1GB ## max\_index\_keys @@ -244,7 +246,7 @@ add_months

compat_analyze_sample

analyze采样行为配置项。

-

设置此配置项时,会优化analyze的采样行为,主要体现在analyze时全局采样会更精确的控制在3万条左右,更好的控制analyze时DBnode端的内存消耗,保证analyze性能的稳定性。

+

设置此配置项时,会优化analyze的采样行为,主要体现在analyze时全局采样会更精确的控制在3万条左右,更好的控制analyze时DBnode端的内存消耗,保证analyze性能的稳定性。

bind_schema_tablespace

@@ -264,7 +266,7 @@ add_months

correct_to_number

控制to_number()结果兼容性的配置项。

-

若设置此配置项,则to_number()函数结果与pg11保持一致,否则默认与a db保持一致。

+

若设置此配置项,则to_number()函数结果与pg11保持一致,否则默认与O db保持一致。

unbind_dive_bound

@@ -276,7 +278,7 @@ add_months

merge_update_multi

控制merge into匹配多行时是否进行update操作。

-

若设置此配置项,匹配多行时update不报错,否则默认与a db保持一致,报错。

+

若设置此配置项,匹配多行时update不报错,否则默认与a db保持一致,报错。

return_null_string

@@ -299,7 +301,7 @@ length

compat_concat_variadic

控制函数concat()和concat_ws()对variadic类型结果兼容性的配置项。

-

若设置此配置项,当concat函数参数为variadic类型时,保留a db和Teradata兼容模式下不同的结果形式;否则默认a db和Teradata兼容模式下结果相同,且与a db保持一致。由于mysql无variadic类型,所以该选项对MySQL无影响。

+

若设置此配置项,当concat函数参数为variadic类型时,保留a db和Teradata兼容模式下不同的结果形式;否则默认a db和Teradata兼容模式下结果相同,且与a db保持一致。由于MY无variadic类型,所以该选项对MY无影响。

merge_update_multi

@@ -383,19 +385,3 @@ length 默认值:authentication -## enable\_tsdb - -**参数说明:**是否开启时序数据库特性。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**布尔型 - -- on:表示打开时序数据库特性功能。 -- off:表示关闭时序数据库特性功能。 - -**默认值**:off - ->![](public_sys-resources/icon-note.gif) **说明:** ->开启时序数据库特性后如果需要关闭该特性请谨慎考虑,因为关闭后会对原有业务流量有影响 - diff --git "a/content/zh/docs/Developerguide/\345\205\270\345\236\213SQL\350\260\203\344\274\230\347\202\271.md" "b/content/zh/docs/Developerguide/\345\205\270\345\236\213SQL\350\260\203\344\274\230\347\202\271.md" new file mode 100644 index 0000000000000000000000000000000000000000..ffe1aa9f98335306b4be3d5d2dbcbb9f6b67d680 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\205\270\345\236\213SQL\350\260\203\344\274\230\347\202\271.md" @@ -0,0 +1,13 @@ +# 典型SQL调优点 + +SQL调优是一个不断分析与尝试的过程:试跑Query,判断性能是否满足要求;如果不满足要求,则通过[查看执行计划](SQL执行计划介绍.md)分析原因并进行针对性优化;然后重新试跑和优化,直到满足性能目标。 + +- **[SQL自诊断](SQL自诊断.md)** + +- **[子查询调优](子查询调优.md)** + +- **[统计信息调优](统计信息调优.md)** + +- **[算子级调优](算子级调优.md)** + + diff --git "a/content/zh/docs/Developerguide/\345\206\205\345\255\230-21.md" "b/content/zh/docs/Developerguide/\345\206\205\345\255\230-21.md" new file mode 100644 index 0000000000000000000000000000000000000000..62a25c768bc5a1dc479b1f0a0da3f2bdeef84dea --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\206\205\345\255\230-21.md" @@ -0,0 +1,279 @@ +# 内存 + +介绍与内存相关的参数设置。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>这些参数只能在数据库服务重新启动后生效。 + +## memorypool\_enable + +**参数说明**:设置是否允许使用内存池。 + +该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:布尔型 + +- on表示允许使用内存池。 +- off表示不允许使用内存池。 + +**默认值**:off + +## memorypool\_size + +**参数说明**:设置内存池大小。 + +该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,128\*1024~INT\_MAX/2,单位为KB。 + +**默认值**:512MB + +## enable\_memory\_limit + +**参数说明:**启用逻辑内存管理模块。 + +该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:布尔型 + +- on表示启用逻辑内存管理模块。 +- off表示不启用逻辑内存管理模块。 + +**默认值:**on + +>![](public_sys-resources/icon-notice.gif) **须知:** +>若max\_process\_memory-shared buffer-cstore buffers少于2G,openGauss强制把enable\_memory\_limit设置为off。 + +## max\_process\_memory + +**参数说明:**设置一个数据库节点可用的最大物理内存。 + +该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:整型,2\*1024\*1024~INT\_MAX,单位为KB。 + +**默认值:**非从备数据库节点自动适配,公式为(物理内存大小)\*0.6/\(1+主节点个数\),当结果不足2GB时,默认取2GB。从备节点默认为12GB。 + +**设置建议:** + +数据库节点上该数值需要根据系统物理内存及单节点部署主数据库节点个数决定。建议计算公式如下:物理内存大小 \* 系数 / 主节点个数,系数通常建议为0.8。该系数的目的在于预留内存供操作系统内核使用,尽可能保证系统的可靠性,防止因数据库内存膨胀导致物理节点OOM。节点的物理内存越小, 系数应越小。例如, 128GB物理内存的节点可以使用0.9作为系数, 而32GB的节点可能只适合0.7作为系数。 + +## enable\_memory\_context\_control + +**参数说明:**启用检查内存上下文是否超过给定限制的功能。仅适用于DEBUG版本。 + +该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围**:布尔型 + +- on表示启用最大内存上下文限制检查功能。 +- off表示关闭最大内存上下文限制检查功能。 + +**默认值:**off + +## uncontrolled\_memory\_context + +**参数说明:**启用检查内存上下文是否超过给定限制的功能时,设置不受此功能约束。仅适用于DEBUG版本。 + +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +查询时会在参数值的最前面添加标题含义字符串“MemoryContext white list:"。 + +**取值范围**:字符串 + +**默认值:**空 + +## shared\_buffers + +**参数说明:**设置openGauss使用的共享内存大小。增加此参数的值会使openGauss比系统默认设置需要更多的System V共享内存。 + +该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,16 \~ 1073741823 ,单位为8KB。 + +改变BLCKSZ的值会改变最小值。 + +**默认值:**数据库节点为1GB。如果操作系统支持的共享内存小于32MB,则在初始化数据存储区时会自动调整为操作系统支持的最大值。 + +**设置建议:** + +建议设置shared\_buffers值为内存的40%以内。行存列存分开对待。行存设大,列存设小。列存:\(单服务器内存/单服务器数据库节点个数\)\*0.4\*0.25。 + +如果设置较大的shared\_buffers需要同时增加checkpoint\_segments的值,因为写入大量新增、修改数据需要消耗更多的时间周期。 + +## bulk\_write\_ring\_size + +**参数说明:**数据并行导入使用的环形缓冲区大小。 + +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,16384 \~ 2147483647,单位为KB。 + +**默认值:**2GB + +**设置建议:**建议导入压力大的场景中增加数据库节点中此参数配置。 + +## standby\_shared\_buffers\_fraction + +**参数说明:**备实例所在服务器使用shared\_buffers内存缓冲区大小的比例。 + +该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**双精度类型,0.1\~1.0 + +**默认值:**0.3 + +## temp\_buffers + +**参数说明:**设置每个数据库会话使用的LOCAL临时缓冲区的大小。 + +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +在每个会话的第一次使用临时表之前可以改变temp\_buffers的值,之后的设置将是无效的。 + +一个会话将按照temp\_buffers给出的限制,根据需要分配临时缓冲区。如果在一个并不需要大量临时缓冲区的会话里设置一个大的数值,其开销只是一个缓冲区描述符的大小。当缓冲区被使用,就会额外消耗8192字节。 + +**取值范围:**整型,100\~1073741823,单位为8KB。 + +**默认值:**8MB + +## max\_prepared\_transactions + +**参数说明:**设置可以同时处于"预备"状态的事务的最大数目。增加此参数的值会使openGauss比系统默认设置需要更多的System V共享内存。 + +当openGauss部署为主备双机时,在备机上此参数的设置必须要高于或等于主机上的,否则无法在备机上进行查询操作。 + +该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型。0\~536870911。 + +**默认值:**800 + +>![](public_sys-resources/icon-note.gif) **说明:** +>为避免在准备步骤失败,此参数的值不能小于max\_connections。 + +## work\_mem + +**参数说明:**设置内部排序操作和Hash表在开始写入临时磁盘文件之前使用的内存大小。ORDER BY,DISTINCT和merge joins都要用到排序操作。Hash表在散列连接、散列为基础的聚集、散列为基础的IN子查询处理中都要用到。 + +对于复杂的查询,可能会同时并发运行好几个排序或者散列操作,每个都可以使用此参数所声明的内存量,不足时会使用临时文件。同样,好几个正在运行的会话可能会同时进行排序操作。因此使用的总内存可能是work\_mem的好几倍。 + +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,64\~2147483647,单位为KB。 + +**默认值:**64MB + +**设置建议:** + +依据查询特点和并发来确定,一旦work\_mem限定的物理内存不够,算子运算数据将写入临时表空间,带来5-10倍的性能下降,查询响应时间从秒级下降到分钟级。 + +- 对于串行无并发的复杂查询场景,平均每个查询有5-10关联操作,建议work\_mem=50%内存/10。 +- 对于串行无并发的简单查询场景,平均每个查询有2-5个关联操作,建议work\_mem=50%内存/5。 +- 对于并发场景,建议work\_mem=串行下的work\_mem/物理并发数。 + +## query\_mem + +**参数说明:**设置执行作业所使用的内存。如果设置的query\_mem值大于0,在生成执行计划时,优化器会将作业的估算内存调整为该值。 + +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**0,或大于32M的整型,默认单位为KB。如果设置值为负数或小于32M,将设置为默认值0,此时优化器不会根据该值调整作业的估算内存。 + +**默认值:**0 + +## query\_max\_mem + +**参数说明:**设置执行作业所能够使用的最大内存。如果设置的query\_max\_mem值大于0,当作业执行时所使用内存超过该值时,将报错退出。 + +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**0,或大于32M的整型,默认单位为KB。如果设置值为负数或小于32M,将设置为默认值0,此时不会根据该值限制作业的内存使用。 + +**默认值:**0 + +## maintenance\_work\_mem + +**参数说明:**设置在维护性操作(比如VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY等)中可使用的最大的内存。该参数的设置会影响VACUUM、VACUUM FULL、CLUSTER、CREATE INDEX的执行效率。 + +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,1024\~INT\_MAX,单位为KB。 + +**默认值:**128MB + +**设置建议:** + +- 建议设置此参数的值大于[work\_mem](#zh-cn_topic_0237124699_zh-cn_topic_0059777577_sd27c81d651ce4d2585febca76c4cc34e),可以改进清理和恢复数据库转储的速度。因为在一个数据库会话里,任意时刻只有一个维护性操作可以执行,并且在执行维护性操作时不会有太多的会话。 +- 当[自动清理](自动清理.md)进程运行时,[autovacuum\_max\_workers](自动清理.md#zh-cn_topic_0237124730_zh-cn_topic_0059778244_s76932f79410248ba8923017d19982673)倍数的内存将会被分配,所以此时设置maintenance\_work\_mem的值应该不小于[work\_mem](#zh-cn_topic_0237124699_zh-cn_topic_0059777577_sd27c81d651ce4d2585febca76c4cc34e)。 +- 如果进行大数据量的cluster等,可以在session中调大该值。 + +## psort\_work\_mem + +**参数说明:**设置列存表在进行局部排序中在开始写入临时磁盘文件之前使用的内存大小。带partial cluster key的表、带索引的表插入,创建表索引,删除表和更新表都会用到。 + +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>同样,好几个正在运行的会话可能会同时进行表的局部排序操作。因此使用的总内存可能是psort\_work\_mem的好几倍。 + +**取值范围:**整型64\~2147483647,单位为KB。 + +**默认值:**512MB + +## max\_loaded\_cudesc + +**参数说明:**设置列存表在做扫描时,每列缓存cudesc信息的个数。增大设置会提高查询性能,但也会增加内存占用,特别是当列存表的列非常多时。 + +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>max\_loaded\_cudesc设置过高时,有可能引起内存分配不足。 + +**取值范围:**100\~1073741823。 + +**默认值:**1024 + +## max\_stack\_depth + +**参数说明:**设置openGauss执行堆栈的最大安全深度。需要这个安全界限是因为在服务器里,并非所有程序都检查了堆栈深度,只是在可能递规的过程,比如表达式计算这样的过程里面才进行检查。 + +该参数属于SUSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +设置原则: + +- 数据库需要预留640KB堆栈深度,因此此参数的最佳设置是等于操作系统内核允许的最大值(就是ulimit -s的设置)- 640KB。 +- 如果设置此参数的值大于实际的内核限制,则一个正在运行的递归函数可能会导致一个独立的服务器进程崩溃。在openGauss能够检测内核限制的操作系统上(SLES上),将自动限制设置为一个不安全的值。 +- 因为并非所有的操作都能够检测,所以建议用户在此设置一个明确的值。 + +**取值范围:**整型,100\~INT\_MAX,单位为KB。 + +**默认值:**2MB + +>![](public_sys-resources/icon-note.gif) **说明:** +>默认值2MB,这个值相对比较小,不容易导致系统崩溃。但是可能会因为该值较小,导致无法执行复杂的函数。 + +## cstore\_buffers + +**参数说明:**设置列存所使用的共享缓冲区的大小。 + +该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,16384~1073741823,单位为KB。 + +**默认值:**32768KB + +**设置建议**: + +列存表使用cstore\_buffers设置的共享缓冲区,几乎不用shared\_buffers。因此在列存表为主的场景中,应减少shared\_buffers,增加cstore\_buffers。 + +## bulk\_read\_ring\_size + +**参数说明:**并行导出,使用的环形缓冲区大小。 + +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + +**取值范围:**整型,256\~2147483647,单位为KB。 + +**默认值:**16MB + diff --git "a/content/zh/docs/Developerguide/\345\206\205\345\255\230.md" "b/content/zh/docs/Developerguide/\345\206\205\345\255\230.md" index 37b0ef3fae3c3567c965cd922156caa081c8a40f..2a40c9beaa658a2d63b573086cae4a3d0d45e965 100644 --- "a/content/zh/docs/Developerguide/\345\206\205\345\255\230.md" +++ "b/content/zh/docs/Developerguide/\345\206\205\345\255\230.md" @@ -1,281 +1,69 @@ -# 内存 +# 内存 -介绍与内存相关的参数设置。 +通过top命令查看openGauss节点内存使用情况,分析是否存在由于内存占用率过高导致的性能瓶颈。 ->![](public_sys-resources/icon-notice.gif) **须知:** ->这些参数只能在数据库服务重新启动后生效。 +## 查看内存状况 -## memorypool\_enable +查询服务器内存的使用情况主要通过以下方式: -**参数说明**:设置是否允许使用内存池。 +执行**top**命令,查看内存占用情况。执行该命令后,按“Shift+M”键,可按照内存大小排序。 -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 +``` +top - 11:38:26 up 2 days, 17:59, 10 users, load average: 0.01, 0.05, 0.15 +Tasks: 685 total, 1 running, 684 sleeping, 0 stopped, 0 zombie +%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st +KiB Mem : 19740646+total, 23503420 free, 15947100 used, 15795595+buff/cache +KiB Swap: 8242172 total, 8242172 free, 0 used. 13366219+avail Mem -**取值范围**:布尔型 + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND +29838 omm 20 0 1373104 456904 175248 S 3.6 0.2 98:53.16 gaussdb +27789 omm 20 0 150732 4136 3216 S 0.0 0.0 0:00.00 gsql +45659 omm 20 0 117164 4052 1860 S 0.0 0.0 0:00.24 bash + 8087 omm 20 0 117164 4000 1848 S 0.0 0.0 0:00.05 bash +27459 omm 20 0 117160 4000 1848 S 0.0 0.0 0:00.04 bash +33619 omm 20 0 117120 3852 1740 S 0.0 0.0 0:00.04 bash +27282 omm 20 0 117120 3840 1728 S 0.0 0.0 0:00.03 bash + 9923 omm 20 0 158064 2932 1612 R 0.3 0.0 0:00.04 top +``` -- on表示允许使用内存池。 -- off表示不允许使用内存池。 +分析时,请主要关注gaussdb进程占用的内存百分比(%MEM)、整系统的剩余内存。 -**默认值**:off +显示信息中的主要属性解释如下: -## memorypool\_size +- total:物理内存总量。 +- used:已使用的物理内存总量。 +- free:空闲内存总量。 +- buffers:进程使用的虚拟内存总量。 +- %MEM:进程占用的内存百分比。 +- VIRT:进程使用的虚拟内存总量,VIRT=SWAP+RES。 +- SWAP:进程使用的虚拟内存中已被换出到交换分区的量。 +- RES:进程使用的虚拟内存中未被换出的量。 +- SHR:共享内存大小。 -**参数说明**:设置内存池大小。 +## 性能参数分析 -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 +1. 以root用户执行“free”命令查看cache的占用情况。 -**取值范围**:整型,128\*1024~INT\_MAX/2,单位为KB。 + ``` + free + ``` -**默认值**:512MB + 查询结果如下所示: -## enable\_memory\_limit + ``` + total used free shared buffers cached + Mem: 8038844 6336184 1702660 0 375896 2880912 + -/+ buffers/cache: 3079376 4959468 + Swap: 4192924 0 4192924 + ``` -**参数说明:**启用逻辑内存管理模块。 +2. 若“cache”占用过高,请执行如下命令开启自动清除缓存功能。 -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 + ``` + /opt/software/openGauss/sudo/run_drop_cache.sh + ``` -**取值范围**:布尔型 +3. 若用户内存占用过高,需查看执行计划,重点分析以下内容。 + - 是否有不合理的join顺序。例如,多表关联时,执行计划中优先关联的两表的中间结果集比较大,导致最终执行代价比较大。 -- on表示启用逻辑内存管理模块。 -- off表示不启用逻辑内存管理模块。 - -**默认值:**on - ->![](public_sys-resources/icon-notice.gif) **须知:** ->若max\_process\_memory-shared buffer-cstore buffers少于2G,openGauss强制把enable\_memory\_limit设置为off。 - -## max\_process\_memory - -**参数说明:**设置一个数据库节点可用的最大物理内存。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围**:整型,2\*1024\*1024~INT\_MAX,单位为KB。 - -**默认值:**非从备数据库节点自动适配,公式为(物理内存大小)\*0.6/\(1+主节点个数\),当结果不足2GB时,默认取2GB。从备节点默认为12GB。 - -**设置建议:** - -数据库节点上该数值需要根据系统物理内存及单节点部署主数据库节点个数决定的。计算公式如下:(物理内存大小 – vm.min\_free\_kbytes)\* 0.7 / \(n+主数据库节点个数\)。该参数目的是尽可能保证系统的可靠性,不会因数据库内存膨胀导致节点OOM。这个公式中提到vm.min\_free\_kbytes,其含义是预留操作系统内存供内核使用,通常用作操作系统内核中通信收发内存分配,至少为5%内存。即,max\_process\_memory=物理内存\*0.665/\(n+主数据库节点个数\),其中,当openGauss规模小于256时,n=1;当openGauss规模大于256且小于512时, n=2;当openGauss规模超过512时,n=3。 - -RAM:openGauss规划时分配给openGauss的最大使用内存,实际为服务器的物理内存。 - -## enable\_memory\_context\_control - -**参数说明:**启用检查内存上下文是否超过给定限制的功能。仅适用于DEBUG版本。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围**:布尔型 - -- on表示启用最大内存上下文限制检查功能。 -- off表示关闭最大内存上下文限制检查功能。 - -**默认值:**off - -## uncontrolled\_memory\_context - -**参数说明:**启用检查内存上下文是否超过给定限制的功能时,设置不受此功能约束。仅适用于DEBUG版本。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -查询时会在参数值的最前面添加标题含义字符串“MemoryContext white list:”"。 - -**取值范围**:字符串 - -**默认值:**空 - -## shared\_buffers - -**参数说明:**设置openGauss使用的共享内存大小。增加此参数的值会使openGauss比系统默认设置需要更多的System V共享内存。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,16 \~ 1073741823 ,单位为8KB。 - -改变BLCKSZ的值会改变最小值。 - -**默认值:**数据库节点为1GB。如果操作系统支持的共享内存小于32MB,则在初始化数据存储区时会自动调整为操作系统支持的最大值。 - -**设置建议:** - -建议设置shared\_buffers值为内存的40%以内。行存列存分开对待。行存设大,列存设小。列存:\(单服务器内存/单服务器数据库节点个数\)\*0.4\*0.25。 - -如果设置较大的shared\_buffers需要同时增加checkpoint\_segments的值,因为写入大量新增、修改数据需要消耗更多的时间周期。 - -## bulk\_write\_ring\_size - -**参数说明:**数据并行导入使用的环形缓冲区大小。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,16384 \~ 2147483647,单位为KB。 - -**默认值:**2GB - -**设置建议:**建议导入压力大的场景中增加数据库节点中此参数配置。 - -## standby\_shared\_buffers\_fraction - -**参数说明:**备实例所在服务器使用shared\_buffers内存缓冲区大小的比例。 - -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**双精度类型,0.1\~1.0 - -**默认值:**0.3 - -## temp\_buffers - -**参数说明:**设置每个数据库会话使用的LOCAL临时缓冲区的大小。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -在每个会话的第一次使用临时表之前可以改变temp\_buffers的值,之后的设置将是无效的。 - -一个会话将按照temp\_buffers给出的限制,根据需要分配临时缓冲区。如果在一个并不需要大量临时缓冲区的会话里设置一个大的数值,其开销只是一个缓冲区描述符的大小。当缓冲区被使用,就会额外消耗8192字节。 - -**取值范围:**整型,100\~1073741823,单位为8KB。 - -**默认值:**8MB - -## max\_prepared\_transactions - -**参数说明:**设置可以同时处于"预备"状态的事务的最大数目。增加此参数的值会使openGauss比系统默认设置需要更多的System V共享内存。 - -当openGauss部署为主备双机时,在备机上此参数的设置必须要高于或等于主机上的,否则无法在备机上进行查询操作。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型。0\~536870911。 - -**默认值:**800 - ->![](public_sys-resources/icon-note.gif) **说明:** ->为避免在准备步骤失败,此参数的值不能小于max\_connections。 - -## work\_mem - -**参数说明:**设置内部排序操作和Hash表在开始写入临时磁盘文件之前使用的内存大小。ORDER BY,DISTINCT和merge joins都要用到排序操作。Hash表在散列连接、散列为基础的聚集、散列为基础的IN子查询处理中都要用到。 - -对于复杂的查询,可能会同时并发运行好几个排序或者散列操作,每个都可以使用此参数所声明的内存量,不足时会使用临时文件。同样,好几个正在运行的会话可能会同时进行排序操作。因此使用的总内存可能是work\_mem的好几倍。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,64\~2147483647,单位为KB。 - -**默认值:**64MB - -**设置建议:** - -依据查询特点和并发来确定,一旦work\_mem限定的物理内存不够,算子运算数据将写入临时表空间,带来5-10倍的性能下降,查询响应时间从秒级下降到分钟级。 - -- 对于串行无并发的复杂查询场景,平均每个查询有5-10关联操作,建议work\_mem=50%内存/10。 -- 对于串行无并发的简单查询场景,平均每个查询有2-5个关联操作,建议work\_mem=50%内存/5。 -- 对于并发场景,建议work\_mem=串行下的work\_mem/物理并发数。 - -## query\_mem - -**参数说明:**设置执行作业所使用的内存。如果设置的query\_mem值大于0,在生成执行计划时,优化器会将作业的估算内存调整为该值。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**0,或大于32M的整型,默认单位为KB。如果设置值为负数或小于32M,将设置为默认值0,此时优化器不会根据该值调整作业的估算内存。 - -**默认值:**0 - -## query\_max\_mem - -**参数说明:**设置执行作业所能够使用的最大内存。如果设置的query\_max\_mem值大于0,当作业执行时所使用内存超过该值时,将报错退出。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**0,或大于32M的整型,默认单位为KB。如果设置值为负数或小于32M,将设置为默认值0,此时不会根据该值限制作业的内存使用。 - -**默认值:**0 - -## maintenance\_work\_mem - -**参数说明:**设置在维护性操作(比如VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY等)中可使用的最大的内存。该参数的设置会影响VACUUM、VACUUM FULL、CLUSTER、CREATE INDEX的执行效率。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,1024\~INT\_MAX,单位为KB。 - -**默认值:**128MB - -**设置建议:** - -- 建议设置此参数的值大于[work\_mem](#zh-cn_topic_0237124699_zh-cn_topic_0059777577_sd27c81d651ce4d2585febca76c4cc34e),可以改进清理和恢复数据库转储的速度。因为在一个数据库会话里,任意时刻只有一个维护性操作可以执行,并且在执行维护性操作时不会有太多的会话。 -- 当[自动清理](自动清理.md)进程运行时,[autovacuum\_max\_workers](自动清理.md#zh-cn_topic_0237124730_zh-cn_topic_0059778244_s76932f79410248ba8923017d19982673)倍数的内存将会被分配,所以此时设置maintenance\_work\_mem的值应该不小于[work\_mem](#zh-cn_topic_0237124699_zh-cn_topic_0059777577_sd27c81d651ce4d2585febca76c4cc34e)。 -- 如果进行大数据量的cluster等,可以在session中调大该值。 - -## psort\_work\_mem - -**参数说明:**设置列存表在进行局部排序中在开始写入临时磁盘文件之前使用的内存大小。带partial cluster key的表、带索引的表插入,创建表索引,删除表和更新表都会用到。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - ->![](public_sys-resources/icon-notice.gif) **须知:** ->同样,好几个正在运行的会话可能会同时进行表的局部排序操作。因此使用的总内存可能是psort\_work\_mem的好几倍。 - -**取值范围:**整型64\~2147483647,单位为KB。 - -**默认值:**512MB - -## max\_loaded\_cudesc - -**参数说明:**设置列存表在做扫描时,每列缓存cudesc信息的个数。增大设置会提高查询性能,但也会增加内存占用,特别是当列存表的列非常多时。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - ->![](public_sys-resources/icon-notice.gif) **须知:** ->max\_loaded\_cudesc设置过高时,有可能引起内存分配不足。 - -**取值范围:**100\~1073741823。 - -**默认值:**1024 - -## max\_stack\_depth - -**参数说明:**设置openGauss执行堆栈的最大安全深度。需要这个安全界限是因为在服务器里,并非所有程序都检查了堆栈深度,只是在可能递规的过程,比如表达式计算这样的过程里面才进行检查。 - -该参数属于SUSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -设置原则: - -- 数据库需要预留640KB堆栈深度,因此此参数的最佳设置是等于操作系统内核允许的最大值(就是ulimit -s的设置)- 640KB。 -- 如果设置此参数的值大于实际的内核限制,则一个正在运行的递归函数可能会导致一个独立的服务器进程崩溃。在openGauss能够检测内核限制的操作系统上(SLES上),将自动限制设置为一个不安全的值。 -- 因为并非所有的操作都能够检测,所以建议用户在此设置一个明确的值。 - -**取值范围:**整型,100\~INT\_MAX,单位为KB。 - -**默认值:**2MB - ->![](public_sys-resources/icon-note.gif) **说明:** ->默认值2MB,这个值相对比较小,不容易导致系统崩溃。但是可能会因为该值较小,导致无法执行复杂的函数。 - -## cstore\_buffers - -**参数说明:**设置列存所使用的共享缓冲区的大小。 - -该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,16384~1073741823,单位为KB。 - -**默认值:**32768KB - -**设置建议**: - -列存表使用cstore\_buffers设置的共享缓冲区,几乎不用shared\_buffers。因此在列存表为主的场景中,应减少shared\_buffers,增加cstore\_buffers。 - -## bulk\_read\_ring\_size - -**参数说明:**并行导出,使用的环形缓冲区大小。 - -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 - -**取值范围:**整型,256\~2147483647,单位为KB。 - -**默认值:**16MB diff --git "a/content/zh/docs/Developerguide/\345\207\240\344\275\225\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" "b/content/zh/docs/Developerguide/\345\207\240\344\275\225\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" index c7722c873cf631212943d28978ac1892bba67b3c..e2b1fc0c0cb033cf4ef1bd303b7341048a195f25 100644 --- "a/content/zh/docs/Developerguide/\345\207\240\344\275\225\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" +++ "b/content/zh/docs/Developerguide/\345\207\240\344\275\225\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" @@ -782,7 +782,7 @@ - point\(double precision, double precision\) - 描述:结点 + 描述:节点 返回类型:point diff --git "a/content/zh/docs/Developerguide/\345\207\240\344\275\225\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/\345\207\240\344\275\225\347\261\273\345\236\213.md" index ea8dbe83e3e94d24201b408ba8b62e40ea5b1bcd..3a2b3a2dfc3916f8122b9178890feea02fec946c 100644 --- "a/content/zh/docs/Developerguide/\345\207\240\344\275\225\347\261\273\345\236\213.md" +++ "b/content/zh/docs/Developerguide/\345\207\240\344\275\225\347\261\273\345\236\213.md" @@ -81,7 +81,7 @@ openGauss支持的几何类型请参见[表1](#zh-cn_topic_0237121953_zh-cn_topi
-openGauss提供了一系列的函数和操作符用来进行各种几何计算,如拉伸、转换、旋转、计算相交等。详细信息请参考[几何函数和操作符](几何函数和操作符.md#ZH-CN_TOPIC_0242370438)。 +openGauss提供了一系列的函数和操作符用来进行各种几何计算,如拉伸、转换、旋转、计算相交等。详细信息请参考[几何函数和操作符](几何函数和操作符.md)。 ## 点 diff --git "a/content/zh/docs/Developerguide/\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" "b/content/zh/docs/Developerguide/\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" index b64c62bc1fe8738d414393548bd6490df3637643..bc70ed9a022d0aad6969368a0f180e8e063fe206 100644 --- "a/content/zh/docs/Developerguide/\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" +++ "b/content/zh/docs/Developerguide/\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" @@ -1,11 +1,5 @@ # 函数和操作符 -操作符可以对一个或多个操作数进行处理,位置上可能处于操作数之前、之后,或两个操作数中间。完成处理之后,返回处理结果。 - -函数是对一些业务逻辑的封装,以完成特定的功能。函数可以有参数,也可以没有参数。函数是有返回类型的,执行完成后,会返回执行结果。 - -对于系统函数,用户可以进行修改,但是修改之后系统函数的语义可能会发生改变,从而导致系统控制紊乱。正常情况下不允许用户手工修改系统函数。 - - **[逻辑操作符](逻辑操作符.md)** - **[比较操作符](比较操作符.md)** @@ -56,6 +50,6 @@ - **[触发器函数](触发器函数.md)** -- **[内部接口函数](内部接口函数.md)** +- **[其他系统函数](其他系统函数.md)** diff --git "a/content/zh/docs/Developerguide/\345\210\206\346\224\257\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\345\210\206\346\224\257\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..ec7538e730eaf08e841356d99ec95187c5a882df --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\210\206\346\224\257\350\257\255\345\217\245.md" @@ -0,0 +1,56 @@ +# 分支语句 + +## 语法 + +分支语句的语法请参见[图1](#zh-cn_topic_0237122235_zh-cn_topic_0059779327_fe2376535378e44c78c4e70078d0fb779)。 + +**图 1** case\_when::= +![](figures/case_when.png "case_when") + +when\_clause子句的语法图参见[图2](#zh-cn_topic_0237122235_zh-cn_topic_0059779327_f0b6779d008024e8fb5c2267d8d3bff14)。 + +**图 2** when\_clause::= +![](figures/when_clause.png "when_clause") + +参数说明: + +- case\_expression:变量或表达式。 +- when\_expression:常量或者条件表达式。 +- statement:执行语句。 + +## 示例 + +``` +CREATE OR REPLACE PROCEDURE proc_case_branch(pi_result in integer, pi_return out integer) +AS + BEGIN + CASE pi_result + WHEN 1 THEN + pi_return := 111; + WHEN 2 THEN + pi_return := 222; + WHEN 3 THEN + pi_return := 333; + WHEN 6 THEN + pi_return := 444; + WHEN 7 THEN + pi_return := 555; + WHEN 8 THEN + pi_return := 666; + WHEN 9 THEN + pi_return := 777; + WHEN 10 THEN + pi_return := 888; + ELSE + pi_return := 999; + END CASE; + raise info 'pi_return : %',pi_return ; +END; +/ + +CALL proc_case_branch(3,0); + +--删除存储过程 +DROP PROCEDURE proc_case_branch; +``` + diff --git "a/content/zh/docs/Developerguide/\345\210\206\346\236\220\344\275\234\344\270\232\346\230\257\345\220\246\350\242\253\351\230\273\345\241\236.md" "b/content/zh/docs/Developerguide/\345\210\206\346\236\220\344\275\234\344\270\232\346\230\257\345\220\246\350\242\253\351\230\273\345\241\236.md" new file mode 100644 index 0000000000000000000000000000000000000000..813dd63e08597c96b761f6c7aaf03b3cd07c57e6 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\210\206\346\236\220\344\275\234\344\270\232\346\230\257\345\220\246\350\242\253\351\230\273\345\241\236.md" @@ -0,0 +1,70 @@ +# 分析作业是否被阻塞 + +数据库系统运行时,在某些业务场景下查询语句会被阻塞,导致语句运行时间过长,可以强制结束有问题的会话。 + +## 操作步骤 + +1. 以操作系统用户omm登录数据库节点。 +2. 使用如下命令连接数据库。 + + ``` + gsql -d postgres -p 8000 + ``` + + postgres为需要连接的数据库名称,8000为数据库节点的端口号。 + + 连接成功后,系统显示类似如下信息: + + ``` + gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + +3. 查看阻塞的查询语句及阻塞查询的表、模式信息。 + + ``` + SELECT w.query as waiting_query, + w.pid as w_pid, + w.usename as w_user, + l.query as locking_query, + l.pid as l_pid, + l.usename as l_user, + t.schemaname || '.' || t.relname as tablename + from pg_stat_activity w join pg_locks l1 on w.pid = l1.pid + and not l1.granted join pg_locks l2 on l1.relation = l2.relation + and l2.granted join pg_stat_activity l on l2.pid = l.pid join pg_stat_user_tables t on l1.relation = t.relid + where w.waiting; + ``` + + 该查询返回线程ID、用户信息、查询状态,以及导致阻塞的表、模式信息。 + +4. 使用如下命令结束相应的会话。其中,139834762094352为线程ID。 + + ``` + SELECT PG_TERMINATE_BACKEND(139834762094352); + ``` + + 显示类似如下信息,表示结束会话成功。 + + ``` + PG_TERMINATE_BACKEND + ---------------------- + t + (1 row) + ``` + + 显示类似如下信息,表示用户正在尝试结束当前会话,此时仅会重连会话,而不是结束会话。 + + ``` + FATAL: terminating connection due to administrator command + FATAL: terminating connection due to administrator command + The connection to the server was lost. Attempting reset: Succeeded. + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >gsql客户端使用PG\_TERMINATE\_BACKEND函数终止本会话后台线程时,客户端不会退出而是自动重连。 + + diff --git "a/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206schema.md" "b/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206schema.md" index a21c7f649a9450f7bf85b0210308ccb4a6e685f2..a900169c3cbd64a02c5c0c2595c5905fe8bddc0d 100644 --- "a/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206schema.md" +++ "b/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206schema.md" @@ -16,7 +16,7 @@ schema又称作模式。通过管理schema,允许多个用户使用同一数 ## 操作步骤 -- 创建schema +- 创建管理用户及权限schema - 执行如下命令来创建一个schema。 ``` @@ -93,7 +93,7 @@ schema又称作模式。通过管理schema,允许多个用户使用同一数 默认情况下,用户只能访问属于自己的schema中的数据库对象。如果需要访问其他schema的对象,则该schema的所有者应该赋予他对该schema的usage权限。 - 通过将模式的CREATE权限授予某用户,被授权用户就可以在此模式中创建对象。注意默认情况下,所有角色都拥有在public模式上的USAGE权限,但是普通用户没有在public模式上的CREATE权限。普通用户能够连接到一个指定数据库并在它的public模式中创建对象是不安全的,如果普通用户可以在public模式上的CREATE权限则建议通过如下语句撤销该权限。 + 通过将模式的CREATE权限授予某用户,被授权用户就可以在此模式中创建对象。注意默认情况下,所有角色都拥有在public模式上的USAGE权限,但是普通用户没有在public模式上的CREATE权限。普通用户能够连接到一个指定数据库并在它的public模式中创建对象是不安全的,如果普通用户具有在public模式上的CREATE权限则建议通过如下语句撤销该权限。 - 撤销PUBLIC在public模式下创建对象的权限,下面语句中第一个“public”是模式,第二个“PUBLIC”指的是所有角色。 diff --git "a/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\345\210\206\345\214\272\350\241\250.md" "b/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\345\210\206\345\214\272\350\241\250.md" index 644ce8e760310c00132d8276ad1df5ccb059268f..5ce7fc5a8e93875904940ae3c19595135f6f0b8f 100644 --- "a/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\345\210\206\345\214\272\350\241\250.md" +++ "b/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\345\210\206\345\214\272\350\241\250.md" @@ -54,6 +54,7 @@ openGauss数据库支持的分区表为范围分区表。 ca_location_type character(20) ) TABLESPACE example1 + PARTITION BY RANGE (ca_address_sk) ( PARTITION P1 VALUES LESS THAN(5000), diff --git "a/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223.md" "b/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223.md" index 6d32b736d036c4ce3c9bad6f6c6fa74f6ecf72a7..fb872a4e930b2d5d8fadc4070c094fb42e60ba60 100644 --- "a/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223.md" +++ "b/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223.md" @@ -2,7 +2,7 @@ ## 前提条件 -用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库。 +用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库,赋予创建数据库的权限参见[管理用户及权限](管理用户及权限.md)。 ## 背景信息 diff --git "a/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\347\264\242\345\274\225.md" "b/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\347\264\242\345\274\225.md" index 99e8c86d3d1fe78ca0455c7bbf9224e3f700eeb2..847dda455f64ed3a9c560c60f6720fc0a64fd940 100644 --- "a/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\347\264\242\345\274\225.md" +++ "b/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\347\264\242\345\274\225.md" @@ -8,7 +8,6 @@ - 在经常需要搜索查询的列上创建索引,可以加快搜索的速度。 - 在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构。 -- 在经常使用连接的列上创建索引,这些列主要是一些外键,可以加快连接的速度。 - 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。 - 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。 - 在经常使用WHERE子句的列上创建索引,加快条件的判断速度。 @@ -144,12 +143,12 @@ openGauss支持4种创建索引的方式请参见[表1](#zh-cn_topic_0237120308_

唯一索引

-

可用于约束索引属性值的唯一性,或者属性组合值的唯一性。如果一个表声明了唯一约束或者主键,则openGauss自动在组成主键或唯一约束的字段上创建唯一索引(可能是多字段索引),以实现这些约束。目前,openGauss只有B-Tree可以创建唯一索引。

+

可用于约束索引属性值的唯一性,或者属性组合值的唯一性。如果一个表声明了唯一约束或者主键,则openGauss自动在组成主键或唯一约束的字段上创建唯一索引(可能是多字段索引),以实现这些约束。目前,openGauss只有B-Tree可以创建唯一索引。

多字段索引

-

一个索引可以定义在表中的多个属性上。目前,openGauss中的B-Tree支持多字段索引,且最多可在32个字段上创建索引。

+

一个索引可以定义在表中的多个属性上。目前,openGauss中的B-Tree支持多字段索引,且最多可在32个字段上创建索引。

部分索引

diff --git "a/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\350\241\250\347\251\272\351\227\264.md" "b/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\350\241\250\347\251\272\351\227\264.md" index 0ac6ce74aabbc2faf9e441cee551a254c95be16c..b914b4b39f32942d25ad392329b12f59a74644c8 100644 --- "a/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\350\241\250\347\251\272\351\227\264.md" +++ "b/content/zh/docs/Developerguide/\345\210\233\345\273\272\345\222\214\347\256\241\347\220\206\350\241\250\347\251\272\351\227\264.md" @@ -18,7 +18,7 @@ - 表空间对应于一个文件系统目录,假定数据库节点数据目录/pg\_location/mount1/path1是用户拥有读写权限的空目录。 - MAXSIZE使用该表空间配额管理性能会有30%左右的影响,MAXSIZE指定每个数据库节点的配额大小,误差范围在500M 个数以内。请根据实际的情况确认是否需要设置表空间的最大值。 + 使用表空间配额管理会使性能有30%左右的影响,MAXSIZE指定每个数据库节点的配额大小,误差范围在500MB以内。请根据实际的情况确认是否需要设置表空间的最大值。 ## 操作步骤 @@ -79,7 +79,6 @@ 当结果显示为如下信息,则表示创建成功。 ``` - CREATE TABLE ``` diff --git "a/content/zh/docs/Developerguide/\345\212\240\350\275\275\351\251\261\345\212\250.md" "b/content/zh/docs/Developerguide/\345\212\240\350\275\275\351\251\261\345\212\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..8baea89be2e849e4041330097b809499647c9c9b --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\212\240\350\275\275\351\251\261\345\212\250.md" @@ -0,0 +1,13 @@ +# 加载驱动 + +在创建数据库连接之前,需要先加载数据库驱动程序。 + +加载驱动有两种方法: + +- 在代码中创建连接之前任意位置隐含装载:Class.forName\("org.postgresql.Driver"\); +- 在JVM启动时参数传递:java -Djdbc.drivers=org.postgresql.Driver jdbctest + + >![](public_sys-resources/icon-note.gif) **说明:** + >上述jdbctest为测试用例程序的名称。 + + diff --git "a/content/zh/docs/Developerguide/\345\212\250\346\200\201\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\345\212\250\346\200\201\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..9fe8f3f9becc32b5a4b6792726ecd2f545318d24 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\212\250\346\200\201\350\257\255\345\217\245.md" @@ -0,0 +1,11 @@ +# 动态语句 + +- **[执行动态查询语句](执行动态查询语句.md)** + +- **[执行动态非查询语句](执行动态非查询语句.md)** + +- **[动态调用存储过程](动态调用存储过程.md)** + +- **[动态调用匿名块](动态调用匿名块.md)** + + diff --git "a/content/zh/docs/Developerguide/\345\212\250\346\200\201\350\260\203\347\224\250\345\214\277\345\220\215\345\235\227.md" "b/content/zh/docs/Developerguide/\345\212\250\346\200\201\350\260\203\347\224\250\345\214\277\345\220\215\345\235\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..069ad5746ead3656f5e3fb8cffcec35d6ce922b6 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\212\250\346\200\201\350\260\203\347\224\250\345\214\277\345\220\215\345\235\227.md" @@ -0,0 +1,23 @@ +# 动态调用匿名块 + +动态调用匿名块是指在动态语句中执行匿名块,使用EXECUTE IMMEDIATE…USING语句后面带IN、OUT来输入、输出参数。 + +## 语法 + +语法请参见[图1](#zh-cn_topic_0237122228_zh-cn_topic_0059778140_fcac14cc166724cca818d8c659b30fbb9)。 + +**图 1** call\_anonymous\_block::= +![](figures/call_anonymous_block.png "call_anonymous_block") + +using\_clause子句的语法参见[图2](#zh-cn_topic_0237122228_zh-cn_topic_0059778140_f06fb8cdac8dc4c42bacd550e446ca6bd)。 + +**图 2** using\_clause::= +![](figures/using_clause-2.png "using_clause-2") + +对以上语法格式的解释如下: + +- 匿名块程序实施部分,以BEGIN语句开始,以END语句停顿,以一个分号结束。 +- USING \[IN|OUT|IN OUT\] bind\_argument,用于指定存放传递给存储过程参数值的变量。bind\_argument前的修饰符与对应参数的修饰符一致。 +- 匿名块中间的输入输出参数使用占位符来指明,要求占位符个数与参数个数相同,并且占位符所对应参数的顺序和USING中参数的顺序一致。 +- 目前openGauss在动态语句调用匿名块时,EXCEPTION语句中暂不支持使用占位符进行输入输出参数的传递。 + diff --git "a/content/zh/docs/Developerguide/\345\212\250\346\200\201\350\260\203\347\224\250\345\255\230\345\202\250\350\277\207\347\250\213.md" "b/content/zh/docs/Developerguide/\345\212\250\346\200\201\350\260\203\347\224\250\345\255\230\345\202\250\350\277\207\347\250\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..2002adc3c95e6eec3ab272d32d81503e8f4296f9 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\212\250\346\200\201\350\260\203\347\224\250\345\255\230\345\202\250\350\277\207\347\250\213.md" @@ -0,0 +1,22 @@ +# 动态调用存储过程 + +动态调用存储过程必须使用匿名的语句块将存储过程或语句块包在里面,使用EXECUTE IMMEDIATE…USING语句后面带IN、OUT来输入、输出参数。 + +## 语法 + +语法请参见[图1](#zh-cn_topic_0237122227_zh-cn_topic_0059778625_f7bf3ce30f4aa42d38394f459c525f33b)。 + +**图 1** call\_procedure::= +![](figures/call_procedure.png "call_procedure") + +using\_clause子句的语法参见[图2](#zh-cn_topic_0237122227_zh-cn_topic_0059778625_fd82a97bfa5774a32bd19b36b80dd5248)。 + +**图 2** using\_clause::= +![](figures/using_clause-1.png "using_clause-1") + +对以上语法格式的解释如下: + +- CALL procedure\_name: 调用存储过程。 +- \[:placeholder1,:placeholder2,…\]: 存储过程参数占位符列表。占位符个数与参数个数相同。 +- USING \[IN|OUT|IN OUT\] bind\_argument: 用于指定存放传递给存储过程参数值的变量。bind\_argument前的修饰符与对应参数的修饰符一致。 + diff --git "a/content/zh/docs/Developerguide/\345\214\272\345\237\237\345\222\214\346\240\274\345\274\217\345\214\226.md" "b/content/zh/docs/Developerguide/\345\214\272\345\237\237\345\222\214\346\240\274\345\274\217\345\214\226.md" index 26aadfbf5fd22e6bd93d3c32504c8f21f689a1f8..954bb931d7a23d5e3ac5c32cd86808fca2674b0a 100644 --- "a/content/zh/docs/Developerguide/\345\214\272\345\237\237\345\222\214\346\240\274\345\274\217\345\214\226.md" +++ "b/content/zh/docs/Developerguide/\345\214\272\345\237\237\345\222\214\346\240\274\345\274\217\345\214\226.md" @@ -31,7 +31,7 @@ - postgres表示产生与PostgreSQL 8.4版本相匹配的输出,当[DateStyle](#zh-cn_topic_0237124733_zh-cn_topic_0059778109_s6464b29eb2274134845cea28f39d915e)参数被设为ISO时。 - postgres\_verbose表示产生与PostgreSQL 8.4版本相匹配的输出,当[DateStyle](#zh-cn_topic_0237124733_zh-cn_topic_0059778109_s6464b29eb2274134845cea28f39d915e)参数被设为non\_ISO时。 - iso\_8601表示产生与在ISO 8601中定义的“格式与代号”相匹配的输出。 -- a表示产生于A DB中与numtodsinterval函数相匹配的输出结果,详细请参考[numtodsinterval](时间和日期处理函数和操作符.md#zh-cn_topic_0237121972_zh-cn_topic_0059779084_lf9dae2de082b41c094177f70cf798433)。 +- a表示与numtodsinterval函数相匹配的输出结果,详细请参考[numtodsinterval](时间和日期处理函数和操作符.md#zh-cn_topic_0237121972_zh-cn_topic_0059779084_lf9dae2de082b41c094177f70cf798433)。 >![](public_sys-resources/icon-notice.gif) **须知:** >IntervalStyle参数也会影响不明确的间隔输入的说明。 @@ -62,7 +62,7 @@ **默认值:**Default >![](public_sys-resources/icon-note.gif) **说明:** ->Default表示通用时区的缩写。但也有其他诸如 'Australia' 和 'India' 等用来定义特定的安装。 +>Default表示通用时区的缩写, 适合绝大部分情况。但也可设置其他诸如 'Australia' 和 'India' 等用来定义特定的安装。而设置除此之外的时区缩写, 需要在建数据库之前通过相应的配置文件进行设置。 ## extra\_float\_digits diff --git "a/content/zh/docs/Developerguide/\345\214\277\345\220\215\345\235\227.md" "b/content/zh/docs/Developerguide/\345\214\277\345\220\215\345\235\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..b634b754d7d8ed0274dc5f5c84a2f946d5753753 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\214\277\345\220\215\345\235\227.md" @@ -0,0 +1,21 @@ +# 匿名块 + +匿名块(Anonymous Block)一般用于不频繁执行的脚本或不重复进行的活动。它们在一个会话中执行,并不被存储。 + +## 语法 + +匿名块的语法参见[图1](#zh-cn_topic_0237122218_zh-cn_topic_0059779171_f19ed9f384e0646f29744951d7eec8c3b)。 + +**图 1** anonymous\_block::= +![](figures/anonymous_block.png "anonymous_block") + +对以上语法图的解释如下: + +- 匿名块程序实施部分,以BEGIN语句开始,以END语句停顿,以一个分号结束。输入“/”按回车执行它。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >最后的结束符“/”必须独占一行,不能直接跟在END后面。 + +- 声明部分包括变量定义、类型、游标定义等。 +- 最简单的匿名块不执行任何命令。但一定要在任意实施块里至少有一个语句,甚至是一个NULL语句。 + diff --git "a/content/zh/docs/Developerguide/\345\216\206\345\217\262\347\211\210\346\234\254\345\205\274\345\256\271\346\200\247.md" "b/content/zh/docs/Developerguide/\345\216\206\345\217\262\347\211\210\346\234\254\345\205\274\345\256\271\346\200\247.md" index d82e9e1207526f2d0b0a0b50cb1b9ab7f5e8a9c0..4c8d07c83b5824fae94fe8e9b6c0eef5b27414b0 100644 --- "a/content/zh/docs/Developerguide/\345\216\206\345\217\262\347\211\210\346\234\254\345\205\274\345\256\271\346\200\247.md" +++ "b/content/zh/docs/Developerguide/\345\216\206\345\217\262\347\211\210\346\234\254\345\205\274\345\256\271\346\200\247.md" @@ -72,7 +72,7 @@ on表示当读取或修改大对象时禁用权限检查,与PostgreSQL 9.0以 ## sql\_inheritance -**参数说明:**控制继承语义。用来控制继承表的访问策略,off表示各种命令不能访问子表,即默认使用ONLY关键字。这是为了兼容7.1之前版本而设置的。 +**参数说明:**控制继承语义。用来控制继承表的访问策略,off表示各种命令不能访问子表,即默认使用ONLY关键字。这是为了兼容旧版本而设置的。 该参数属于USERSET类型参数,请参考[表2](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t290c8f15953843db8d8e53d867cd893d)中对应设置方法进行设置。 diff --git "a/content/zh/docs/Developerguide/\345\217\221\351\200\201\347\253\257\346\234\215\345\212\241\345\231\250.md" "b/content/zh/docs/Developerguide/\345\217\221\351\200\201\347\253\257\346\234\215\345\212\241\345\231\250.md" index 1d77fff52311f6e8abbe9711e9145e9122cfee0e..d2b806b6977d004de8b26b481415f1132a911d6f 100644 --- "a/content/zh/docs/Developerguide/\345\217\221\351\200\201\347\253\257\346\234\215\345\212\241\345\231\250.md" +++ "b/content/zh/docs/Developerguide/\345\217\221\351\200\201\347\253\257\346\234\215\345\212\241\345\231\250.md" @@ -11,7 +11,7 @@ **取值范围**:整型,0~262143 -**默认值:**100 +**默认值:**单机默认为4, 主备环境默认为8 ## wal\_keep\_segments @@ -36,7 +36,7 @@ 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 >![](public_sys-resources/icon-notice.gif) **须知:** ->- 如果主机数据较大,重建操作需要增大此参数的值,主机数据在 500G时,此参数的参考值为 600s。 +>- 如果主机数据较大,重建备机数据库时需要增大此参数的值,主机数据在 500G时,此参数的参考值为 600s。 >- 此值不能大于wal\_receiver\_timeout或数据库重建时的超时参数。 **取值范围:**整型, 0 \~ INT\_MAX,单位为毫秒(ms)。 diff --git "a/content/zh/docs/Developerguide/\345\221\275\344\273\244\345\217\202\350\200\203-14.md" "b/content/zh/docs/Developerguide/\345\221\275\344\273\244\345\217\202\350\200\203-14.md" new file mode 100644 index 0000000000000000000000000000000000000000..ed5a9ce2f78392990f31f3f97a367b37beb04b82 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\221\275\344\273\244\345\217\202\350\200\203-14.md" @@ -0,0 +1,44 @@ +# 命令参考 + +**表 1** 常见参数 + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

参数说明

+

取值范围

+

--train

+

供训练用历史日志的路径。

+

-

+

--model

+

训练生成的模型及中间文件存储路径,以及预测时指定的模型路径

+

-

+

--predict

+

待预测负载文件路径

+

-

+

--ratio

+

推荐重新训练阈值比率,可选

+

-

+
+ diff --git "a/content/zh/docs/Developerguide/\345\221\275\344\273\244\345\217\202\350\200\203.md" "b/content/zh/docs/Developerguide/\345\221\275\344\273\244\345\217\202\350\200\203.md" new file mode 100644 index 0000000000000000000000000000000000000000..efa15f6ac56cefba740ba7115f31447125973849 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\221\275\344\273\244\345\217\202\350\200\203.md" @@ -0,0 +1,100 @@ +# 命令参考 + +**表 1** 常见参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

参数说明

+

取值范围

+

--mode, -m

+

指定调优程序运行的模式

+

train, tune

+

--config-file, -f

+

调优程序的配置文件,可选

+

-

+

--db-name

+

指定调优的数据库

+

-

+

--db-user

+

指定调优的数据库用户名

+

-

+

--port

+

数据库的监听端口

+

-

+

--host

+

数据库实例的宿主机IP

+

-

+

--host-user

+

数据库安装时的DBA用户名

+

-

+

--host-ssh-port

+

数据库实例所在宿主机的SSH端口号,可选

+

-

+

--scenario

+

指定调优的模式,对应三种不同的调优列表,用户可以对该调优列表进行修改

+

ap, htap, tp

+

--benchmark

+

由用户指定的benchmark脚本文件名

+

-

+

--model-path

+

调优强化学习模型存储或加载的文件路径

+

-

+

--version, -v

+

返回当前工具版本号

+

-

+
+ diff --git "a/content/zh/docs/Developerguide/\345\237\272\344\272\216JDBC\345\274\200\345\217\221.md" "b/content/zh/docs/Developerguide/\345\237\272\344\272\216JDBC\345\274\200\345\217\221.md" new file mode 100644 index 0000000000000000000000000000000000000000..e6fd200f8b7a7f0757eaf033b7efe2ec9ae60781 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\237\272\344\272\216JDBC\345\274\200\345\217\221.md" @@ -0,0 +1,31 @@ +# 基于JDBC开发 + +JDBC(Java Database Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问接口,应用程序可基于它操作数据。 openGauss库提供了对JDBC 4.0特性的支持,需要使用JDK1.8版本编译程序代码,不支持JDBC桥接ODBC方式。 + +- **[JDBC包、驱动类和环境类](JDBC包-驱动类和环境类.md)** + +- **[开发流程](开发流程.md)** + +- **[加载驱动](加载驱动.md)** + +- **[连接数据库](连接数据库-0.md)** + +- **[连接数据库(以SSL方式)](连接数据库(以SSL方式).md)** + +- **[执行SQL语句](执行SQL语句.md)** + +- **[处理结果集](处理结果集.md)** + +- **[关闭连接](关闭连接.md)** + +- **[示例:常用操作](示例-常用操作.md)** + +- **[示例:重新执行应用SQL](示例-重新执行应用SQL.md)** + +- **[示例:通过本地文件导入导出数据](示例-通过本地文件导入导出数据.md)** + +- **[示例:从MY向openGauss进行数据迁移](示例-从MY向openGauss进行数据迁移.md)** + +- **[JDBC接口参考](JDBC接口参考.md)** + + diff --git "a/content/zh/docs/Developerguide/\345\237\272\344\272\216ODBC\345\274\200\345\217\221.md" "b/content/zh/docs/Developerguide/\345\237\272\344\272\216ODBC\345\274\200\345\217\221.md" new file mode 100644 index 0000000000000000000000000000000000000000..966ef5e6f1226045bc0672f46f740bb2b28630eb --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\237\272\344\272\216ODBC\345\274\200\345\217\221.md" @@ -0,0 +1,61 @@ +# 基于ODBC开发 + +ODBC(Open Database Connectivity,开放数据库互连)是由Microsoft公司基于X/OPEN CLI提出的用于访问数据库的应用程序编程接口。应用程序通过ODBC提供的API与数据库进行交互,增强了应用程序的可移植性、扩展性和可维护性。 + +ODBC的系统结构参见[图1](#fig1255101034110)。 + +**图 1** ODBC系统机构 +![](figures/ODBC系统机构.png "ODBC系统机构") + +openGauss目前在以下环境中提供对ODBC3.5的支持。 + +**表 1** ODBC支持平台 + + + + + + + + + + + + + + + + + + + +

操作系统

+

平台

+

CentOS 6.4/6.5/6.6/6.7/6.8/6.9/7.0/7.1/7.2/7.3/7.4

+

x86_64位

+

CentOS 7.6

+

ARM64位

+

EulerOS 2.0 SP2/SP3

+

x86_64位

+

EulerOS 2.0 SP8

+

ARM64位

+
+ +UNIX/Linux系统下的驱动程序管理器主要有unixODBC和iODBC,在这选择驱动管理器unixODBC-2.3.0作为连接数据库的组件。 + +Windows系统自带ODBC驱动程序管理器,在控制面板-\>管理工具中可以找到数据源(ODBC)选项。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>当前数据库ODBC驱动基于开源版本,对于tinyint、smalldatetime、nvarchar2类型,在获取数据类型的时候,可能会出现不兼容。 + +- **[ODBC包及依赖的库和头文件](ODBC包及依赖的库和头文件.md)** + +- **[Linux下配置数据源](Linux下配置数据源.md)** + +- **[开发流程](开发流程-1.md)** + +- **[示例](示例.md)** + +- **[ODBC接口参考](ODBC接口参考.md)** + + diff --git "a/content/zh/docs/Developerguide/\345\237\272\344\272\216libpq\345\274\200\345\217\221.md" "b/content/zh/docs/Developerguide/\345\237\272\344\272\216libpq\345\274\200\345\217\221.md" new file mode 100644 index 0000000000000000000000000000000000000000..551a8d0795c199f76314f71070134a409e2a34a5 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\237\272\344\272\216libpq\345\274\200\345\217\221.md" @@ -0,0 +1,6 @@ +# 基于libpq开发 + +openGauss未对此接口在应用程序开发场景下的使用做验证。因此对使用此接口做应用程序开发存在的风险未知,故不推荐用户使用此套接口做应用程序开发。推荐用户使用ODBC或JDBC接口来替代。 + +。 + diff --git "a/content/zh/docs/Developerguide/\345\237\272\344\272\216\345\274\200\351\224\200\347\232\204\346\270\205\347\220\206\345\273\266\350\277\237.md" "b/content/zh/docs/Developerguide/\345\237\272\344\272\216\345\274\200\351\224\200\347\232\204\346\270\205\347\220\206\345\273\266\350\277\237.md" index 881bb34fd4dbe2da0da1bf1fe3546f03b2239bfe..2abc553eea83bf943b42c23f2aa7cee3bb1d6776 100644 --- "a/content/zh/docs/Developerguide/\345\237\272\344\272\216\345\274\200\351\224\200\347\232\204\346\270\205\347\220\206\345\273\266\350\277\237.md" +++ "b/content/zh/docs/Developerguide/\345\237\272\344\272\216\345\274\200\351\224\200\347\232\204\346\270\205\347\220\206\345\273\266\350\277\237.md" @@ -9,7 +9,7 @@ ## 背景信息 -在[ANALYZE | ANALYSE](ANALYZE-ANALYSE.md)和[VACUUM](VACUUM.md#ZH-CN_TOPIC_0242370659)语句执行过程中,系统维护一个内部的记数器,跟踪所执行的各种I/O操作的近似开销。如果积累的开销达到了vacuum\_cost\_limit声明的限制,则执行这个操作的进程将睡眠vacuum\_cost\_delay指定的时间。然后它会重置记数器然后继续执行。 +在[ANALYZE | ANALYSE](ANALYZE-ANALYSE.md)和[VACUUM](VACUUM.md)语句执行过程中,系统维护一个内部的记数器,跟踪所执行的各种I/O操作的近似开销。如果积累的开销达到了vacuum\_cost\_limit声明的限制,则执行这个操作的进程将睡眠vacuum\_cost\_delay指定的时间。然后它会重置记数器然后继续执行。 这个特性是缺省关闭的。要想打开它,把vacuum\_cost\_delay变量设置为一个非零值。 diff --git "a/content/zh/docs/Developerguide/\345\237\272\346\234\254\346\226\207\346\234\254\345\214\271\351\205\215.md" "b/content/zh/docs/Developerguide/\345\237\272\346\234\254\346\226\207\346\234\254\345\214\271\351\205\215.md" index 901b3cbf2f2efc572e6fa74216c5794133ce487d..c6a7b43b5abc2e4f52fd11e193003b37d1204f51 100644 --- "a/content/zh/docs/Developerguide/\345\237\272\346\234\254\346\226\207\346\234\254\345\214\271\351\205\215.md" +++ "b/content/zh/docs/Developerguide/\345\237\272\346\234\254\346\226\207\346\234\254\345\214\271\351\205\215.md" @@ -18,7 +18,7 @@ postgres=# SELECT 'fat & cow'::tsquery @@ 'a fat cat sat on a mat and ate a fat (1 row) ``` -正如上面例子表明,tsquery不仅是文本,且比tsvector包含的要多。tsquery包含已经标注化为词条的搜索词,同时可能是使用AND、OR、或NOT操作符连接的多个术语。详细请参见[文本搜索类型](文本搜索类型.md#ZH-CN_TOPIC_0242370420)。函数to\_tsquery和plainto\_tsquery对于将用户书写文本转换成适合的tsquery是非常有用的,比如将文本中的词标准化。类似地,to\_tsvector用于解析和标准化文档字符串。因此,实际中文本搜索匹配看起来更像这样: +正如上面例子表明,tsquery不仅是文本,且比tsvector包含的要多。tsquery包含已经标注化为词条的搜索词,同时可能是使用AND、OR、或NOT操作符连接的多个术语。详细请参见[文本搜索类型](文本搜索类型.md)。函数to\_tsquery和plainto\_tsquery对于将用户书写文本转换成适合的tsquery是非常有用的,比如将文本中的词标准化。类似地,to\_tsvector用于解析和标准化文档字符串。因此,实际中文本搜索匹配看起来更像这样: ``` postgres=# SELECT to_tsvector('fat cats ate fat rats') @@ to_tsquery('fat & rat') AS RESULT; diff --git "a/content/zh/docs/Developerguide/\345\237\272\346\234\254\347\273\223\346\236\204.md" "b/content/zh/docs/Developerguide/\345\237\272\346\234\254\347\273\223\346\236\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..4197e85c6019e30ebbaafa371e7605046ff5a941 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\237\272\346\234\254\347\273\223\346\236\204.md" @@ -0,0 +1,47 @@ +# 基本结构 + +## 结构 + +PL/SQL块中可以包含子块,子块可以位于PL/SQL中任何部分。PL/SQL块的结构如下: + +- 声明部分:声明PL/SQL用到的变量、类型、游标、局部的存储过程和函数。 + + ``` + DECLARE + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >不涉及变量声明时声明部分可以没有。 + >- 对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。 + >- 对存储过程来说,没有DECLARE, AS相当于DECLARE。即便没有变量声明的部分,关键字AS也必须保留。 + +- 执行部分:过程及SQL语句,程序的主要部分。必选。 + + ``` + BEGIN + ``` + +- 执行异常部分:错误处理。可选。 + + ``` + EXCEPTION + ``` + +- 结束 + + ``` + END; + / + ``` + + >![](public_sys-resources/icon-notice.gif) **须知:** + >禁止在PL/SQL块中使用连续的Tab,连续的Tab可能会造成在使用gsql工具带“-r”参数执行PL/SQL块时出现异常。 + + +## 分类 + +PL/SQL块可以分为以下几类: + +- 匿名块:动态构造,只能执行一次。语法请参考[图1](匿名块.md#zh-cn_topic_0237122218_zh-cn_topic_0059779171_f19ed9f384e0646f29744951d7eec8c3b)。 +- 子程序:存储在数据库中的存储过程、函数、操作符和高级包等。当在数据库上建立好后,可以在其他程序中调用它们。 + diff --git "a/content/zh/docs/Developerguide/\345\237\272\346\234\254\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\345\237\272\346\234\254\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..78450707bcdfa1c55b287926e211dc4c2dadc75e --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\237\272\346\234\254\350\257\255\345\217\245.md" @@ -0,0 +1,14 @@ +# 基本语句 + +在编写PL/SQL过程中,会定义一些变量,给变量赋值,调用其他存储过程等。介绍PL/SQL中的基本语句,包括定义变量、赋值语句、调用语句以及返回语句。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>尽量不要在存储过程中调用包含密码的SQL语句,因为存储在数据库中的存储过程文本可能被其他有权限的用户看到导致密码信息被泄漏。如果存储过程中包含其他敏感信息也需要配置存储过程的访问权限,保证敏感信息不会泄漏。 + +- **[定义变量](定义变量.md)** + +- **[赋值语句](赋值语句.md)** + +- **[调用语句](调用语句.md)** + + diff --git "a/content/zh/docs/Developerguide/\345\243\260\346\230\216\350\257\255\346\263\225.md" "b/content/zh/docs/Developerguide/\345\243\260\346\230\216\350\257\255\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..8595f36d38707b62dae839533733d1f91673347d --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\243\260\346\230\216\350\257\255\346\263\225.md" @@ -0,0 +1,9 @@ +# 声明语法 + +- **[基本结构](基本结构.md)** + +- **[匿名块](匿名块.md)** + +- **[子程序](子程序.md)** + + diff --git "a/content/zh/docs/Developerguide/\345\244\204\347\220\206\347\273\223\346\236\234\351\233\206.md" "b/content/zh/docs/Developerguide/\345\244\204\347\220\206\347\273\223\346\236\234\351\233\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..cc5adeb6145814f9f5106bf860fa12119549a4de --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\244\204\347\220\206\347\273\223\346\236\234\351\233\206.md" @@ -0,0 +1,186 @@ +# 处理结果集 + +## 设置结果集类型 + +不同类型的结果集有各自的应用场景,应用程序需要根据实际情况选择相应的结果集类型。在执行SQL语句过程中,都需要先创建相应的语句对象,而部分创建语句对象的方法提供了设置结果集类型的功能。具体的参数设置如[表1](#zh-cn_topic_0237120384_zh-cn_topic_0213179150_zh-cn_topic_0189250321_zh-cn_topic_0059778370_t600ecae93052471d819154e0f14d8fc3)所示。涉及的Connection的方法如下: + +``` +//创建一个Statement对象,该对象将生成具有给定类型和并发性的ResultSet对象。 +createStatement(int resultSetType, int resultSetConcurrency); + +//创建一个PreparedStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象。 +prepareStatement(String sql, int resultSetType, int resultSetConcurrency); + +//创建一个CallableStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象。 +prepareCall(String sql, int resultSetType, int resultSetConcurrency); +``` + +**表 1** 结果集类型 + + + + + + + + + + + + + +

参数

+

描述

+

resultSetType

+

表示结果集的类型,具体有三种类型:

+
  • ResultSet.TYPE_FORWARD_ONLY:ResultSet只能向前移动。是缺省值。
  • ResultSet.TYPE_SCROLL_SENSITIVE:在修改后重新滚动到修改所在行,可以看到修改后的结果。
  • ResultSet.TYPE_SCROLL_INSENSITIVE:对可修改例程所做的编辑不进行显示。
+
说明:

结果集从数据库中读取了数据之后,即使类型是ResultSet.TYPE_SCROLL_SENSITIVE,也不会看到由其他事务在这之后引起的改变。调用ResultSet的refreshRow()方法,可进入数据库并从其中取得当前游标所指记录的最新数据。

+
+

resultSetConcurrency

+

表示结果集的并发,具体有两种类型:

+
  • ResultSet.CONCUR_READ_ONLY:如果不从结果集中的数据建立一个新的更新语句,不能对结果集中的数据进行更新。
  • ResultSet.CONCUR_UPDATEABLE:可改变的结果集。对于可滚动的结果集,可对结果集进行适当的改变。
+
+ +## 在结果集中定位 + +ResultSet对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。next方法将光标移动到下一行;因为该方法在ResultSet对象没有下一行时返回false,所以可以在while循环中使用它来迭代结果集。但对于可滚动的结果集,JDBC驱动程序提供更多的定位方法,使ResultSet指向特定的行。定位方法如[表2](#zh-cn_topic_0237120384_zh-cn_topic_0213179150_zh-cn_topic_0189250321_zh-cn_topic_0059778370_t0e427b4d1b1f4d67899fac4ad3df1049)所示。 + +**表 2** 在结果集中定位的方法 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

方法

+

描述

+

next()

+

把ResultSet向下移动一行。

+

previous()

+

把ResultSet向上移动一行。

+

beforeFirst()

+

把ResultSet定位到第一行之前。

+

afterLast()

+

把ResultSet定位到最后一行之后。

+

first()

+

把ResultSet定位到第一行。

+

last()

+

把ResultSet定位到最后一行。

+

absolute(int)

+

把ResultSet移动到参数指定的行数。

+

relative(int)

+

通过设置为1向前(设置为1,相当于next())或者向后(设置为-1,相当于previous())移动参数指定的行。

+
+ +## 获取结果集中光标的位置 + +对于可滚动的结果集,可能会调用定位方法来改变光标的位置。JDBC驱动程序提供了获取结果集中光标所处位置的方法。获取光标位置的方法如[表3](#zh-cn_topic_0237120384_zh-cn_topic_0213179150_zh-cn_topic_0189250321_zh-cn_topic_0059778370_tfc10dffc5995480281e8065b4b03d370)所示。 + +**表 3** 获取结果集光标的位置 + + + + + + + + + + + + + + + + + + + + + + +

方法

+

描述

+

isFirst()

+

是否在一行。

+

isLast()

+

是否在最后一行。

+

isBeforeFirst()

+

是否在第一行之前。

+

isAfterLast()

+

是否在最后一行之后。

+

getRow()

+

获取当前在第几行。

+
+ +## 获取结果集中的数据 + +ResultSet对象提供了丰富的方法,以获取结果集中的数据。获取数据常用的方法如[表4](#zh-cn_topic_0237120384_zh-cn_topic_0213179150_zh-cn_topic_0189250321_zh-cn_topic_0059778370_t92d6c213fa8b403796ae7da7e7cd6c46)所示,其他方法请参考JDK官方文档。 + +**表 4** ResultSet对象的常用方法 + + + + + + + + + + + + + + + + + + + + + + + + + +

方法

+

描述

+

int getInt(int columnIndex)

+

按列标获取int型数据。

+

int getInt(String columnLabel)

+

按列名获取int型数据。

+

String getString(int columnIndex)

+

按列标获取String型数据。

+

String getString(String columnLabel)

+

按列名获取String型数据。

+

Date getDate(int columnIndex)

+

按列标获取Date型数据

+

Date getDate(String columnLabel)

+

按列名获取Date型数据。

+
+ diff --git "a/content/zh/docs/Developerguide/\345\244\207\344\273\275\346\201\242\345\244\215\346\216\247\345\210\266\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\345\244\207\344\273\275\346\201\242\345\244\215\346\216\247\345\210\266\345\207\275\346\225\260.md" index 726ad692f895fc7b4ef9ebae268628e7155cad19..71374583893b1567a2d0e6b46536c5e37935cfcd 100644 --- "a/content/zh/docs/Developerguide/\345\244\207\344\273\275\346\201\242\345\244\215\346\216\247\345\210\266\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\345\244\207\344\273\275\346\201\242\345\244\215\346\216\247\345\210\266\345\207\275\346\225\260.md" @@ -138,25 +138,13 @@ - pg\_enable\_delay\_xlog\_recycle\(\) - 描述:开启延迟xlog回收功能,cn修复使用。 + 描述:开启延迟xlog回收功能,数据库主节点修复使用。 返回值类型:void - pg\_disable\_delay\_xlog\_recycle\(\) - 描述:关闭延迟xlog回收功能,cn修复使用。 - - 返回值类型:void - -- gs\_roach\_enable\_delay\_xlog\_recycle\(is\_full\_backup boolean, backup\_key text\) - - 描述:开启延迟xlog回收功能,roach备份使用。 - - 返回值类型:void - -- gs\_roach\_disable\_delay\_xlog\_recycle\(is\_full\_backup boolean, backup\_key text\) - - 描述:关闭延迟xlog回收功能,roach备份使用。 + 描述:关闭延迟xlog回收功能,数据库主节点修复使用。 返回值类型:void diff --git "a/content/zh/docs/Developerguide/\345\244\207\346\234\215\345\212\241\345\231\250.md" "b/content/zh/docs/Developerguide/\345\244\207\346\234\215\345\212\241\345\231\250.md" index 8080b72aea0a3d55e40a2b8bcff116683515028b..68533dc3a3f3b0c5fde45bdbcfe9a949b0cb1a6c 100644 --- "a/content/zh/docs/Developerguide/\345\244\207\346\234\215\345\212\241\345\231\250.md" +++ "b/content/zh/docs/Developerguide/\345\244\207\346\234\215\345\212\241\345\231\250.md" @@ -49,9 +49,9 @@ 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 -**取值范围:**整型,0 \~ INT\_MAX / 1000,单位为毫秒。 +**取值范围:**整型,范围:0 \~ INT\_MAX ,单位为毫秒。 -**默认值:**5s +**默认值:**5s**(即**5000ms) ## hot\_standby\_feedback @@ -61,11 +61,15 @@ **取值范围:**布尔型 -- on表示允许将备机上执行查询的结果反馈给主机。 -- off表示不允许将备机上执行查询的结果反馈给主机。 +- on表示允许将备机上执行查询的最小事务号反馈给主机。 +- off表示不允许将备机上执行查询的最小事务号反馈给主机。 **默认值:**off +>![](public_sys-resources/icon-notice.gif) **须知:** +>当该参数为on时,主机的旧版本数据的清理会受限于备机正在读的事务,即主机只允许清理小于备机反馈回来的事务所作的更改。 +>所以,若该参数开启时,会影响主机的性能。 + ## wal\_receiver\_timeout **参数说明:**设置从主机接收数据的最大等待时间。 diff --git "a/content/zh/docs/Developerguide/\345\244\207\346\234\272\345\244\204\344\272\216need-repair(WAL)\347\212\266\346\200\201\351\227\256\351\242\230.md" "b/content/zh/docs/Developerguide/\345\244\207\346\234\272\345\244\204\344\272\216need-repair(WAL)\347\212\266\346\200\201\351\227\256\351\242\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..3c43b82c081900b01cf2dbddee8b9cd60a843c62 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\244\207\346\234\272\345\244\204\344\272\216need-repair(WAL)\347\212\266\346\200\201\351\227\256\351\242\230.md" @@ -0,0 +1,14 @@ +# 备机处于need repair\(WAL\)状态问题 + +## 问题现象 + +openGauss备机出现Standby Need repair\(WAL\)故障。 + +## 原因分析 + +因网络故障、磁盘满等原因造成主备实例连接断开,主备日志不同步,导致数据库集群在启动时异常。 + +## 处理分析 + +通过gs\_ctl build -D 命令对故障节点进行重建,具体的操作方法请参见openGauss工具参考中的build参数。 + diff --git "a/content/zh/docs/Developerguide/\345\255\220\346\237\245\350\257\242\350\260\203\344\274\230.md" "b/content/zh/docs/Developerguide/\345\255\220\346\237\245\350\257\242\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..bc0b23aa79a778dc2344f0fb64ac8121aa43f719 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\255\220\346\237\245\350\257\242\350\260\203\344\274\230.md" @@ -0,0 +1,501 @@ +# 子查询调优 + +## 子查询背景介绍 + +应用程序通过SQL语句来操作数据库时会使用大量的子查询,这种写法比直接对两个表做连接操作在结构上和思路上更清晰,尤其是在一些比较复杂的查询语句中,子查询有更完整、更独立的语义,会使SQL对业务逻辑的表达更清晰更容易理解,因此得到了广泛的应用。 + +openGauss根据子查询在SQL语句中的位置把子查询分成了子查询、子链接两种形式。 + +- 子查询SubQuery:对应于查询解析树中的范围表RangeTblEntry,更通俗一些指的是出现在FROM语句后面的独立的SELECT语句。 +- 子链接SubLink:对应于查询解析树中的表达式,更通俗一些指的是出现在where/on子句、targetlist里面的语句。 + + 综上,对于查询解析树而言,SubQuery的本质是范围表、而SubLink的本质是表达式。针对SubLink场景而言,由于SubLink可以出现在约束条件、表达式中,按照openGauss对sublink的实现,sublink可以分为以下几类: + + - exist\_sublink:对应EXIST、NOT EXIST语句 + - any\_sublink:对应op ALL\(select…\)语句,其中OP可以是IN,<,\>,=操作符 + - all\_sublink:对应op ALL\(select…\)语句,其中OP可以是IN,<,\>,=操作符 + - rowcompare\_sublink:对应record op \(select …\)语句 + - expr\_sublink:对应\(SELECT with single targetlist item ...\)语句 + - array\_sublink:对应ARRAY\(select…\)语句 + - cte\_sublink:对应with query\(…\)语句 + + 其中OLAP、HTAP场景中常用的sublink为exist\_sublink、any\_sublink,在openGauss的优化引擎中对其应用场景做了优化(子链接提升),由于SQL语句中子查询的使用的灵活性,会带来SQL子查询过于复杂造成性能问题。子查询从大类上来看,分为非相关子查询和相关子查询: + + - **非相关子查询None-Correlated SubQuery** + + 子查询的执行不依赖于外层父查询的任何属性值。这样子查询具有独立性,可独自求解,形成一个子查询计划先于外层的查询求解。 + + 例如: + + ``` + select t1.c1,t1.c2 + from t1 + where t1.c1 in ( + select c2 + from t2 + where t2.c2 IN (2,3,4) + ); + QUERY PLAN + ---------------------------------------------------------------- + Hash Join + Hash Cond: (t1.c1 = t2.c2) + -> Seq Scan on t1 + Filter: (c1 = ANY ('{2,3,4}'::integer[])) + -> Hash + -> HashAggregate + Group By Key: t2.c2 + -> Seq Scan on t2 + Filter: (c2 = ANY ('{2,3,4}'::integer[])) + (9 rows) + + ``` + + - **相关子查询Correlated-SubQuery** + + 子查询的执行依赖于外层父查询的一些属性值(如下列示例t2.c1 = t1.c1条件中的t1.c1)作为内层查询的一个AND-ed条件。这样的子查询不具备独立性,需要和外层查询按分组进行求解。 + + 例如: + + ``` + select t1.c1,t1.c2 + from t1 + where t1.c1 in ( + select c2 + from t2 + where t2.c1 = t1.c1 AND t2.c2 in (2,3,4) + ); + QUERY PLAN + ------------------------------------------------------------------------ + Seq Scan on t1 + Filter: (SubPlan 1) + SubPlan 1 + -> Seq Scan on t2 + Filter: ((c1 = t1.c1) AND (c2 = ANY ('{2,3,4}'::integer[]))) + (5 rows) + + ``` + + + +## openGauss对SubLink的优化 + +针对SubLink的优化策略主要是让内层的子查询提升\(pullup\),能够和外表直接做关联查询,从而避免生成SubPlan+Broadcast內表的执行计划。判断子查询是否存在性能风险,可以通过explain查询语句查看Sublink的部分是否被转换成SubPlan的执行计划。 + +例如: + +![](figures/zh-cn_image_0246254080.png) + +箭头右侧执行计划应替换成下面的执行计划: + +``` +QUERY PLAN +-------------------------------- +Seq Scan on t1 +Filter: (SubPlan 1) +SubPlan 1 +-> Seq Scan on t2 +Filter: (c1 = t1.c1) +(5 rows) +``` + +- **目前openGauss支持的Sublink-Release场景** + - IN-Sublink无相关条件 + + - 不能包含上一层查询的表中的列(可以包含更高层查询表中的列)。 + - 不能包含易变函数。 + + ![](figures/zh-cn_image_0246254081.png) + + 箭头右侧执行计划应替换成下面的执行计划: + + ``` + QUERY PLAN + -------------------------------------- + Hash Join + Hash Cond: (t1.c1 = t2.c2) + -> Seq Scan on t1 + -> Hash + -> HashAggregate + Group By Key: t2.c2 + -> Seq Scan on t2 + Filter: (c1 = 1) + (8 rows) + ``` + + - Exist-Sublink包含相关条件 + + Where子句中必须包含上一层查询的表中的列,子查询的其它部分不能含有上层查询的表中的列。其它限制如下。 + + - 子查询必须有from子句。 + - 子查询不能含有with子句。 + - 子查询不能含有聚集函数。 + - 子查询里不能包含集合操作、排序、limit、windowagg、having操作。 + - 不能包含易变函数。 + + ![](figures/zh-cn_image_0246254082.png) + + 箭头右侧执行计划应替换成下面的执行计划: + + QUERY PLAN + + ----------------------------------- + + Hash Join + + Hash Cond: \(t1.c1 = t2.c1\) + + -\> Seq Scan on t1 + + -\> Hash + + -\> HashAggregate + + Group By Key: t2.c1 + + -\> Seq Scan on t2 + + \(7 rows\) + + - 包含聚集函数的等值相关子查询的提升 + + 子查询的where条件中必须含有来自上一层的列,而且此列必须和子查询本层涉及表中的列做相等判断,且这些条件必须用and连接。其它地方不能包含上层的列。其它限制条件如下。 + + - 子查询中where条件包含的表达式\(列名\)必须是表中的列。 + - 子查询的Select关键字后,必须有且仅有一个输出列,此输出列必须是聚集函数\(如max\),并且聚集函数的参数\(t2.c2\)不能是来自外层表\(t1\)中的列。聚集函数不能是count。 + + 例如,下列示例可以提升。 + + ``` + select * from t1 where c1 >( + select max(t2.c1) from t2 where t2.c1=t1.c1 + ); + ``` + + 下列示例不能提升,因为子查询没有聚集函数。 + + ``` + select * from t1 where c1 >( + select t2.c1 from t2 where t2.c1=t1.c1 + ); + ``` + + 下列示例不能提升,因为子查询有两个输出列。 + + ``` + select * from t1 where (c1,c2) >( + select max(t2.c1),min(t2.c2) from t2 where t2.c1=t1.c1 + ); + ``` + + - 子查询必须是from子句。 + - 子查询中不能有groupby、having、集合操作。 + - 子查询只能是inner join。 + + 例如:下列示例不能提升。 + + ``` + select * from t1 where c1 >( + select max(t2.c1) from t2 full join t3 on (t2.c2=t3.c2) where t2.c1=t1.c1 + ); + ``` + + - 子查询的targetlist中不能包含返回set的函数。 + - 子查询的where条件中必须含有来自上一层的列,而且此列必须和子查询层涉及表中的列做相等判断,且这些条件必须用and连接。其它地方不能包含上层的上层中的列。例如:下列示例中的最内层子链接可以提升。 + + ``` + select * from t3 where t3.c1=( + select t1.c1 + from t1 where c1 >( + select max(t2.c1) from t2 where t2.c1=t1.c1 + )); + ``` + + 基于上面的示例,再加一个条件,则不能提升,因为最内侧子查询引用了上层中的列。示例如下: + + ``` + select * from t3 where t3.c1=( + select t1.c1 + from t1 where c1 >( + select max(t2.c1) from t2 where t2.c1=t1.c1 and t3.c1>t2.c2 + + )); + ``` + + - 提升OR子句中的SubLink + + 当WHERE过滤条件中有OR连接的EXIST相关SubLink, + + 例如: + + ``` + select a, c from t1 + where t1.a = (select avg(a) from t3 where t1.b = t3.b) or + exists (select * from t4 where t1.c = t4.c); + ``` + + 将OR-ed连接的EXIST相关子查询OR字句的提升过程: + + 1. 提取where条件中,or子句中的opExpr。为:t1.a = \(select avg\(a\) from t3 where t1.b = t3.b\) + 2. 这个op操作中包含subquery,判断是否可以提升,如果可以提升,重写subquery为:select avg\(a\), t3.b from t3 group by t3.b,生成not null条件t3.b is not null,并将这个opexpr用这个not null条件替换。此时SQL变为: + + ``` + select a, c + from t1 left join (select avg(a) avg, t3.b from t3 group by t3.b) as t3 on (t1.a = avg and t1.b = t3.b) + where t3.b is not null or exists (select * from t4 where t1.c = t4.c); + ``` + + 3. 再次提取or子句中的exists sublink,exists \(select \* from t4 where t1.c = t4.c\),判断是否可以提升,如果可以提升,转换subquery为:select t4.c from t4 group by t4.c生成NotNull条件t4.c is not null提升查询,SQL变为: + + ``` + select a, c + from t1 left join (select avg(a) avg, t3.b from t3 group by t3.b) as t3 on (t1.a = avg and t1.b = t3.b) + left join (select t4.c from t4 group by t4.c) where t3.b is not null or t4.c is not null; + ``` + + + + +- **目前openGauss不支持的Sublink-Release场景** + + 除了以上场景之外都不支持Sublink提升,因此关联子查询会被计划成SubPlan+Broadcast的执行计划,当inner表的数据量较大时则会产生性能风险。 + + 如果相关子查询中跟外层的两张表做join,那么无法提升该子查询,需要通过将父SQL创建成with子句,然后再跟子查询中的表做相关子查询查询。 + + 例如: + + ``` + select distinct t1.a, t2.a + from t1 left join t2 on t1.a=t2.a and not exists (select a,b from test1 where test1.a=t1.a and test1.b=t2.a); + ``` + + 改写为 + + ``` + with temp as + ( + select * from (select t1.a as a, t2.a as b from t1 left join t2 on t1.a=t2.a) + + ) + select distinct a,b + from temp + where not exists (select a,b from test1 where temp.a=test1.a and temp.b=test1.b); + ``` + + - 出现在targetlist里的相关子查询无法提升\(不含count\) + + 例如: + + ``` + explain (costs off) + select (select c2 from t2 where t1.c1 = t2.c1) ssq, t1.c2 + from t1 + where t1.c2 > 10; + ``` + + 执行计划为: + + ``` + explain (costs off) + select (select c2 from t2 where t1.c1 = t2.c1) ssq, t1.c2 + from t1 + where t1.c2 > 10; + QUERY PLAN + -------------------------------- + Seq Scan on t1 + Filter: (c2 > 10) + SubPlan 1 + -> Seq Scan on t2 + Filter: (t1.c1 = c1) + (5 rows) + ``` + + 由于相关子查询出现在targetlist\(查询返回列表\)里,对于t1.c1=t2.c1不匹配的场景仍然需要输出值,因此使用left-outerjoin关联T1&T2确保t1.c1=t2.c1在不匹配时,子SSQ能够返回不匹配的补空值。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >SSQ和CSSQ的解释如下: + >- SSQ:ScalarSubQuery一般指返回1行1列scalar值的sublink,简称SSQ。 + >- CSSQ:Correlated-ScalarSubQuery和SSQ相同不过是指包含相关条件的SSQ。 + + 上述SQL语句可以改写为: + + ``` + with ssq as + ( + select t2.c2 from t2 + ) + select ssq.c2, t1.c2 + from t1 left join ssq on t1.c1 = ssq.c2 + where t1.c2 > 10; + ``` + + 改写后的执行计划为: + + ``` + QUERY PLAN + --------------------------------- + Hash Right Join + Hash Cond: (ssq.c2 = t1.c1) + CTE ssq + -> Seq Scan on t2 + -> CTE Scan on ssq + -> Hash + -> Seq Scan on t1 + Filter: (c2 > 10) + (8 rows) + ``` + + 可以看到出现在SSQ返回列表里的相关子查询SSQ,已经被提升成Right Join,从而避免当內表T2较大时出现SubPlan计划导致性能变差。 + + - 出现在targetlist里的相关子查询无法提升\(带count\) + + 例如: + + ``` + select (select count(*) from t2 where t2.c1=t1.c1) cnt, t1.c1, t3.c1 + from t1,t3 + where t1.c1=t3.c1 order by cnt, t1.c1; + ``` + + 执行计划为 + + ``` + QUERY PLAN + -------------------------------------------- + Sort + Sort Key: ((SubPlan 1)), t1.c1 + -> Hash Join + Hash Cond: (t1.c1 = t3.c1) + -> Seq Scan on t1 + -> Hash + -> Seq Scan on t3 + SubPlan 1 + -> Aggregate + -> Seq Scan on t2 + Filter: (c1 = t1.c1) + (11 rows) + ``` + + 由于相关子查询出现在targetlist\(查询返回列表\)里,对于t1.c1=t2.c1不匹配的场景仍然需要输出值,因此使用left-outerjoin关联T1&T2确保t1.c1=t2.c1在不匹配时子SSQ能够返回不匹配的补空值,但是这里带了count语句及时在t1.c1=t2.t1不匹配时需要输出0,因此可以使用一个case-when NULL then 0 else count\(\*\)来代替。 + + 上述SQL语句可以改写为: + + ``` + with ssq as + ( + select count(*) cnt, c1 from t2 group by c1 + ) + select case when + ssq.cnt is null then 0 + else ssq.cnt + end cnt, t1.c1, t3.c1 + from t1 left join ssq on ssq.c1 = t1.c1,t3 + where t1.c1 = t3.c1 + order by ssq.cnt, t1.c1; + ``` + + 改写后的执行计划为 + + ``` + QUERY PLAN + ------------------------------------------- + Sort + Sort Key: ssq.cnt, t1.c1 + CTE ssq + -> HashAggregate + Group By Key: t2.c1 + -> Seq Scan on t2 + -> Hash Join + Hash Cond: (t1.c1 = t3.c1) + -> Hash Left Join + Hash Cond: (t1.c1 = ssq.c1) + -> Seq Scan on t1 + -> Hash + -> CTE Scan on ssq + -> Hash + -> Seq Scan on t3 + (15 rows) + ``` + + - 相关条件为不等值场景 + + 例如: + + ``` + select t1.c1, t1.c2 + from t1 + where t1.c1 = (select agg() from t2.c2 > t1.c2); + ``` + + 对于非等值相关条件的SubLink目前无法提升,从语义上可以通过做2次join(一次CorrelationKey,一次rownum自关联)达到提升改写的目的。 + + 改写方案有两种。 + + - 子查询改写方式 + + ``` + select t1.c1, t1.c2 + from t1, ( + select t1.rowid, agg() aggref + from t1,t2 + where t1.c2 > t2.c2 group by t1.rowid + ) dt /* derived table */ + where t1.rowid = dt.rowid AND t1.c1 = dt.aggref; + ``` + + - CTE改写方式 + + ``` + WITH dt as + ( + select t1.rowid, agg() aggref + from t1,t2 + where t1.c2 > t2.c2 group by t1.rowid + ) + select t1.c1, t1.c2 + from t1, derived_table + where t1.rowid = derived_table.rowid AND + t1.c1 = derived_table.aggref; + ``` + + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 对于AGG类型为count\(\*\)时需要进行CASE-WHEN对没有match的场景补0处理,非COUNT\(\*\)场景NULL处理。 + >- CTE改写方式如果有sharescan支持性能上能够更优。 + + +## 更多优化示例 + +**示例:**修改select语句,将子查询修改为和主表的join,或者修改为可以提升的subquery,但是在修改前后需要保证语义的正确性。 + +``` +explain (costs off) select * from t1 where t1.c1 in (select t2.c1 from t2 where t1.c1 = t2.c2); + QUERY PLAN +-------------------------------- + Seq Scan on t1 + Filter: (SubPlan 1) + SubPlan 1 + -> Seq Scan on t2 + Filter: (t1.c1 = c2) +(5 rows) +``` + +上面事例计划中存在一个subPlan,为了消除这个subPlan可以修改语句为: + +``` +explain (costs off) select * from t1 where exists (select t2.c1 from t2 where t1.c1 = t2.c2 and t1.c1 = t2.c1); + QUERY PLAN +------------------------------------------ + Hash Join + Hash Cond: (t1.c1 = t2.c2) + -> Seq Scan on t1 + -> Hash + -> HashAggregate + Group By Key: t2.c2, t2.c1 + -> Seq Scan on t2 + Filter: (c2 = c1) +(8 rows) + +``` + +从计划可以看出,subPlan消除了,计划变成了两个表的hash join,这样会大大提高执行效率。 + diff --git "a/content/zh/docs/Developerguide/\345\255\220\347\250\213\345\272\217.md" "b/content/zh/docs/Developerguide/\345\255\220\347\250\213\345\272\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..90eb6437a80645b9de882739f7f98623a39e5880 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\255\220\347\250\213\345\272\217.md" @@ -0,0 +1,4 @@ +# 子程序 + +存储在数据库中的存储过程、函数、操作符和高级包等。当在数据库上建立好后,可以在其他程序中调用它们。 + diff --git "a/content/zh/docs/Developerguide/\345\255\220\351\223\276\346\216\245\345\235\227\345\220\215\347\232\204hint.md" "b/content/zh/docs/Developerguide/\345\255\220\351\223\276\346\216\245\345\235\227\345\220\215\347\232\204hint.md" new file mode 100644 index 0000000000000000000000000000000000000000..29e68b7f32e0bd6dbed0b467789176b54b7c11da --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\255\220\351\223\276\346\216\245\345\235\227\345\220\215\347\232\204hint.md" @@ -0,0 +1,31 @@ +# 子链接块名的hint + +## 功能描述 + +指明子链接块的名称。 + +## 语法格式 + +``` +blockname (table) +``` + +## 参数说明 + +- **table**表示为该子链接块hint的别名的名称。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- **blockname hint**仅在对应的子链接块提升时才会被上层查询使用。目前支持的子链接提升包括IN子链接提升、EXISTS子链接提升和包含Agg等值相关子链接提升。该hint通常会和前面章节提到的hint联合使用。 +>- 对于FROM关键字后的子查询,则需要使用子查询的别名进行hint,blockname hint不会被用到。 +>- 如果子链接中含有多个表,则提升后这些表可与外层表以任意优化顺序连接,hint也不会被用到。 + +## 示例 + +``` +explain select /*+nestloop(store_sales tt) */ * from store_sales where ss_item_sk in (select /*+blockname(tt)*/ i_item_sk from item group by 1); +``` + +该hint表示:子链接的别名为tt,提升后与上层的store\_sales表关联时使用nestloop。生成计划如下所示: + +![](figures/zh-cn_image_0253038757.png) + diff --git "a/content/zh/docs/Developerguide/\345\255\227\347\254\246\345\244\204\347\220\206\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" "b/content/zh/docs/Developerguide/\345\255\227\347\254\246\345\244\204\347\220\206\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" index a792c6381fabd63a6f7cc430b0a94e29b35d84ef..c8666f320cdf354c450f1bb66e8bdee1dccb0335 100644 --- "a/content/zh/docs/Developerguide/\345\255\227\347\254\246\345\244\204\347\220\206\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" +++ "b/content/zh/docs/Developerguide/\345\255\227\347\254\246\345\244\204\347\220\206\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" @@ -668,22 +668,6 @@ openGauss提供的字符处理函数和操作符主要用于字符串与字符 (1 row) ``` -- sys\_context \( 'namespace' , 'parameter'\) - - 描述:获取并返回指定namespace下参数parameter的值。 - - 返回值类型:text - - 示例: - - ``` - postgres=# SELECT SYS_CONTEXT ( 'postgres' , 'archive_mode'); - sys_context - ------------- - - (1 row) - ``` - - substrb\(text,int,int\) 描述:提取子字符串,第一个int表示提取的起始位置,第二个表示提取几位字符。 @@ -1078,7 +1062,7 @@ openGauss提供的字符处理函数和操作符主要用于字符串与字符 postgres=# SELECT rpad('hi',5,'xyza'); rpad ------- - hixyx + hixyz (1 row) ``` @@ -1195,7 +1179,7 @@ openGauss提供的字符处理函数和操作符主要用于字符串与字符 - concat\(str1,str2\) - 描述:将字符串str1和str2连接并返回,若str1或str2为NULL时,返回NULL。 + 描述:将字符串str1和str2连接并返回。 返回值类型:varchar @@ -1210,7 +1194,7 @@ openGauss提供的字符处理函数和操作符主要用于字符串与字符 postgres=# SELECT concat('Hello', NULL); concat -------- - + Hello (1 row) ``` diff --git "a/content/zh/docs/Developerguide/\345\255\227\347\254\246\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/\345\255\227\347\254\246\347\261\273\345\236\213.md" index 9a7b2761b2387996ffad164616a5b637e207a3dc..f3eac36c93e277a323fa7830e8318bebfa6f347e 100644 --- "a/content/zh/docs/Developerguide/\345\255\227\347\254\246\347\261\273\345\236\213.md" +++ "b/content/zh/docs/Developerguide/\345\255\227\347\254\246\347\261\273\345\236\213.md" @@ -32,7 +32,7 @@ openGauss支持的字符类型请参见[表1](#zh-cn_topic_0237121950_zh-cn_topi

VARCHAR2(n)

-

变长字符串。是VARCHAR(n)类型的别名,为兼容A类型。n是指字节长度。

+

变长字符串。是VARCHAR(n)类型的别名。n是指字节长度。

最大为10MB。

@@ -46,7 +46,7 @@ openGauss支持的字符类型请参见[表1](#zh-cn_topic_0237121950_zh-cn_topi

CLOB

-

文本大对象。是TEXT类型的别名,为兼容A类型。

+

文本大对象。是TEXT类型的别名。

最大为1GB-8203字节(即1073733621字节)。

diff --git "a/content/zh/docs/Developerguide/\345\255\230\345\202\250\350\277\207\347\250\213-18.md" "b/content/zh/docs/Developerguide/\345\255\230\345\202\250\350\277\207\347\250\213-18.md" new file mode 100644 index 0000000000000000000000000000000000000000..79273062553ac95e586d006f4c2ec300399d2c5c --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\255\230\345\202\250\350\277\207\347\250\213-18.md" @@ -0,0 +1,10 @@ +# 存储过程 + +商业规则和业务逻辑可以通过程序存储在openGauss中,这个程序就是存储过程。 + +存储过程是SQL和PL/SQL的组合。存储过程使执行商业规则的代码可以从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。 + +存储过程的创建及调用办法请参考[CREATE PROCEDURE](CREATE-PROCEDURE.md)。 + +[PL/pgSQL语言函数](PL-pgSQL语言函数.md)节所提到的PL/pgSQL语言创建的函数与存储过程的应用方法相通。下面各节中,除非特别声明,否则内容通用于存储过程和PL/pgSQL语言函数。 + diff --git "a/content/zh/docs/Developerguide/\345\255\230\345\202\250\350\277\207\347\250\213.md" "b/content/zh/docs/Developerguide/\345\255\230\345\202\250\350\277\207\347\250\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..dbbb05f1f44c38f42c2b219eadbbe224c3fc4037 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\255\230\345\202\250\350\277\207\347\250\213.md" @@ -0,0 +1,27 @@ +# 存储过程 + +- **[存储过程](存储过程-18.md)** + +- **[数据类型](数据类型-19.md)** + +- **[数据类型转换](数据类型转换.md)** + +- **[数组和record](数组和record.md)** + +- **[声明语法](声明语法.md)** + +- **[基本语句](基本语句.md)** + +- **[动态语句](动态语句.md)** + +- **[控制语句](控制语句.md)** + +- **[其他语句](其他语句.md)** + +- **[游标](游标.md)** + +- **[Retry管理](Retry管理.md)** + +- **[调试](调试-20.md)** + + diff --git "a/content/zh/docs/Developerguide/\345\256\211\345\205\250\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\345\256\211\345\205\250\345\207\275\346\225\260.md" index 2afdd15d424a3f481d0b350e8e2589b79c6e776d..5e35440169f49faada01f74f02e8eb70b7e0433e 100644 --- "a/content/zh/docs/Developerguide/\345\256\211\345\205\250\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\345\256\211\345\205\250\345\207\275\346\225\260.md" @@ -280,13 +280,7 @@ -- pgxc\_query\_audit - - 描述:查看数据库主节点审计日志。 - - 返回值类型:record - - 函数返回字段同pg\_query\_audit函数。 + 函数使用方法及示例请参考[查看审计结果](查看审计结果.md)。 - pg\_delete\_audit @@ -294,5 +288,6 @@ 返回值类型:void + 函数使用方法及示例请参考[维护审计日志](维护审计日志.md)。 diff --git "a/content/zh/docs/Developerguide/\345\256\211\345\205\250\345\222\214\350\256\244\350\257\201\357\274\210postgresql-conf\357\274\211.md" "b/content/zh/docs/Developerguide/\345\256\211\345\205\250\345\222\214\350\256\244\350\257\201\357\274\210postgresql-conf\357\274\211.md" index c0af033a5a0bac1232bba0dc69bbeae170f9e9fe..7d71fee08961e2da1ea6ca7cbe88bcdc97a10cf1 100644 --- "a/content/zh/docs/Developerguide/\345\256\211\345\205\250\345\222\214\350\256\244\350\257\201\357\274\210postgresql-conf\357\274\211.md" +++ "b/content/zh/docs/Developerguide/\345\256\211\345\205\250\345\222\214\350\256\244\350\257\201\357\274\210postgresql-conf\357\274\211.md" @@ -52,7 +52,7 @@ >![](public_sys-resources/icon-notice.gif) **须知:** >openGauss目前支持SSL的场景为客户端连接数据库主节点场景,该参数目前建议只在数据库主节点中开启,数据库节点默认值为off。开启此参数需要同时配置ssl\_cert\_file、ssl\_key\_file和ssl\_ca\_file等参数及对应文件,不正确的配置可能会导致openGauss无法正常启动。 -**默认值:**on +**默认值:**off ## require\_ssl @@ -76,7 +76,7 @@ 该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 -**取值范围:**字符串,如果指定多个加密算法,加密算法之间需要以分号分割。详细请参见[表4](用SSL进行安全的TCP-IP连接.md#zh-cn_topic_0237121092_zh-cn_topic_0059778374_t34eea0830ef94be1a866f0410ba3eb07)获取支持的加密算法。 +**取值范围:**字符串,如果指定多个加密算法,加密算法之间需要以分号分割。详细请参见[用SSL进行安全的TCP/IP连接](用SSL进行安全的TCP-IP连接.md)获取支持的加密算法。 **默认值:**ALL @@ -132,7 +132,7 @@ ## krb\_server\_keyfile -**参数说明:**指定Kerberos服务主配置文件的位置,详细请参见[客户端接入认证](客户端接入认证.md)。 +**参数说明:**指定Kerberos服务主配置文件的位置,详细请参见[配置客户端接入认证](配置客户端接入认证.md)。 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 @@ -142,7 +142,7 @@ ## krb\_srvname -**参数说明:**设置Kerberos服务名,详细请参见[客户端接入认证](客户端接入认证.md)。 +**参数说明:**设置Kerberos服务名,详细请参见[配置客户端接入认证](配置客户端接入认证.md)。 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 @@ -178,7 +178,7 @@ ## password\_policy -**参数说明:**在使用CREATE ROLE/USER或者ALTER ROLE/USER命令创建或者修改openGauss帐户时,该参数决定是否进行密码复杂度检查。 +**参数说明:**在使用CREATE ROLE/USER或者ALTER ROLE/USER命令创建或者修改openGauss帐户时,该参数决定是否进行密码复杂度检查。关于密码复杂度检查策略请参见[设置密码安全策略](设置密码安全策略.md)。 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 @@ -194,7 +194,7 @@ ## password\_reuse\_time -**参数说明:**在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用天数检查。 +**参数说明:**在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用天数检查。关于密码可重用策略请参见[设置密码安全策略](设置密码安全策略.md)。 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 @@ -214,7 +214,7 @@ ## password\_reuse\_max -**参数说明:**在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用次数检查。 +**参数说明:**在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用次数检查。关于密码可重用策略请参见[设置密码安全策略](设置密码安全策略.md)。 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 @@ -234,7 +234,7 @@ ## password\_lock\_time -**参数说明:**该参数指定帐户被锁定后自动解锁的时间。 +**参数说明:**该参数指定帐户被锁定后自动解锁的时间。关于帐户自动锁定策略请参见[设置密码安全策略](设置密码安全策略.md)。 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 @@ -250,7 +250,7 @@ ## failed\_login\_attempts -**参数说明:**在任意时候,如果输入密码错误的次数达到failed\_login\_attempts则当前帐户被锁定,password\_lock\_time秒后被自动解锁。 例如,登录时输入密码失败,ALTER USER时修改密码失败等。 +**参数说明:**在任意时候,如果输入密码错误的次数达到failed\_login\_attempts则当前帐户被锁定,password\_lock\_time秒后被自动解锁。 例如,登录时输入密码失败,ALTER USER时修改密码失败等。关于帐户自动锁定策略请参见[设置密码安全策略](设置密码安全策略.md)。 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 diff --git "a/content/zh/docs/Developerguide/\345\256\232\344\271\211\345\217\230\351\207\217.md" "b/content/zh/docs/Developerguide/\345\256\232\344\271\211\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..60241313dea855b59998acf852cbecd87bae4e36 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\256\232\344\271\211\345\217\230\351\207\217.md" @@ -0,0 +1,56 @@ +# 定义变量 + +介绍PL/SQL中变量的声明,以及该变量在代码中的作用域。 + +## 变量声明 + +变量声明语法请参见[图1](#zh-cn_topic_0237122221_zh-cn_topic_0059777427_f6cc941e0c136457aade3860fc682cbbc)。 + +**图 1** declare\_variable::= +![](figures/declare_variable.png "declare_variable") + +对以上语法格式的解释如下: + +- variable\_name:变量名。 +- type:变量类型。 +- value:该变量的初始值(如果不给定初始值,则初始为NULL)。value也可以是表达式。 + +**示例** + +``` +postgres=# DECLARE + emp_id INTEGER := 7788; --定义变量并赋值 +BEGIN + emp_id := 5*7784; --变量赋值 +END; +/ +``` + +变量类型除了支持基本类型,还可以是使用%TYPE和%ROWTYPE去声明一些与其他表字段或表结构本身相关的变量。 + +**%TYPE属性** + +%TYPE主要用于声明某个与其他变量类型(例如,表中某列的类型)相同的变量。假如我们想定义一个my\_name变量,它的变量类型与employee的firstname类型相同,我们可以通过如下定义: + +``` +my_name employee.firstname%TYPE +``` + +这样定义可以带来两个好处,首先,我们不用预先知道employee 表的firstname类型具体是什么。其次,即使之后firstname类型有了变化,我们也不需要再次修改my\_name的类型。 + +**%ROWTYPE属性** + +%ROWTYPE属性主要用于对一组数据的类型声明,用于存储表中的一行数据或从游标匹配的结果。假如,我们需要一组数据,该组数据的字段名称与字段类型都与employee表相同。我们可以通过如下定义: + +``` +my_employee employee%ROWTYPE +``` + +## 变量作用域 + +变量的作用域表示变量在代码块中的可访问性和可用性。只有在它的作用域内,变量才有效。 + +- 变量必须在declare部分声明,即必须建立BEGIN-END块。块结构也强制变量必须先声明后使用,即变量在过程内有不同作用域、不同的生存期。 +- 同一变量可以在不同的作用域内定义多次,内层的定义会覆盖外层的定义。 +- 在外部块定义的变量,可以在嵌套块中使用。但外部块不能访问嵌套块中的变量。 + diff --git "a/content/zh/docs/Developerguide/\345\256\241\350\247\206\345\222\214\344\277\256\346\224\271\350\241\250\345\256\232\344\271\211.md" "b/content/zh/docs/Developerguide/\345\256\241\350\247\206\345\222\214\344\277\256\346\224\271\350\241\250\345\256\232\344\271\211.md" new file mode 100644 index 0000000000000000000000000000000000000000..5f7e6109c855cb2a7e95024b97f3646501e01172 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\256\241\350\247\206\345\222\214\344\277\256\346\224\271\350\241\250\345\256\232\344\271\211.md" @@ -0,0 +1,13 @@ +# 审视和修改表定义 + +- **[审视和修改表定义概述](审视和修改表定义概述.md)** + +- **[选择存储模型](选择存储模型.md)** + +- **[使用局部聚簇](使用局部聚簇.md)** + +- **[使用分区表](使用分区表.md)** + +- **[选择数据类型](选择数据类型.md)** + + diff --git "a/content/zh/docs/Developerguide/\345\256\241\350\247\206\345\222\214\344\277\256\346\224\271\350\241\250\345\256\232\344\271\211\346\246\202\350\277\260.md" "b/content/zh/docs/Developerguide/\345\256\241\350\247\206\345\222\214\344\277\256\346\224\271\350\241\250\345\256\232\344\271\211\346\246\202\350\277\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..7f2d628a522aedf93f7d702f96ffd39ed9ff811d --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\256\241\350\247\206\345\222\214\344\277\256\346\224\271\350\241\250\345\256\232\344\271\211\346\246\202\350\277\260.md" @@ -0,0 +1,9 @@ +# 审视和修改表定义概述 + +好的表定义至少需要达到以下几个目标: + +1. **减少扫描数据数据量**。通过分区的剪枝机制可以实现该点。 +2. **尽量极少随机IO**。通过聚簇/局部聚簇可以实现该点。 + +表定义在数据库设计阶段创建,在SQL调优过程中进行审视和修改。 + diff --git "a/content/zh/docs/Developerguide/\345\256\241\350\256\241\346\246\202\350\277\260.md" "b/content/zh/docs/Developerguide/\345\256\241\350\256\241\346\246\202\350\277\260.md" index 5b457ed00627abbce2c1c080103428ac0741859c..36ed724b75b1b3ed8573e36e4ed51c26f401648a 100644 --- "a/content/zh/docs/Developerguide/\345\256\241\350\256\241\346\246\202\350\277\260.md" +++ "b/content/zh/docs/Developerguide/\345\256\241\350\256\241\346\246\202\350\277\260.md" @@ -54,7 +54,7 @@

数据库对象的CREATE,ALTER,DROP操作审计

参数:audit_system_object

-

默认值为12295,表示只对DATABASE、SCHEMA、USER、DATA SOURCE、NODE GROUP这五类数据库对象的CREATE、ALTER、DROP操作进行审计。

+

默认值为12295,表示只对DATABASE、SCHEMA、USER、DATA SOURCE这四类数据库对象的CREATE、ALTER、DROP操作进行审计。

具体表的INSERT、UPDATE和DELETE操作审计

@@ -432,7 +432,7 @@ 连接成功后,系统显示类似如下信息: ``` - gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. @@ -451,7 +451,7 @@ 2. 执行如下命令开启审计功能,参数设置立即生效。 ``` - gs_guc set -Z coordinator -Z datanode -N all -I all -c "audit_enabled=on" + gs_guc set -N all -I all -c "audit_enabled=on" ``` 4. 配置具体的审计项。 @@ -463,7 +463,7 @@ 以开启对数据库所有对象的增删改操作的审计开关为例,其他配置项的修改方法与此相同,修改配置项的方法如下所示: ``` - gs_guc reload -Z coordinator -Z datanode -N all -I all -c "audit_system_object=12295" + gs_guc reload -N all -I all -c "audit_system_object=12295" ``` 其中audit\_system\_object代表审计项开关,12295为该审计开关的值。 diff --git "a/content/zh/docs/Developerguide/\345\256\242\346\210\267\347\253\257\346\216\245\345\205\245\350\256\244\350\257\201.md" "b/content/zh/docs/Developerguide/\345\256\242\346\210\267\347\253\257\346\216\245\345\205\245\350\256\244\350\257\201.md" index b135d09a817c87fda7f8743487cd9182651e0858..269d0d90891d3335b253df439a1ab50834a9fd03 100644 --- "a/content/zh/docs/Developerguide/\345\256\242\346\210\267\347\253\257\346\216\245\345\205\245\350\256\244\350\257\201.md" +++ "b/content/zh/docs/Developerguide/\345\256\242\346\210\267\347\253\257\346\216\245\345\205\245\350\256\244\350\257\201.md" @@ -1,4 +1,4 @@ -# 客户端接入认证 +# 客户端接入认证 - **[配置客户端接入认证](配置客户端接入认证.md)** diff --git "a/content/zh/docs/Developerguide/\345\257\274\345\205\245\346\225\260\346\215\256.md" "b/content/zh/docs/Developerguide/\345\257\274\345\205\245\346\225\260\346\215\256.md" index 5aef9d375a76395cc94baea46645ce243e565fd4..004a4f0bf705a9cfcc7301c8ae1237cd3ea52489 100644 --- "a/content/zh/docs/Developerguide/\345\257\274\345\205\245\346\225\260\346\215\256.md" +++ "b/content/zh/docs/Developerguide/\345\257\274\345\205\245\346\225\260\346\215\256.md" @@ -1,6 +1,6 @@ # 导入数据 -openGauss提供了灵活的数据入库方式:INSERT、COPY以及gsql元命令\\copy。各方式具有不同的特点,具体请参见[表1](#zh-cn_topic_0237121116_table59418455192145)。 +openGauss数据库提供了灵活的数据入库方式:INSERT、COPY以及gsql元命令\\copy。各方式具有不同的特点,具体请参见[表1](#zh-cn_topic_0237121116_table59418455192145)。 **表 1** 导入方式特点说明 @@ -18,8 +18,8 @@ openGauss提供了灵活的数据入库方式:INSERT、COPY以及gsql元命令

COPY

-

通过COPY FROM STDIN语句直接向openGauss写入数据。

-

通过JDBC驱动的CopyManager接口从其他数据库向openGauss写入数据时,具有业务数据无需落地成文件的优势。

+

通过COPY FROM STDIN语句直接向openGauss数据库写入数据。

+

通过JDBC驱动的CopyManager接口从其他数据库向openGauss数据库写入数据时,具有业务数据无需落地成文件的优势。

gsql工具的元命令\copy

@@ -40,7 +40,7 @@ openGauss提供了灵活的数据入库方式:INSERT、COPY以及gsql元命令 - **[使用gs\_restore命令导入数据](使用gs_restore命令导入数据.md)** -- **[更新表中数据](更新表中数据-11.md)** +- **[更新表中数据](更新表中数据-4.md)** - **[深层复制](深层复制.md)** diff --git "a/content/zh/docs/Developerguide/\345\257\274\345\207\272\345\205\250\345\261\200\345\257\271\350\261\241.md" "b/content/zh/docs/Developerguide/\345\257\274\345\207\272\345\205\250\345\261\200\345\257\271\350\261\241.md" index e43e307326ecd76c60c61be414ce22f9aa0a4b27..1d7570a69bf5e981ec2a26ac5868102420d42fb8 100644 --- "a/content/zh/docs/Developerguide/\345\257\274\345\207\272\345\205\250\345\261\200\345\257\271\350\261\241.md" +++ "b/content/zh/docs/Developerguide/\345\257\274\345\207\272\345\205\250\345\261\200\345\257\271\350\261\241.md" @@ -24,7 +24,7 @@ openGauss支持使用gs\_dumpall工具导出所有数据库公共的全局对象

-U

-

连接数据库的用户名,需要是openGauss管理员用户。

+

连接数据库的用户名,需要是openGauss管理员用户。

-U omm

diff --git "a/content/zh/docs/Developerguide/\345\257\274\345\207\272\346\211\200\346\234\211\346\225\260\346\215\256\345\272\223-6.md" "b/content/zh/docs/Developerguide/\345\257\274\345\207\272\346\211\200\346\234\211\346\225\260\346\215\256\345\272\223-6.md" new file mode 100644 index 0000000000000000000000000000000000000000..4fec588e5b325505328b9d0a6b765d8c106fdc7c --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\257\274\345\207\272\346\211\200\346\234\211\346\225\260\346\215\256\345\272\223-6.md" @@ -0,0 +1,95 @@ +# 导出所有数据库 + +openGauss支持使用gs\_dumpall工具导出所有数据库的全量信息,包含openGauss中每个数据库信息和公共的全局对象信息。可根据需要自定义导出如下信息: + +- 导出所有数据库全量信息,包含openGauss中每个数据库信息和公共的全局对象信息(包含角色和表空间信息)。 + + 使用导出的全量信息可以创建与当前主机相同的一个主机环境,拥有相同数据库和公共全局对象,且库中数据也与当前各库相同。 + +- 仅导出数据,即导出每个数据库中的数据,且不包含所有对象定义和公共的全局对象信息。 +- 仅导出所有对象定义,包括:表空间、库定义、函数定义、模式定义、表定义、索引定义和存储过程定义等。 + + 使用导出的对象定义,可以快速创建与当前主机相同的一个主机环境,拥有相同的数据库和表空间,但是库中并无原数据库的数据。 + + +## 操作步骤 + +1. 以操作系统用户omm登录数据库主节点。 +2. 使用gs\_dumpall一次导出所有数据库信息。 + + ``` + gs_dumpall -W Bigdata@123 -U omm -f /home/omm/backup/MPPDB_backup.sql -p 8000 + ``` + + **表 1** 常用参数说明 + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

参数说明

+

举例

+

-U

+

连接数据库的用户名,需要是openGauss管理员用户。

+

-U omm

+

-W

+

指定用户连接的密码。

+
  • 如果主机的认证策略是trust,则不会对数据库管理员进行密码验证,即无需输入-W选项;
  • 如果没有-W选项,并且不是数据库管理员,会提示用户输入密码。
+

-W Bigdata@123

+

-f

+

将导出文件发送至指定目录文件夹。如果这里省略,则使用标准输出。

+

-f /home/omm/backup/MPPDB_backup.sql

+

-p

+

指定服务器所监听的TCP端口或本地Unix域套接字后缀,以确保连接。

+

-p 8000

+
+ + 其他参数说明请参见《工具参考》中“服务端工具 \> gs\_dumpall”章节。 + + +## 示例 + +示例一:执行gs\_dumpall,导出所有数据库全量信息(omm用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 + +``` +gs_dumpall -W Bigdata@123 -U omm -f /home/omm/backup/MPPDB_backup.sql -p 8000 +gs_dumpall[port='8000'][2017-07-21 15:57:31]: dumpall operation successful +gs_dumpall[port='8000'][2017-07-21 15:57:31]: total time: 9627 ms +``` + +示例二:执行gs\_dumpall,仅导出所有数据库定义(omm用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 + +``` +gs_dumpall -W Bigdata@123 -U omm -f /home/omm/backup/MPPDB_backup.sql -p 8000 -s +gs_dumpall[port='8000'][2018-11-14 11:28:14]: dumpall operation successful +gs_dumpall[port='8000'][2018-11-14 11:28:14]: total time: 4147 ms +``` + +示例三:执行gs\_dumpall,仅导出所有数据库中数据,并对导出文件进行加密,导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 + +``` +gs_dumpall -f /home/omm/backup/MPPDB_backup.sql -p 8000 -a --with-encryption AES128 --with-key 1234567812345678 +gs_dumpall[port='8000'][2018-11-14 11:32:26]: dumpall operation successful +gs_dumpall[port='8000'][2018-11-14 11:23:26]: total time: 4147 ms +``` + diff --git "a/content/zh/docs/Developerguide/\345\257\274\345\207\272\346\211\200\346\234\211\346\225\260\346\215\256\345\272\223.md" "b/content/zh/docs/Developerguide/\345\257\274\345\207\272\346\211\200\346\234\211\346\225\260\346\215\256\345\272\223.md" index d8708a75fed332836c8f95307eecfddde7ff2deb..c0b5c206294b664f996eb3d05bf00bde825555f5 100644 --- "a/content/zh/docs/Developerguide/\345\257\274\345\207\272\346\211\200\346\234\211\346\225\260\346\215\256\345\272\223.md" +++ "b/content/zh/docs/Developerguide/\345\257\274\345\207\272\346\211\200\346\234\211\346\225\260\346\215\256\345\272\223.md" @@ -1,6 +1,6 @@ # 导出所有数据库 -- **[导出所有数据库](导出所有数据库-13.md)** +- **[导出所有数据库](导出所有数据库-6.md)** - **[导出全局对象](导出全局对象.md)** diff --git "a/content/zh/docs/Developerguide/\345\270\270\350\247\201\346\225\205\351\232\234\345\256\232\344\275\215\346\214\207\345\215\227.md" "b/content/zh/docs/Developerguide/\345\270\270\350\247\201\346\225\205\351\232\234\345\256\232\344\275\215\346\214\207\345\215\227.md" index 170ba6717f4170bac4053ba318e5c20de3d08e13..251a67f51576e82d26d422e93aa7c31c1efaf6ab 100644 --- "a/content/zh/docs/Developerguide/\345\270\270\350\247\201\346\225\205\351\232\234\345\256\232\344\275\215\346\214\207\345\215\227.md" +++ "b/content/zh/docs/Developerguide/\345\270\270\350\247\201\346\225\205\351\232\234\345\256\232\344\275\215\346\214\207\345\215\227.md" @@ -2,4 +2,8 @@ - **[core问题定位](core问题定位.md)** +- **[TPCC运行时,注入磁盘满故障,TPCC卡住的问题](TPCC运行时-注入磁盘满故障-TPCC卡住的问题.md)** + +- **[备机处于need repair\(WAL\)状态问题](备机处于need-repair(WAL)状态问题.md)** + diff --git "a/content/zh/docs/Developerguide/\345\270\270\350\247\201\351\227\256\351\242\230\345\244\204\347\220\206-10.md" "b/content/zh/docs/Developerguide/\345\270\270\350\247\201\351\227\256\351\242\230\345\244\204\347\220\206-10.md" new file mode 100644 index 0000000000000000000000000000000000000000..85c22219f2617f1b62355c20807c1a8347564014 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\270\270\350\247\201\351\227\256\351\242\230\345\244\204\347\220\206-10.md" @@ -0,0 +1,5 @@ +# 常见问题处理 + +- 数据库实例连接失败:请检查数据库实例的情况,是否数据库实例出现了问题或安全权限配置不正确; +- 重启失败:请检查数据库实例健康情况,确保数据库实例工作正常; + diff --git "a/content/zh/docs/Developerguide/\345\270\270\350\247\201\351\227\256\351\242\230\345\244\204\347\220\206-15.md" "b/content/zh/docs/Developerguide/\345\270\270\350\247\201\351\227\256\351\242\230\345\244\204\347\220\206-15.md" new file mode 100644 index 0000000000000000000000000000000000000000..f977cf1861a208811f0b62fba5a3740b99ab2b29 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\270\270\350\247\201\351\227\256\351\242\230\345\244\204\347\220\206-15.md" @@ -0,0 +1,7 @@ +# 常见问题处理 + +- 训练场景失败:请检查历史日志文件路径是否正确,且文件格式符合上文规定。 + +- 测试场景失败:请检查模型路径是否正确。确保待预测负载文件格式正确。 + + diff --git "a/content/zh/docs/Developerguide/\345\270\270\350\247\201\351\227\256\351\242\230\345\244\204\347\220\206.md" "b/content/zh/docs/Developerguide/\345\270\270\350\247\201\351\227\256\351\242\230\345\244\204\347\220\206.md" index 87fde7d76fb08fa35c15151801feb4bc803fd7f7..2242a1c4bf0d496cc77518d4d590631843907901 100644 --- "a/content/zh/docs/Developerguide/\345\270\270\350\247\201\351\227\256\351\242\230\345\244\204\347\220\206.md" +++ "b/content/zh/docs/Developerguide/\345\270\270\350\247\201\351\227\256\351\242\230\345\244\204\347\220\206.md" @@ -1,5 +1,14 @@ # 常见问题处理 +## AI Engine配置问题 + +- **AiEngine启动失败**:请检查ip地址,端口是否可用;CA证书路径是否存在。 +- **发起请求AiEngine无响应**:请检查通信双方CA证书是否一致。 +- **训练,测试场景失败**:请检查模型文件保存路径是否存在;训练预测文件是否在正确下载。 +- **更换AiEngine-IP地址**:按照[证书生成](环境部署.md#section2571634396)步骤重新生成证书,在[生成证书及密钥](环境部署.md#li1783847165213)中替换成相应的IP地址即可。 + +## 数据库内部报错问题 + 问题:AiEngine链接失败。 ``` diff --git "a/content/zh/docs/Developerguide/\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221\346\225\231\347\250\213.md" "b/content/zh/docs/Developerguide/\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221\346\225\231\347\250\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..be565f03ca95ed82125bde29d6fe3a4030ec8660 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\272\224\347\224\250\347\250\213\345\272\217\345\274\200\345\217\221\346\225\231\347\250\213.md" @@ -0,0 +1,13 @@ +# 应用程序开发教程 + +- **[开发规范](开发规范.md)** + +- **[基于JDBC开发](基于JDBC开发.md)** + +- **[基于ODBC开发](基于ODBC开发.md)** + +- **[基于libpq开发](基于libpq开发.md)** + +- **[调试](调试.md)** + + diff --git "a/content/zh/docs/Developerguide/\345\272\224\347\224\250\347\250\213\345\272\217\346\216\245\345\217\243.md" "b/content/zh/docs/Developerguide/\345\272\224\347\224\250\347\250\213\345\272\217\346\216\245\345\217\243.md" index ce433220a4d37374d5bfbf55095d437d1d995c81..1848b34539b703e50dcebb4de39f6315574bbc56 100644 --- "a/content/zh/docs/Developerguide/\345\272\224\347\224\250\347\250\213\345\272\217\346\216\245\345\217\243.md" +++ "b/content/zh/docs/Developerguide/\345\272\224\347\224\250\347\250\213\345\272\217\346\216\245\345\217\243.md" @@ -17,7 +17,7 @@

ODBC

-
  • Linux下:

    驱动程序:openGauss-x.x-EULER-64bit-Odbc.tar.gz

    + @@ -32,3 +32,5 @@ 使用JDBC和ODBC接口连接数据库属远程连接,因此需要openGauss已经做了支持[远程连接的配置](配置服务端远程连接.md)。 +更多支持的应用程序接口详细信息请参考[应用程序开发教程](应用程序开发教程.md)。 + diff --git "a/content/zh/docs/Developerguide/\345\274\200\345\217\221\344\272\272\345\221\230\351\200\211\351\241\271.md" "b/content/zh/docs/Developerguide/\345\274\200\345\217\221\344\272\272\345\221\230\351\200\211\351\241\271.md" index e78e053f1fd69cfc33cc3d457f6d8a6b178c4064..57a5572647d462a484ca6c2a9d7dca2e1ba4ba64 100644 --- "a/content/zh/docs/Developerguide/\345\274\200\345\217\221\344\272\272\345\221\230\351\200\211\351\241\271.md" +++ "b/content/zh/docs/Developerguide/\345\274\200\345\217\221\344\272\272\345\221\230\351\200\211\351\241\271.md" @@ -102,7 +102,7 @@ 该参数属于BACKEND类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 -**取值范围:**整型,最小值为0,最大值为INT\_MAX/1000000,单位为秒。 +**取值范围:**整型,最小值为0,最大值为2147,单位为秒。 **默认值:**0 @@ -188,7 +188,7 @@ **参数说明**:该参数用于控制在特定的客户场景中,使用不同的估算方法使得估算值与真实值更接近。此参数可以同时控制多种方法,与某一方法对应的位做与操作,不为0表示该方法被选择。 -当cost\_param & 1 不为0,表示对于求不等值连接选择率时选择一种改良机制,此方法在自连接(两个相同的表之间连接)的估算中更加准确,V300R002C00版本开始,已弃用cost\_param & 1 不为0时的路径,默认选择更优的估算公式; +当cost\_param & 1 不为0,表示对于求不等值连接选择率时选择一种改良机制,此方法在自连接(两个相同的表之间连接)的估算中更加准确。目前,已弃用cost\_param & 1 不为0时的路径,默认选择更优的估算公式; 当cost\_param & 2 不为0,表示求多个过滤条件(Filter)的选择率时,选择最小的作为总的选择率,而非两者乘积,此方法在过滤条件的列之间关联性较强时估算更加准确; @@ -230,7 +230,7 @@ 该参数属于BACKEND类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 -**取值范围**:枚举类型,有效值有application,dbnode,gtm,gtmproxy,internaltool,gtmtool。 +**取值范围**:枚举类型,有效值有application,datanode,internaltool。 **默认值**:application @@ -354,6 +354,11 @@ set rewrite_rule=none; --关闭所有可选查询重写规则 **默认值:**ALL,on\(\),off\(LLVM\_COMPILE,HASH\_CONFLICT,STREAM\_DATA\_CHECK\),不开启任何定位功能。 +>![](public_sys-resources/icon-notice.gif) **须知:** +>设置时,选择开启或者关闭的选项请使用'on\(\)'或'off\(\)'包括,未被显示指定的功能选项会维持原来的值。参考格式: +>'on\(option1, option2, ...\)' +>'off\(ALL\)' + ## resource\_track\_log **参数说明**:控制自诊断的日志级别。目前仅对多列统计信息进行控制。 @@ -375,7 +380,7 @@ set rewrite_rule=none; --关闭所有可选查询重写规则 该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 -**取值范围:**整型,200\*1024~2147483647,单位为KB。 +**取值范围:**整型,200\*1024~max\_process\_memory,单位为KB。 **默认值:**200MB @@ -416,7 +421,7 @@ set rewrite_rule=none; --关闭所有可选查询重写规则 - 用户自定义参数(以–D开头,如–Duser.defined.option) >![](public_sys-resources/icon-notice.gif) **须知:** ->如果用户在pljava\_vmoptions中设置参数不满足上述取值范围,会在使用PL/Java语言函数时报错。 +>如果用户在pljava\_vmoptions中设置参数不满足上述取值范围,会在使用PL/Java语言函数时报错。此参数的详细说明参见[PL/pgSQL语言函数](PL-pgSQL语言函数.md)。 **默认值:**空 @@ -487,7 +492,7 @@ set rewrite_rule=none; --关闭所有可选查询重写规则 **取值范围**:整型,0\~256 (0表示关闭异步刷盘功能),单位页面(8K)。例如,取值64,表示backend线程连续写64个磁盘页,即64\*8=512KB磁盘空间后会进行异步刷盘。 -**默认值**:512KB(即64个页面) +**默认值**:0 ## enable\_parallel\_ddl diff --git "a/content/zh/docs/Developerguide/\345\274\200\345\217\221\346\265\201\347\250\213-1.md" "b/content/zh/docs/Developerguide/\345\274\200\345\217\221\346\265\201\347\250\213-1.md" new file mode 100644 index 0000000000000000000000000000000000000000..beb3357dcd9733805d6023fb894c68a91bc545ac --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\274\200\345\217\221\346\265\201\347\250\213-1.md" @@ -0,0 +1,104 @@ +# 开发流程 + +**图 1** ODBC开发应用程序的流程 +![](figures/ODBC开发应用程序的流程.png "ODBC开发应用程序的流程") + +## 开发流程中涉及的API + +**表 1** 相关API说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    功能

    +

    API

    +

    申请句柄资源

    +

    SQLAllocHandle:申请句柄资源,可替代如下函数:

    + +

    设置环境属性

    +

    SQLSetEnvAttr

    +

    设置连接属性

    +

    SQLSetConnectAttr

    +

    设置语句属性

    +

    SQLSetStmtAttr

    +

    连接数据源

    +

    SQLConnect

    +

    绑定缓冲区到结果集的列中

    +

    SQLBindCol

    +

    绑定SQL语句的参数标志和缓冲区

    +

    SQLBindParameter

    +

    查看最近一次操作错误信息

    +

    SQLGetDiagRec

    +

    为执行SQL语句做准备

    +

    SQLPrepare

    +

    执行一条准备好的SQL语句

    +

    SQLExecute

    +

    直接执行SQL语句

    +

    SQLExecDirect

    +

    结果集中取行集

    +

    SQLFetch

    +

    返回结果集中某一列的数据

    +

    SQLGetData

    +

    获取结果集中列的描述信息

    +

    SQLColAttribute

    +

    断开与数据源的连接

    +

    SQLDisconnect

    +

    释放句柄资源

    +

    SQLFreeHandle:释放句柄资源,可替代如下函数:

    + +
    + +>![](public_sys-resources/icon-note.gif) **说明:** +>数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,同时如果其中有一个语句失败,那么整个请求都将会被回滚。 + diff --git "a/content/zh/docs/Developerguide/\345\274\200\345\217\221\346\265\201\347\250\213.md" "b/content/zh/docs/Developerguide/\345\274\200\345\217\221\346\265\201\347\250\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..3fa67428fd0e27189e4bcd737bdb43192c08c28b --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\274\200\345\217\221\346\265\201\347\250\213.md" @@ -0,0 +1,5 @@ +# 开发流程 + +**图 1** 采用JDBC开发应用程序的流程 +![](figures/采用JDBC开发应用程序的流程.png "采用JDBC开发应用程序的流程") + diff --git "a/content/zh/docs/Developerguide/\345\274\200\345\217\221\350\247\204\350\214\203.md" "b/content/zh/docs/Developerguide/\345\274\200\345\217\221\350\247\204\350\214\203.md" new file mode 100644 index 0000000000000000000000000000000000000000..8eff5418521d9ad10d4062e81dd55e05dde8fcb4 --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\274\200\345\217\221\350\247\204\350\214\203.md" @@ -0,0 +1,9 @@ +# 开发规范 + +如果用户在APP的开发中,使用了连接池机制,那么需要遵循如下规范: + +- 如果在连接中设置了GUC参数,那么在将连接归还连接池之前,必须使用“SET SESSION AUTHORIZATION DEFAULT;RESET ALL;”将连接的状态清空。 +- 如果使用了临时表,那么在将连接归还连接池之前,必须将临时表删除。 + +否则,连接池里面的连接就是有状态的,会对用户后续使用连接池进行操作的正确性带来影响。 + diff --git "a/content/zh/docs/Developerguide/\345\276\252\347\216\257\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\345\276\252\347\216\257\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..7d934bcf42720955ca1783883fbf345b4b158e3b --- /dev/null +++ "b/content/zh/docs/Developerguide/\345\276\252\347\216\257\350\257\255\345\217\245.md" @@ -0,0 +1,131 @@ +# 循环语句 + +## 简单LOOP语句 + +**语法图** + +**图 1** loop::= +![](figures/loop.png "loop") + +**示例** + +``` +CREATE OR REPLACE PROCEDURE proc_loop(i in integer, count out integer) +AS + BEGIN + count:=0; + LOOP + IF count > i THEN + raise info 'count is %. ', count; + EXIT; + ELSE + count:=count+1; + END IF; + END LOOP; + END; +/ + +CALL proc_loop(10,5); +``` + +>![](public_sys-resources/icon-notice.gif) **须知:** +>该循环必须要结合EXIT使用,否则将陷入死循环。 + +## WHILE\_LOOP语句 + +**语法图** + +**图 2** while\_loop::= +![](figures/while_loop.png "while_loop") + +只要条件表达式为真,WHILE语句就会不停的在一系列语句上进行循环,在每次进入循环体的时候进行条件判断。 + +**示例** + +``` +CREATE TABLE integertable(c1 integer) ; +CREATE OR REPLACE PROCEDURE proc_while_loop(maxval in integer) +AS + DECLARE + i int :=1; + BEGIN + WHILE i < maxval LOOP + INSERT INTO integertable VALUES(i); + i:=i+1; + END LOOP; + END; +/ + +--调用函数 +CALL proc_while_loop(10); + +--删除存储过程和表 +DROP PROCEDURE proc_while_loop; +DROP TABLE integertable; +``` + +## FOR\_LOOP(integer变量)语句 + +**语法图** + +**图 3** for\_loop::= +![](figures/for_loop.png "for_loop") + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 变量name会自动定义为integer类型并且只在此循环里存在。变量name介于lower\_bound和upper\_bound之间。 +>- 当使用REVERSE关键字时,lower\_bound必须大于等于upper\_bound,否则循环体不会被执行。 + +## FOR\_LOOP查询语句 + +**语法图** + +**图 4** for\_loop\_query::= +![](figures/for_loop_query.png "for_loop_query") + +>![](public_sys-resources/icon-note.gif) **说明:** +>变量target会自动定义,类型和query的查询结果的类型一致,并且只在此循环中有效。target的取值就是query的查询结果。 + +## FORALL批量查询语句 + +**语法图** + +**图 5** forall::= +![](figures/forall.png "forall") + +>![](public_sys-resources/icon-note.gif) **说明:** +>变量index会自动定义为integer类型并且只在此循环里存在。index的取值介于low\_bound和upper\_bound之间。 + +**示例** + +``` +CREATE TABLE hdfs_t1 ( + title NUMBER(6), + did VARCHAR2(20), + data_peroid VARCHAR2(25), + kind VARCHAR2(25), + interval VARCHAR2(20), + time DATE, + isModified VARCHAR2(10) +) + +INSERT INTO hdfs_t1 VALUES( 8, 'Donald', 'OConnell', 'DOCONNEL', '650.507.9833', to_date('21-06-1999', 'dd-mm-yyyy'), 'SH_CLERK' ); + +CREATE OR REPLACE PROCEDURE proc_forall() +AS +BEGIN + FORALL i IN 100..120 + update hdfs_t1 set title = title + 100*i; +END; +/ + +--调用函数 +CALL proc_forall(); + +--查询存储过程调用结果 +SELECT * FROM hdfs_t1 WHERE title BETWEEN 100 AND 120; + +--删除存储过程和表 +DROP PROCEDURE proc_forall; +DROP TABLE hdfs_t1; +``` + diff --git "a/content/zh/docs/Developerguide/\346\200\247\350\203\275\347\273\237\350\256\241.md" "b/content/zh/docs/Developerguide/\346\200\247\350\203\275\347\273\237\350\256\241.md" index 938daed50fbee9ff8cd67a7042caaaa15f5fc036..6b36863b04a7cc3b1ee174f2f3c910f6bbee4d9f 100644 --- "a/content/zh/docs/Developerguide/\346\200\247\350\203\275\347\273\237\350\256\241.md" +++ "b/content/zh/docs/Developerguide/\346\200\247\350\203\275\347\273\237\350\256\241.md" @@ -24,5 +24,5 @@ - on表示开启记录性能统计数据的功能。 - off表示关闭记录性能统计数据的功能。 -**默认值:on** +**默认值:off** diff --git "a/content/zh/docs/Developerguide/\346\200\247\350\203\275\350\260\203\344\274\230.md" "b/content/zh/docs/Developerguide/\346\200\247\350\203\275\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..adac1f131aa6de1c4ab40f56bc11c507bfec4560 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\200\247\350\203\275\350\260\203\344\274\230.md" @@ -0,0 +1,11 @@ +# 性能调优 + +- **[总体调优思路](总体调优思路.md)** +openGauss的总体性能调优思路为性能瓶颈点分析、关键参数调整以及SQL调优。在调优过程中,通过系统资源、吞吐量、负载等因素来帮助定位和分析性能问题,使系统性能达到可接受的范围。 +- **[确定性能调优范围](确定性能调优范围.md)** + +- **[系统调优指南](系统调优指南.md)** + +- **[SQL调优指南](SQL调优指南.md)** + + diff --git "a/content/zh/docs/Developerguide/\346\200\273\344\275\223\350\260\203\344\274\230\346\200\235\350\267\257.md" "b/content/zh/docs/Developerguide/\346\200\273\344\275\223\350\260\203\344\274\230\346\200\235\350\267\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..29d96812f251c7035b09ef8625e3b67ce5a6adbc --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\200\273\344\275\223\350\260\203\344\274\230\346\200\235\350\267\257.md" @@ -0,0 +1,46 @@ +# 总体调优思路 + +openGauss的总体性能调优思路为性能瓶颈点分析、关键参数调整以及SQL调优。在调优过程中,通过系统资源、吞吐量、负载等因素来帮助定位和分析性能问题,使系统性能达到可接受的范围。 + +openGauss性能调优过程需要综合考虑多方面因素,因此,调优人员应对系统软件架构、软硬件配置、数据库配置参数、并发控制、查询处理和数据库应用有广泛而深刻的理解。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>性能调优过程有时候需要重启openGauss,可能会中断当前业务。因此,业务上线后,当性能调优操作需要重启openGauss时,操作窗口时间需向管理部门提出申请,经批准后方可执行。 + +## 调优流程 + +调优流程如[图1](#zh-cn_topic_0237121483_zh-cn_topic_0073253541_zh-cn_topic_0040046511_fig52278782113544)所示。 + +**图 1** openGauss性能调优流程 +![](figures/openGauss性能调优流程.png "openGauss性能调优流程") + +调优各阶段说明,如[表1](#zh-cn_topic_0237121483_zh-cn_topic_0073253541_zh-cn_topic_0040046511_table18747316113544)所示。 + +**表 1** openGauss性能调优流程说明 + + + + + + + + + + + + + + + + +

    阶段

    +

    描述

    +

    确定性能调优范围

    +

    获取openGauss节点的CPU、内存、I/O和网络资源使用情况,确认这些资源是否已被充分利用,是否存在瓶颈点。

    +

    系统调优指南

    +

    进行操作系统级以及数据库系统级的调优,更充分地利用机器的CPU、内存、I/O和网络资源,避免资源冲突,提升整个系统查询的吞吐量。

    +

    系统调优指南

    +

    审视业务所用SQL语句是否存在可优化空间,包括:

    +
    • 通过ANALYZE语句生成表统计信息:ANALYZE语句可收集与数据库中表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。
    • 分析执行计划:EXPLAIN语句可显示SQL语句的执行计划,EXPLAIN PERFORMANCE语句可显示SQL语句中各算子的执行时间。
    • 查找问题根因并进行调优:通过分析执行计划,找到可能存在的原因,进行针对性的调优,通常为调整数据库级SQL调优参数。
    • 编写更优的SQL:介绍一些复杂查询中的中间临时数据缓存、结果集缓存、结果集合并等场景中的更优SQL语法。
    +
    + diff --git "a/content/zh/docs/Developerguide/\346\211\247\350\241\214SQL\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\346\211\247\350\241\214SQL\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..91678778f5f5b16635376aef148a5e197367a769 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\211\247\350\241\214SQL\350\257\255\345\217\245.md" @@ -0,0 +1,162 @@ +# 执行SQL语句 + +## 执行普通SQL语句 + +应用程序通过执行SQL语句来操作数据库的数据(不用传递参数的语句),需要按以下步骤执行: + +1. 调用Connection的createStatement方法创建语句对象。 + + ``` + Connection conn = null; + Statement stmt = conn.createStatement(); + ``` + +2. 调用Statement的executeUpdate方法执行SQL语句。 + + ``` + int rc = stmt.executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));"); + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,事务块中不支持vacuum操作。如果其中有一个语句失败,那么整个请求都将会被回滚。 + +3. 关闭语句对象。 + + ``` + stmt.close(); + ``` + + +## 执行预编译SQL语句 + +预编译语句是只编译和优化一次,然后可以通过设置不同的参数值多次使用。由于已经预先编译好,后续使用会减少执行时间。因此,如果多次执行一条语句,请选择使用预编译语句。可以按以下步骤执行: + +1. 调用Connection的prepareStatement方法创建预编译语句对象。 + + ``` + PreparedStatement pstmt = con.prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1"); + ``` + +2. 调用PreparedStatement的setShort设置参数。 + + ``` + pstmt.setShort(1, (short)2); + ``` + +3. 调用PreparedStatement的executeUpdate方法执行预编译SQL语句。 + + ``` + int rowcount = pstmt.executeUpdate(); + ``` + +4. 调用PreparedStatement的close方法关闭预编译语句对象。 + + ``` + pstmt.close(); + ``` + + +## 调用存储过程 + +openGauss支持通过JDBC直接调用事先创建的存储过程,步骤如下: + +1. 调用Connection的prepareCall方法创建调用语句对象。 + + ``` + Connection myConn = null; + CallableStatement cstmt = myConn.prepareCall("{? = CALL TESTPROC(?,?,?)}"); + ``` + +2. 调用CallableStatement的setInt方法设置参数。 + + ``` + cstmt.setInt(2, 50); + cstmt.setInt(1, 20); + cstmt.setInt(3, 90); + ``` + +3. 调用CallableStatement的registerOutParameter方法注册输出参数。 + + ``` + cstmt.registerOutParameter(4, Types.INTEGER); //注册out类型的参数,类型为整型。 + ``` + +4. 调用CallableStatement的execute执行方法调用。 + + ``` + cstmt.execute(); + ``` + +5. 调用CallableStatement的getInt方法获取输出参数。 + + ``` + int out = cstmt.getInt(4); //获取out参数 + ``` + + 示例: + + ``` + //在数据库中已创建了如下存储过程,它带有out参数。 + create or replace procedure testproc + ( + psv_in1 in integer, + psv_in2 in integer, + psv_inout in out integer + ) + as + begin + psv_inout := psv_in1 + psv_in2 + psv_inout; + end; + / + ``` + +6. 调用CallableStatement的close方法关闭调用语句。 + + ``` + cstmt.close(); + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 很多的数据库类如Connection、Statement和ResultSet都有close\(\)方法,在使用完对象后应把它们关闭。要注意的是,Connection的关闭将间接关闭所有与它关联的Statement,Statement的关闭间接关闭了ResultSet。 + >- 一些JDBC驱动程序还提供命名参数的方法来设置参数。命名参数的方法允许根据名称而不是顺序来设置参数,若参数有默认值,则可以不用指定参数值就可以使用此参数的默认值。即使存储过程中参数的顺序发生了变更,也不必修改应用程序。目前openGauss数据库的JDBC驱动程序不支持此方法。 + >- openGauss数据库不支持带有输出参数的函数,也不支持存储过程和函数参数默认值。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 当游标作为存储过程的返回值时,如果使用JDBC调用该存储过程,返回的游标将不可用。 + >- 存储过程不能和普通SQL在同一条语句中执行。 + + +## 执行批处理 + +用一条预处理语句处理多条相似的数据,数据库只创建一次执行计划,节省了语句的编译和优化时间。可以按如下步骤执行: + +1. 调用Connection的prepareStatement方法创建预编译语句对象。 + + ``` + Connection conn = null; + PreparedStatement pstmt = conn.prepareStatement("INSERT INTO customer_t1 VALUES (?)"); + ``` + +2. 针对每条数据都要调用setShort设置参数,以及调用addBatch确认该条设置完毕。 + + ``` + pstmt.setShort(1, (short)2); + pstmt.addBatch(); + ``` + +3. 调用PreparedStatement的executeBatch方法执行批处理。 + + ``` + int[] rowcount = pstmt.executeBatch(); + ``` + +4. 调用PreparedStatement的close方法关闭预编译语句对象。 + + ``` + pstmt.close(); + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >在实际的批处理过程中,通常不终止批处理程序的执行,否则会降低数据库的性能。因此在批处理程序时,应该关闭自动提交功能,每几行提交一次。关闭自动提交功能的语句为: conn.setAutoCommit\(false\); + + diff --git "a/content/zh/docs/Developerguide/\346\211\247\350\241\214\345\212\250\346\200\201\346\237\245\350\257\242\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\346\211\247\350\241\214\345\212\250\346\200\201\346\237\245\350\257\242\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..86b21e3e9e304b2408f07047ab484c10e99ab5cb --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\211\247\350\241\214\345\212\250\346\200\201\346\237\245\350\257\242\350\257\255\345\217\245.md" @@ -0,0 +1,50 @@ +# 执行动态查询语句 + +介绍执行动态查询语句。openGauss提供两种方式:使用EXECUTE IMMEDIATE、OPEN FOR实现动态查询。前者通过动态执行SELECT语句,后者结合了游标的使用。当需要将查询的结果保存在一个数据集用于提取时,可使用OPEN FOR实现动态查询。 + +## EXECUTE IMMEDIATE + +语法图请参见[图1](#zh-cn_topic_0237122225_zh-cn_topic_0059778916_f67de6df4c6ef4404b41f0f30de36ee64)。 + +**图 1** EXECUTE IMMEDIATE dynamic\_select\_clause::= +![](figures/EXECUTE-IMMEDIATE-dynamic_select_clause.png "EXECUTE-IMMEDIATE-dynamic_select_clause") + +using\_clause子句的语法图参见[图2](#zh-cn_topic_0237122225_zh-cn_topic_0059778916_fcfce5c125aec449ba3ce27eec6f7a82b)。 + +**图 2** using\_clause::= +![](figures/using_clause.png "using_clause") + +对以上语法格式的解释如下: + +- define\_variable:用于指定存放单行查询结果的变量。 +- USING IN bind\_argument:用于指定存放传递给动态SQL值的变量,即在dynamic\_select\_string中存在占位符时使用。 +- USING OUT bind\_argument:用于指定存放动态SQL返回值的变量。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >- 查询语句中,into和out不能同时存在; + >- 占位符命名以“:”开始,后面可跟数字、字符或字符串,与USING子句的bind\_argument一一对应; + >- bind\_argument只能是值、变量或表达式,不能是表名、列名、数据类型等数据库对象,即不支持使用bind\_argument为动态SQL语句传递模式对象。如果存储过程需要通过声明参数传递数据库对象来构造动态SQL语句(常见于执行DDL语句时),建议采用连接运算符“||”拼接dynamic\_select\_clause; + >- 动态PL/SQL块允许出现重复的占位符,即相同占位符只能与USING子句的一个bind\_argument按位置对应。 + + +``` + +``` + +## OPEN FOR + +动态查询语句还可以使用OPEN FOR打开动态游标来执行。 + +语法参见[图3](#zh-cn_topic_0237122225_zh-cn_topic_0059778916_f3f108da94a694175ac707f4511b7f1a1)。 + +**图 3** open\_for::= +![](figures/open_for.png "open_for") + +参数说明: + +- cursor\_name:要打开的游标名。 +- dynamic\_string:动态查询语句。 +- USING value:在dynamic\_string中存在占位符时使用。 + +游标的使用请参考[游标](游标.md)。 + diff --git "a/content/zh/docs/Developerguide/\346\211\247\350\241\214\345\212\250\346\200\201\351\235\236\346\237\245\350\257\242\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\346\211\247\350\241\214\345\212\250\346\200\201\351\235\236\346\237\245\350\257\242\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..fb99ecd7f1207171c6c24e28b8f7d3dc104f4825 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\211\247\350\241\214\345\212\250\346\200\201\351\235\236\346\237\245\350\257\242\350\257\255\345\217\245.md" @@ -0,0 +1,56 @@ +# 执行动态非查询语句 + +## 语法 + +语法请参见[图1](#zh-cn_topic_0237122226_zh-cn_topic_0059777751_f039af8fc76c54a54b06d579e56b81232)。 + +**图 1** noselect::= +![](figures/noselect.png "noselect") + +using\_clause子句的语法参见[图2](#zh-cn_topic_0237122226_zh-cn_topic_0059777751_fa52bfbcefb174772a5bd22ca73c6a03a)。 + +**图 2** using\_clause::= +![](figures/using_clause-0.png "using_clause-0") + +对以上语法格式的解释如下: + +USING IN bind\_argument用于指定存放传递给动态SQL值的变量,在dynamic\_noselect\_string中存在占位符时使用,即动态SQL语句执行时,bind\_argument将替换相对应的占位符。要注意的是,bind\_argument只能是值、变量或表达式,不能是表名、列名、数据类型等数据库对象。如果存储过程需要通过声明参数传递数据库对象来构造动态SQL语句(常见于执行DDL语句时),建议采用连接运算符“||”拼接dynamic\_select\_clause。另外,动态语句允许出现重复的占位符,相同占位符只能与唯一一个bind\_argument按位置一一对应。 + +## 示例 + +``` +--创建表 +postgres=# CREATE TABLE sections_t1 +( + section NUMBER(4) , + section_name VARCHAR2(30), + manager_id NUMBER(6), + place_id NUMBER(4) +); + +--声明变量 +postgres=# DECLARE + section NUMBER(4) := 280; + section_name VARCHAR2(30) := 'Info support'; + manager_id NUMBER(6) := 103; + place_id NUMBER(4) := 1400; + new_colname VARCHAR2(10) := 'sec_name'; +BEGIN +--执行查询 + EXECUTE IMMEDIATE 'insert into sections_t1 values(:1, :2, :3, :4)' + USING section, section_name, manager_id,place_id; +--执行查询(重复占位符) + EXECUTE IMMEDIATE 'insert into sections_t1 values(:1, :2, :3, :1)' + USING section, section_name, manager_id; +--执行ALTER语句(建议采用“||”拼接数据库对象构造DDL语句) + EXECUTE IMMEDIATE 'alter table sections_t1 rename section_name to ' || new_colname; +END; +/ + +--查询数据 +postgres=# SELECT * FROM sections_t1; + +--删除表 +postgres=# DROP TABLE sections_t1; +``` + diff --git "a/content/zh/docs/Developerguide/\346\211\251\345\261\225\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\346\211\251\345\261\225\345\207\275\346\225\260.md" index d50254e81172e670604a22fd4a2f5f5e27fe287d..46f64501ec2f05ead5bfc3caa5ada6f903eea02d 100644 --- "a/content/zh/docs/Developerguide/\346\211\251\345\261\225\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\346\211\251\345\261\225\345\207\275\346\225\260.md" @@ -1,9 +1,5 @@ # 扩展函数 -openGauss针对扩展数据类型,提供了一些对应的操作函数。这些操作函数依赖于扩展数据类型,目前处于Beta阶段,可能在功能上存在不稳定性,或者在后续版本发生变更。请在商用业务场景下谨慎使用,以免对正式业务系统的升级、扩容等方面产生不利影响。 - -该部分内容由GUC参数support\_extended\_features控制,请参见[support\_extended\_features](平台和客户端兼容性.md#zh-cn_topic_0237124738_zh-cn_topic_0059779195_s1b60ec6dbc79490bbadf5dd62ba2538c)进行配置。 - 下表列举了openGauss中支持的扩展函数,不作为商用特性交付,仅供参考。 diff --git "a/content/zh/docs/Developerguide/\346\211\251\345\261\225\350\257\255\346\263\225.md" "b/content/zh/docs/Developerguide/\346\211\251\345\261\225\350\257\255\346\263\225.md" index 6d0368cfab529ef456c4091491aa7e7cd9b34331..7688aefca5353f338189a4aab5f702e0903c98c3 100644 --- "a/content/zh/docs/Developerguide/\346\211\251\345\261\225\350\257\255\346\263\225.md" +++ "b/content/zh/docs/Developerguide/\346\211\251\345\261\225\350\257\255\346\263\225.md" @@ -15,23 +15,13 @@ openGauss提供了一些扩展语法,目前处于Beta阶段,仅供内部使 -   +

    创建表(CREATE TABLE)

    +

    INHERITS ( parent_table [, ... ] )

    是否支持继承表。

    -

    TO { GROUP groupname | NODE ( nodename [, ... ] ) }

    - -

    是否支持用TO NODE/GROUP指定表数据将要分布的数据节点列表。

    - - -

    column_constraint:

    -

    REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ][ ON DELETE action ] [ ON UPDATE action ]

    - -

    是否支持用REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] 为表创建外键约束。

    - -

    table_constraint:

    EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ] | FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]

    [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ]

    @@ -188,19 +178,6 @@ openGauss提供了一些扩展语法,目前处于Beta阶段,仅供内部使

    删除排序规则。

    -

    规则

    - -

    CREATE RULE

    - -

    创建规则。

    -

    规则是在指定表上执行指定动作的时候,将执行一些额外的动作。

    - - -

    DROP RULE

    - -

    删除规则。

    - -

    生成一个通知

    NOTIFY

    diff --git "a/content/zh/docs/Developerguide/\346\216\247\345\210\266\346\226\207\346\234\254\346\220\234\347\264\242.md" "b/content/zh/docs/Developerguide/\346\216\247\345\210\266\346\226\207\346\234\254\346\220\234\347\264\242.md" index 76bef3f61ecabeb7d8ac7943a87fc441c5482f39..d933f59b98017d95ddf747408f7c98de7fb78c97 100644 --- "a/content/zh/docs/Developerguide/\346\216\247\345\210\266\346\226\207\346\234\254\346\220\234\347\264\242.md" +++ "b/content/zh/docs/Developerguide/\346\216\247\345\210\266\346\226\207\346\234\254\346\220\234\347\264\242.md" @@ -1,7 +1,5 @@ # 控制文本搜索 -为了执行全文搜索,必须有个函数创建来自文档的tsvector和来自用户查询的tsquery。同时,为了以有效的顺序返回结果,需要一个函数对比文档的查询相关性。同时,能很好地显示结果也是很重要的。openGauss支持所有这些函数。 - - **[解析文档](解析文档.md)** - **[解析查询](解析查询.md)** diff --git "a/content/zh/docs/Developerguide/\346\216\247\345\210\266\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\346\216\247\345\210\266\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..5e25628e09ea9da525b24a18330e9f7125837de7 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\216\247\345\210\266\350\257\255\345\217\245.md" @@ -0,0 +1,17 @@ +# 控制语句 + +- **[返回语句](返回语句.md)** + +- **[条件语句](条件语句.md)** + +- **[循环语句](循环语句.md)** + +- **[分支语句](分支语句.md)** + +- **[空语句](空语句.md)** + +- **[错误捕获语句](错误捕获语句.md)** + +- **[GOTO语句](GOTO语句.md)** + + diff --git "a/content/zh/docs/Developerguide/\346\223\215\344\275\234\345\256\241\350\256\241.md" "b/content/zh/docs/Developerguide/\346\223\215\344\275\234\345\256\241\350\256\241.md" index 9b16902099d3fe078517d92045693a37774db6a7..d0bf75353323d92800768a084e61a37456aefd3f 100644 --- "a/content/zh/docs/Developerguide/\346\223\215\344\275\234\345\256\241\350\256\241.md" +++ "b/content/zh/docs/Developerguide/\346\223\215\344\275\234\345\256\241\350\256\241.md" @@ -6,14 +6,14 @@ 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 -**取值范围:**整型,0~262143 +**取值范围:**整型,0~524287 - 0代表关闭openGauss数据库对象的CREATE、DROP、ALTER操作审计功能。 - 非0代表只审计openGauss的某类或者某些数据库对象的CREATE、DROP、ALTER操作。 **取值说明**: -该参数的值由18个二进制位的组合求出,这18个二进制位分别代表openGauss的18类数据库对象。如果对应的二进制位取值为0,表示不审计对应的数据库对象的CREATE、DROP、ALTER操作;取值为1,表示审计对应的数据库对象的CREATE、DROP、ALTER操作。这18个二进制位代表的具体审计内容请参见[表1](#zh-cn_topic_0237124747_zh-cn_topic_0059777487_zh-cn_topic_0058967566_table53712060)。 +该参数的值由19个二进制位的组合求出,这19个二进制位分别代表openGauss的19类数据库对象。如果对应的二进制位取值为0,表示不审计对应的数据库对象的CREATE、DROP、ALTER操作;取值为1,表示审计对应的数据库对象的CREATE、DROP、ALTER操作。这19个二进制位代表的具体审计内容请参见[表1](#zh-cn_topic_0237124747_zh-cn_topic_0059777487_zh-cn_topic_0058967566_table53712060)。 **默认值:**12295 @@ -239,14 +239,14 @@ **取值范围:**枚举型 -- A表示同a db兼容。 -- TD表示同Teradata兼容。 -- MYSQL表示同MySQL兼容。 +- A表示同A数据库兼容。 +- B表示同B数据库兼容。 +- C表示同C数据库兼容。 -**默认值:**MYSQL +**默认值:**A >![](public_sys-resources/icon-notice.gif) **须知:** ->在数据库中,该参数只能是确定的一个值,要么始终设置为ORA,要么始终设置为TD,不能随便改动,否则会导致数据库行为不一致。 +>在数据库中,该参数只能是确定的一个值,要么始终设置为A,要么始终设置为B,不能随便改动,否则会导致数据库行为不一致。 ## enableSeparationOfDuty @@ -304,7 +304,6 @@ **默认值:**off >![](public_sys-resources/icon-notice.gif) **须知:** ->用户在使用高级包UTL\_FILE访问服务器端文件时,要求必须拥有所指定的DIRECTORY对象的权限。 ->出于安全考虑,默认情况下,只有初始用户才能够创建、删除DIRECTORY对象。 ->如果开启了enable\_access\_server\_directory,那么在三权分立关闭时,系统管理员(包括初始用户)可以创建、删除DIRECTORY对象;而在三权分立开启时,只有初始用户可以创建、删除DIRECTORY对象。 +>- 出于安全考虑,默认情况下,只有初始用户才能够创建、删除DIRECTORY对象。 +>- 如果开启了enable\_access\_server\_directory,那么在三权分立关闭时,系统管理员(包括初始用户)可以创建、删除DIRECTORY对象;而在三权分立开启时,只有初始用户可以创建、删除DIRECTORY对象。 diff --git "a/content/zh/docs/Developerguide/\346\223\215\344\275\234\347\254\246.md" "b/content/zh/docs/Developerguide/\346\223\215\344\275\234\347\254\246.md" index 2f924781fb0372729ac4b11e6d011a94982b17a9..55c79df90fe38f472130a1d062a8e209758c3e31 100644 --- "a/content/zh/docs/Developerguide/\346\223\215\344\275\234\347\254\246.md" +++ "b/content/zh/docs/Developerguide/\346\223\215\344\275\234\347\254\246.md" @@ -78,5 +78,5 @@ postgres=# SELECT array[1,2] <@ '{1,2,3}' as "is subset"; ``` >![](public_sys-resources/icon-note.gif) **说明:** ->openGauss操作符表有几条记录对应于中缀操作符<@,但是只有两个可以在左侧接受一个整数数组的操作符是数组包含\(anyarray <@ anyarray\) 和范围包含\(anyelement <@ anyrange\)的。因为没有多态的伪类型\(参阅[伪类型](伪类型.md#ZH-CN_TOPIC_0242370425)\)是首选的,所以解析器不能解决这个基础上的歧义。然而,最后一个解析规则告诉用户,假设未知类型的文字是和另外一个输入相同的类型,也就是,整数数组。现在只有两个操作符中的一个可以匹配,所以选择数组包含。(如果用户选择了范围包含,用户将得到一个错误,因为字符串没有正确的格式成为范围的文字。) +>openGauss操作符表有几条记录对应于中缀操作符<@,但是只有两个可以在左侧接受一个整数数组的操作符是数组包含\(anyarray <@ anyarray\) 和范围包含\(anyelement <@ anyrange\)的。因为没有多态的伪类型\(参阅[伪类型](伪类型.md)\)是首选的,所以解析器不能解决这个基础上的歧义。然而,最后一个解析规则告诉用户,假设未知类型的文字是和另外一个输入相同的类型,也就是,整数数组。现在只有两个操作符中的一个可以匹配,所以选择数组包含。(如果用户选择了范围包含,用户将得到一个错误,因为字符串没有正确的格式成为范围的文字。) diff --git "a/content/zh/docs/Developerguide/\346\223\215\344\275\234\347\263\273\347\273\237\345\217\202\346\225\260\350\260\203\344\274\230.md" "b/content/zh/docs/Developerguide/\346\223\215\344\275\234\347\263\273\347\273\237\345\217\202\346\225\260\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..ab956e0fed171a4717f60191da8489710cd6b2f3 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\223\215\344\275\234\347\263\273\347\273\237\345\217\202\346\225\260\350\260\203\344\274\230.md" @@ -0,0 +1,152 @@ +# 操作系统参数调优 + +在性能调优过程中,可以根据实际业务情况修改关键操作系统\(OS\)配置参数,以提升openGauss数据库的性能。 + +## 前提条件 + +需要用户使用gs\_check检查操作系统参数结果是否和建议值保持一致,如果不一致,用户可根据实际业务情况去手动修改。 + +## 内存相关参数设置 + +配置“sysctl.conf”文件,修改内存相关参数vm.extfrag\_threshold为1000(参考值),如果文件中没有内存相关参数,可以手动添加。 + +``` +vim /etc/sysctl.conf +``` + +修改完成后,请执行如下命令,使参数生效。 + +``` +sysctl -p +``` + +## 网络相关参数设置 + +- 配置“sysctl.conf”文件,修改网络相关参数,如果文件中没有网络相关参数,可以手动添加。详细说明请参见[表1](#zh-cn_topic_0237121493_zh-cn_topic_0073253550_zh-cn_topic_0040046482_table5597039720233)。 + + ``` + vim /etc/sysctl.conf + ``` + + 在修改完成后,请执行如下命令,使参数生效。 + + ``` + sysctl -p + ``` + + **表 1** 网络相关参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    参数名

    +

    参考值

    +

    说明

    +

    net.ipv4.tcp_timestamps

    +

    1

    +

    表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭,1表示打开。

    +

    net.ipv4.tcp_mem

    +

    94500000 915000000 927000000

    +

    第一个数字表示,当tcp使用的page少于 94500000 时,kernel不对其进行任何的干预。

    +

    第二个数字表示,当tcp使用的page超过 915000000 时,kernel会进入“memory pressure”压力模式。

    +

    第三个数字表示,当tcp使用的pages超过 927000000 时,就会报:Out of socket memory。

    +

    net.ipv4.tcp_max_orphans

    +

    3276800

    +

    最大孤儿套接字(orphan sockets)数。

    +

    net.ipv4.tcp_fin_timeout

    +

    60

    +

    表示系統默认的TIMEOUT时间。

    +

    net.ipv4.ip_local_port_range

    +

    26000 65535

    +

    TCP和UDP能够使用的port段。

    +
    + +- 设置10GE网卡最大传输单元(MTU),使用ifconfig命令设置。10GE网卡推荐设置为8192,可提升网络带宽利用率。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >在数据库节点配置参数设置comm\_tcp\_mode=false时,一定要保证各个openGauss的MTU大小相等,否则可能有通信问题。 + + 示例: + + ``` + #ifconfig ethx mtu 8192 + #ifconfig ethx + ethx Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX + inet addr:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.xxx Mask:xxx.xxx.xxx.0 + inet6 addr: fxxx::9xxx:bxxx:xxxa:1d18/64 Scope:Link + UP BROADCAST RUNNING MULTICAST MTU:8192 Metric:1 + RX packets:179849803 errors:0 dropped:0 overruns:0 frame:0 + TX packets:40492292 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:17952090386 (17120.4 Mb) TX bytes:171359670290 (163421.3 Mb) + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- ethx为10GE数据库内部使用的业务网卡。 + >- 第一条命令设置MTU,第二条命令验证是否设置成功,粗体部分为MTU的值。 + >- 需使用root用户设置。 + +- 设置10GE网卡接收\(rx\)、发送队列\(tx\)长度,使用ethtool工具设置。10GE网卡推荐设置为4096,可提升网络带宽利用率。 + + 示例: + + ``` + # ethtool -G ethx rx 4096 tx 4096 + # ethtool -g ethx + Ring parameters for ethx: + Pre-set maximums: + RX: 4096 + RX Mini: 0 + RX Jumbo: 0 + TX: 4096 + Current hardware settings: + RX: 4096 + RX Mini: 0 + RX Jumbo: 0 + TX: 4096 + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >- ethx为10GE数据库内部使用的业务网卡。 + >- 第一条命令设置网卡接收、发送队列长度,第二条命令验证是否设置成功,示例的输出表示设置成功。 + >- 需使用root用户设置。 + + +## I/O相关参数设置 + +设置hugepage属性。在“/boot/grub/menu.lst”文件中第一个kernel行里追加下面参数,来关闭透明大页。 + +``` +transparent_hugepage=never +``` + +修改完成后,请执行如下命令,使参数生效。 + +``` +reboot +``` + diff --git "a/content/zh/docs/Developerguide/\346\225\260\345\200\274\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/\346\225\260\345\200\274\347\261\273\345\236\213.md" index 21f95a6b95df35248926795d4abd9fcbbea1ff47..41631533ffe461818229cfbc5f25eb2b92d91e12 100644 --- "a/content/zh/docs/Developerguide/\346\225\260\345\200\274\347\261\273\345\236\213.md" +++ "b/content/zh/docs/Developerguide/\346\225\260\345\200\274\347\261\273\345\236\213.md" @@ -44,7 +44,7 @@

    BINARY_INTEGER

    -

    常用的整数INTEGER的别名,为兼容A类型。

    +

    常用的整数INTEGER的别名。

    4字节

    @@ -57,7 +57,7 @@

    8字节

    -

    -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807

    +

    -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807

    @@ -142,7 +142,7 @@ postgres=# DROP TABLE int_type_t2;

    NUMBER[(p[,s])]

    -

    NUMERIC类型的别名,为兼容A数据类型。

    +

    NUMERIC类型的别名。

    用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。

    @@ -355,7 +355,7 @@ postgres=# DROP TABLE bigserial_type_tab;

    BINARY_DOUBLE

    -

    是DOUBLE PRECISION的别名,为兼容A类型。

    +

    是DOUBLE PRECISION的别名。

    8字节

    diff --git "a/content/zh/docs/Developerguide/\346\225\260\345\255\227\346\223\215\344\275\234\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" "b/content/zh/docs/Developerguide/\346\225\260\345\255\227\346\223\215\344\275\234\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" index 706aadb9194bf065b74b8c42d44d30697de52055..5bccf2b2610fceb143b1febaa1f20ff42afc7e91 100644 --- "a/content/zh/docs/Developerguide/\346\225\260\345\255\227\346\223\215\344\275\234\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" +++ "b/content/zh/docs/Developerguide/\346\225\260\345\255\227\346\223\215\344\275\234\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" @@ -587,11 +587,7 @@ - mod\(x,y\) - 描述: - - x/y的余数(模) - - 如果x是0,则返回y。 + 描述:x/y的余数(模)。如果x是0,则返回0。 返回值类型:与参数类型相同。 diff --git "a/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\344\275\277\347\224\250.md" "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\344\275\277\347\224\250.md" index 870831adedcfdd5175abe6ea50f3029f3c2e77bb..e34896dcba8794cb37c658791f5d72b9b24d289f 100644 --- "a/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\344\275\277\347\224\250.md" +++ "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\344\275\277\347\224\250.md" @@ -16,6 +16,4 @@ - **[其他操作](其他操作.md)** -- **[附录](附录.md)** - diff --git "a/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\345\206\205\345\255\230\345\217\202\346\225\260\350\260\203\344\274\230.md" "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\345\206\205\345\255\230\345\217\202\346\225\260\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..c03001b167acd9abd499e921a501ca68646d8f10 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\345\206\205\345\255\230\345\217\202\346\225\260\350\260\203\344\274\230.md" @@ -0,0 +1,26 @@ +# 数据库内存参数调优 + +数据库的复杂查询语句性能非常强的依赖于数据库系统内存的配置参数。数据库系统内存的配置参数主要包括逻辑内存管理的控制参数和执行算子是否下盘的参数。 + +## 逻辑内存管理参数 + +逻辑内存管理参数为max\_process\_memory,主要功能是控制数据库节点上可用内存的最大峰值,该参数的数值设置公式参考[max\_process\_memory](内存-21.md#zh-cn_topic_0237124699_zh-cn_topic_0059777577_sbebcee7acf2042dc8824982f22a2b4a8)。 + +执行作业最终可用的内存为: + +max\_process\_memory – shared memory \( 包括shared\_buffers \) – cstore\_buffers + +所以影响执行作业可用内存参数的主要两个参数为shared\_buffers及cstore\_buffers。 + +逻辑内存管理有专门的视图查询数据库节点中各大块内存区域已使用内存及峰值信息。可连接到单个数据库节点,通过“pg\_total\_memory\_detail”查询该节点上内存区域信息;或者连接到数据库主节点,通过“pgxc\_total\_memory\_detail”查询节点上内存区域信息。 + +参数work\_mem依据查询特点和并发来确定,一旦work\_mem限定的物理内存不够,算子运算数据将写入临时表空间,带来5-10倍的性能下降,查询响应时间从秒级下降到分钟级。 + +- 对于串行无并发的复杂查询场景,平均每个查询有5-10关联操作,建议work\_mem=50%内存/10。 +- 对于串行无并发的简单查询场景,平均每个查询有2-5个关联操作,建议work\_mem=50%内存/5。 +- 对于并发场景,建议work\_mem=串行下的work\_mem/物理并发数。 + +## 执行算子是否下盘的参数 + +参数work\_mem可以判断执行作业可下盘算子是否已使用内存量触发下盘点。当前可下盘算子有六类(向量化及非向量化共10种):Hash\(VecHashJoin\),Agg\(VecAgg\),Sort\(VecSort\),Material\(VecMaterial\),SetOp\(VecSetOp\),WindowAgg\(VecWindowAgg\)。该参数设置通常是一个权衡,即要保证并发的吞吐量,又要保证单查询作业的性能,故需要根据实际执行情况(结合Explain Performance输出)进行调优。 + diff --git "a/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\345\271\266\345\217\221\351\230\237\345\210\227\345\217\202\346\225\260\350\260\203\344\274\230.md" "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\345\271\266\345\217\221\351\230\237\345\210\227\345\217\202\346\225\260\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..14bb26ec0ff847212a9b0e951ded20a3bb5e4f6c --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\345\271\266\345\217\221\351\230\237\345\210\227\345\217\202\346\225\260\350\260\203\344\274\230.md" @@ -0,0 +1,20 @@ +# 数据库并发队列参数调优 + +数据库提供两种手段进行并发队列的控制,全局并发队列和局部并发队列。 + +## 全局并发队列 + +全局并发队列采用GUC参数max\_active\_statements控制数据库主节点上运行并发执行的作业数量。采用全局并发队列机制将控制所有普通用户的执行作业,不区分复杂度,即执行语句都将作为一个执行单元,当并发执行的作业数量达到此参数阈值时,将进入队列等待。对于管理员执行的作业,不走全局并发控制逻辑。 + +设置该GUC参数数值时,需要考虑系统的承受能力,主要关注内存的使用情况及IO的使用情况,综合判断。若普通用户关联资源池,并且资源池中的优先级比例不同,全局并发队列在数据库内部将使用两维队列,即优先级高低排队和同一优先级进行排队。在唤醒时,将优先唤醒高优先级队列的作业。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 在事务类大并发业务场景下,参数max\_active\_statements建议设置为-1,即不限制全局并发数。 +>- 在分析类查询的场景下,参数max\_active\_statements的值设置为CPU的核数除以数据库节点个数,一般可以设置5\~8个。 + +## 局部并发队列 + +采用资源池局部并发控制机制的目的是控制在数据库主节点上同一资源池内的并发作业数量。局部并发控制机制根据执行作业的cost,控制复杂查询的并发作业数量。 + +参数parctl\_min\_cost数值用于判断执行作业是否是复杂作业。 + diff --git "a/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\217\202\346\225\260\350\260\203\344\274\230.md" "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\217\202\346\225\260\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..52761aeae7bae3299093917b2eba8fc9ff0df331 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\217\202\346\225\260\350\260\203\344\274\230.md" @@ -0,0 +1,9 @@ +# 数据库系统参数调优 + +为了保证数据库尽可能高性能地运行,建议依据硬件资源情况和业务实际进行数据库系统参数——GUC参数的设置。这里主要介绍GUC参数对性能的影响,关于参数的详细设置方法请参见"管理员指南"。 + +- **[数据库内存参数调优](数据库内存参数调优.md)** + +- **[数据库并发队列参数调优](数据库并发队列参数调优.md)** + + diff --git "a/content/zh/docs/Developerguide/\346\225\260\346\215\256\347\261\273\345\236\213-19.md" "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\347\261\273\345\236\213-19.md" new file mode 100644 index 0000000000000000000000000000000000000000..08c73322fb5a17275972859f25556c5306043eb1 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\347\261\273\345\236\213-19.md" @@ -0,0 +1,4 @@ +# 数据类型 + +数据类型是一组值的集合以及定义在这个值集上的一组操作。openGauss数据库是由表的集合组成的,而各表中的列定义了该表,每一列都属于一种数据类型,openGauss根据数据类型有相应函数对其内容进行操作,例如openGauss可对数值型数据进行加、减、乘、除操作。 + diff --git "a/content/zh/docs/Developerguide/\346\225\260\346\215\256\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\347\261\273\345\236\213.md" index 00ca1532c77932de4423db500ac831b947ec7484..3021cc18355574193c4201a116080eafeb05bdae 100644 --- "a/content/zh/docs/Developerguide/\346\225\260\346\215\256\347\261\273\345\236\213.md" +++ "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\347\261\273\345\236\213.md" @@ -1,8 +1,6 @@ # 数据类型 -数据类型是数据的一个基本属性,用于区分不同类型的数据。不同的数据类型所占的存储空间不同,能够进行的操作也不相同。数据库中的数据存储在数据表中。数据表中的每一列都定义了数据类型,用户存储数据时,须遵从这些数据类型的属性,否则可能会出错。 - -openGauss支持某些数据类型间的隐式转换,具体转化关系请参见[PG\_CAST](PG_CAST.md#ZH-CN_TOPIC_0242385803)。 +openGauss支持某些数据类型间的隐式转换,具体转化关系请参见[PG\_CAST](PG_CAST.md)。 - **[数值类型](数值类型.md)** diff --git "a/content/zh/docs/Developerguide/\346\225\260\346\215\256\347\261\273\345\236\213\350\275\254\346\215\242.md" "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\347\261\273\345\236\213\350\275\254\346\215\242.md" new file mode 100644 index 0000000000000000000000000000000000000000..1ac534ef7493e06a8d47b404d28a5eb8f805542e --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\225\260\346\215\256\347\261\273\345\236\213\350\275\254\346\215\242.md" @@ -0,0 +1,156 @@ +# 数据类型转换 + +数据库中允许有些数据类型进行隐式类型转换(赋值、函数调用的参数等),有些数据类型间不允许进行隐式数据类型转换,可尝试使用openGauss提供的类型转换函数,例如CAST进行数据类型强转。 + +openGauss数据库常见的隐式类型转换,请参见[表1](#zh-cn_topic_0237122212_zh-cn_topic_0059778807_tbc67231ae8bc4ca484efaebd2629a0e4)。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>openGauss支持的DATE的效限范围是:公元前4713年到公元294276年。 + +**表 1** 隐式类型转换表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    原始数据类型

    +

    目标数据类型

    +

    备注

    +

    CHAR

    +

    VARCHAR2

    +

    -

    +

    CHAR

    +

    NUMBER

    +

    原数据必须由数字组成。

    +

    CHAR

    +

    DATE

    +

    原数据不能超出合法日期范围。

    +

    CHAR

    +

    RAW

    +

    -

    +

    CHAR

    +

    CLOB

    +

    -

    +

    VARCHAR2

    +

    CHAR

    +

    -

    +

    VARCHAR2

    +

    NUMBER

    +

    原数据必须由数字组成。

    +

    VARCHAR2

    +

    DATE

    +

    原数据不能超出合法日期范围。

    +

    VARCHAR2

    +

    CLOB

    +

    -

    +

    NUMBER

    +

    CHAR

    +

    -

    +

    NUMBER

    +

    VARCHAR2

    +

    -

    +

    DATE

    +

    CHAR

    +

    -

    +

    DATE

    +

    VARCHAR2

    +

    -

    +

    RAW

    +

    CHAR

    +

    -

    +

    RAW

    +

    VARCHAR2

    +

    -

    +

    CLOB

    +

    CHAR

    +

    -

    +

    CLOB

    +

    VARCHAR2

    +

    -

    +

    CLOB

    +

    NUMBER

    +

    原数据必须由数字组成。

    +

    INT4

    +

    CHAR

    +

    -

    +
    + diff --git "a/content/zh/docs/Developerguide/\346\225\260\347\273\204.md" "b/content/zh/docs/Developerguide/\346\225\260\347\273\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..db49de03053edfd4562b8a615e849d4ed21996bc --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\225\260\347\273\204.md" @@ -0,0 +1,29 @@ +# 数组 + +## 数组类型的使用 + +在使用数组之前,需要自定义一个数组类型。 + +在存储过程中紧跟AS关键字后面定义数组类型。定义方法为: + +``` +TYPE array_type IS VARRAY(size) OF data_type; +``` + +其中: + +- array\_type:要定义的数组类型名。 +- VARRAY:表示要定义的数组类型。 +- size:取值为正整数,表示可以容纳的成员的最大数量。 +- data\_type:要创建的数组中成员的类型。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 在openGauss中,数组会自动增长,访问越界会返回一个NULL,不会报错。 +>- 在存储过程中定义的数组类型,其作用域仅在该存储过程中。 +>- 建议选择上述定义方法的一种来自定义数组类型,当同时使用两种方法定义同名的数组类型时,openGauss会优先选择存储过程中定义的数组类型来声明数组变量。 + +openGauss支持使用圆括号来访问数组元素,且还支持一些特有的函数,如extend,count,first,last来访问数组的内容。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>存储过程中如果有DML语句(SELECT、UPDATE、INSERT、DELETE),DML语句只能使用中括号来访问数组元素,从而和函数表达式区分开。 + diff --git "a/content/zh/docs/Developerguide/\346\225\260\347\273\204\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" "b/content/zh/docs/Developerguide/\346\225\260\347\273\204\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" index 9b9bd32273c7a6e0c3d57d3ce19a97ed3d9e7598..cffe252cbb6de49bb90415059ecfed2c7acf8506 100644 --- "a/content/zh/docs/Developerguide/\346\225\260\347\273\204\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" +++ "b/content/zh/docs/Developerguide/\346\225\260\347\273\204\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" @@ -255,7 +255,7 @@ - array\_dims\(anyarray\) - 描述:返回数组维数的文本表示。 + 描述:返回数组各个维度中的低位下标值和高位下标值。 返回类型:text @@ -271,7 +271,7 @@ - array\_length\(anyarray, int\) - 描述:返回数组维度的长度。 + 描述:返回指定数组维度的长度。int为指定数组维度。 返回类型:int @@ -283,11 +283,17 @@ -------- 3 (1 row) + + postgres=# SELECT array_length(array[[1,2,3],[4,5,6]], 2) AS RESULT; + result + -------- + 3 + (1 row) ``` - array\_lower\(anyarray, int\) - 描述:返回数组维数的下界。 + 描述:返回指定数组维数的下界。int为指定数组维度。 返回类型:int @@ -303,7 +309,7 @@ - array\_upper\(anyarray, int\) - 描述:返回数组维数的上界。 + 描述:返回指定数组维数的上界。int为指定数组维度。 返回类型:int diff --git "a/content/zh/docs/Developerguide/\346\225\260\347\273\204\345\222\214record.md" "b/content/zh/docs/Developerguide/\346\225\260\347\273\204\345\222\214record.md" new file mode 100644 index 0000000000000000000000000000000000000000..3e765d0d4be6aa157803e0581540d2dcf3b28d66 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\225\260\347\273\204\345\222\214record.md" @@ -0,0 +1,7 @@ +# 数组和record + +- **[数组](数组.md)** + +- **[record](record.md)** + + diff --git "a/content/zh/docs/Developerguide/\346\227\245\345\277\227\345\233\236\346\224\276.md" "b/content/zh/docs/Developerguide/\346\227\245\345\277\227\345\233\236\346\224\276.md" index 6adfc4e088d5d982dcda3479a0e0d9a7f68274b6..8bd7c98c6256ec18f4a6e2dbf11ff0bcda519f6a 100644 --- "a/content/zh/docs/Developerguide/\346\227\245\345\277\227\345\233\236\346\224\276.md" +++ "b/content/zh/docs/Developerguide/\346\227\245\345\277\227\345\233\236\346\224\276.md" @@ -28,11 +28,11 @@ 该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 -**取值范围**:整型,0\~16 +**取值范围**:整型,1\~16 -0是指不开极致RTO,1\~16是指开极致RTO。需要配合recovery\_redo\_workers使用。若同时开启recovery\_parse\_workers和recovery\_max\_workers,以开启极致RTO的recovery\_parse\_workers为准,并行回放特性失效。 +仅在开启极致RTO情况下可以设置recovery\_parse\_workers为\>1。需要配合recovery\_redo\_workers使用。若同时开启recovery\_parse\_workers和recovery\_max\_workers,以开启极致RTO的recovery\_parse\_workers为准,并行回放特性失效。因极致RTO不支持hot standby模式和主备从模式, 仅在参数[hot\_standby](备服务器.md#zh-cn_topic_0237124714_zh-cn_topic_0059778071_sa43017102b08472cb160e9f856e664bd)设置成off,[replication\_type](openGauss事务.md#zh-cn_topic_0237124741_section94292665717)设置成1时可以设置recovery\_parse\_workers为\>1。另外,极致RTO也不支持列存,在已经使用列存表或者即将使用列存表的系统中,请关闭极致RTO. -**默认值:**0 +**默认值:**1 ## recovery\_redo\_workers @@ -42,9 +42,7 @@ **取值范围**:整型,1\~8 -需要配合recovery\_parse\_workers使用。recovery\_redo\_workers是极致RTO特性中每个ParseRedoRecord线程对应的PageRedoWorker线程数量。在配合recovery\_parse\_workers使用时,只有recovery\_parse\_workers大于0 - -recovery\_redo\_workers参数才生效。 +需要配合recovery\_parse\_workers使用。在配合recovery\_parse\_workers使用时,只有recovery\_parse\_workers大于0,recovery\_redo\_workers参数才生效。 **默认值:**1 diff --git "a/content/zh/docs/Developerguide/\346\227\245\346\234\237-\346\227\266\351\227\264\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/\346\227\245\346\234\237-\346\227\266\351\227\264\347\261\273\345\236\213.md" index 0975a590e5bbd0d1de0fa4cfde1042a5d0dd1573..28c683de9c52d86e4ce5be782c9c44908a935edf 100644 --- "a/content/zh/docs/Developerguide/\346\227\245\346\234\237-\346\227\266\351\227\264\347\261\273\345\236\213.md" +++ "b/content/zh/docs/Developerguide/\346\227\245\346\234\237-\346\227\266\351\227\264\347\261\273\345\236\213.md" @@ -66,7 +66,7 @@ openGauss支持的日期/时间类型请参见[表1](#zh-cn_topic_0237121952_zh-

    INTERVAL DAY (l) TO SECOND (p)

    时间间隔,X天X小时X分X秒。

    -
    • l:天数的精度,取值范围为0~6。为适配A语法,未实现具体功能。
    • p:秒数的精度,取值范围为0~6。小数末尾的零不显示。
    +
    • l:天数的精度,取值范围为0~6。兼容性考虑,目前未实现具体功能。
    • p:秒数的精度,取值范围为0~6。小数末尾的零不显示。

    16字节

    diff --git "a/content/zh/docs/Developerguide/\346\227\266\351\227\264\345\222\214\346\227\245\346\234\237\345\244\204\347\220\206\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" "b/content/zh/docs/Developerguide/\346\227\266\351\227\264\345\222\214\346\227\245\346\234\237\345\244\204\347\220\206\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" index 59123b7df36d59877cb1a80a5a399578ca2ab850..b8888a9f5d14a453709bdec3a9ac2e06bb2787da 100644 --- "a/content/zh/docs/Developerguide/\346\227\266\351\227\264\345\222\214\346\227\245\346\234\237\345\244\204\347\220\206\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" +++ "b/content/zh/docs/Developerguide/\346\227\266\351\227\264\345\222\214\346\227\245\346\234\237\345\244\204\347\220\206\345\207\275\346\225\260\345\222\214\346\223\215\344\275\234\347\254\246.md" @@ -498,7 +498,7 @@ 描述:将数字转换为interval类型。num为numeric类型数字,interval\_unit为固定格式字符串('DAY' | 'HOUR' | 'MINUTE' | 'SECOND')。 - 可以通过设置参数[IntervalStyle](区域和格式化.md#zh-cn_topic_0237124733_zh-cn_topic_0059778109_s89302a8dcd7f46ecb7167574d6397dc0)为a,兼容该函数在A DB中的interval输出格式。 + 可以通过设置参数[IntervalStyle](区域和格式化.md#zh-cn_topic_0237124733_zh-cn_topic_0059778109_s89302a8dcd7f46ecb7167574d6397dc0)为a,兼容该函数interval输出格式。 示例: @@ -648,11 +648,14 @@ ``` -## TIMESTAMPDIFF +## TIMESTAMPDIFF **TIMESTAMPDIFF\(**_unit , timestamp\_expr1, timestamp\_expr2_**\)** -timestampdiff函数是计算两个日期时间之间\(timestamp\_expr2-timestamp\_expr1\)的差值,并以unit形式范围结果。timestamp\_expr1,timestamp\_expr2必须是一个timestamp、timestamptz、date类型的值表达式。unit表示的是两个日期差的单位。extract函数返回类型为int64的数值。unit的取值范围如下所示。 +timestampdiff函数是计算两个日期时间之间\(timestamp\_expr2-timestamp\_expr1\)的差值,并以unit形式返回结果。timestamp\_expr1,timestamp\_expr2必须是一个timestamp、timestamptz、date类型的值表达式。unit表示的是两个日期差的单位。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>该函数仅在openGauss兼容MY类型时(即dbcompatibility = 'B')有效,其他类型不支持该函数。 - year diff --git "a/content/zh/docs/Developerguide/\346\230\276\345\274\217\346\270\270\346\240\207.md" "b/content/zh/docs/Developerguide/\346\230\276\345\274\217\346\270\270\346\240\207.md" new file mode 100644 index 0000000000000000000000000000000000000000..7d4c9236e2372f1b94f536b39b06dc40d62960db --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\230\276\345\274\217\346\270\270\346\240\207.md" @@ -0,0 +1,81 @@ +# 显式游标 + +显式游标主要用于对查询语句的处理,尤其是在查询结果为多条记录的情况下。 + +## 处理步骤 + +显式游标处理需六个PL/SQL步骤: + +1. **定义静态游标:**就是定义一个游标名,以及与其相对应的SELECT语句。 + + 定义静态游标的语法图,请参见[图1](#zh-cn_topic_0237122244_zh-cn_topic_0059778930_f3cd97ed9f2474aa785f5626e468a75de)。 + + **图 1** static\_cursor\_define::= + ![](figures/static_cursor_define.jpg "static_cursor_define") + + 参数说明: + + - cursor\_name:定义的游标名。 + - parameter:游标参数,只能为输入参数,其格式为: + + ``` + parameter_name datatype + ``` + + - select\_statement:查询语句。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >根据执行计划的不同,系统会自动判断该游标是否可以用于以倒序的方式检索数据行。 + + **定义动态游标:**指ref游标,可以通过一组静态的SQL语句动态的打开游标。首先定义ref游标类型,然后定义该游标类型的游标变量,在打开游标时通过OPEN FOR动态绑定SELECT语句。 + + 定义动态游标的语法图,请参见[图2](#zh-cn_topic_0237122244_zh-cn_topic_0059778930_f1579c1867b984124b10da33d032a55b0)和[图3](#zh-cn_topic_0237122244_zh-cn_topic_0059778930_fceaf870eaa73494496e8a65e7afc8cec)。 + + **图 2** cursor\_typename::= + ![](figures/cursor_typename.png "cursor_typename") + + **图 3** dynamic\_cursor\_define::= + ![](figures/dynamic_cursor_define.png "dynamic_cursor_define") + +2. **打开静态游标:**就是执行游标所对应的SELECT语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。如果游标查询语句中带有FOR UPDATE选项,OPEN语句还将锁定数据库表中游标结果集合对应的数据行。 + + 打开静态游标的语法图,请参见[图4](#zh-cn_topic_0237122244_zh-cn_topic_0059778930_fac5b397fa6184f35a416626255a9280d)。 + + **图 4** open\_static\_cursor::= + ![](figures/open_static_cursor.png "open_static_cursor") + + **打开动态游标:**可以通过OPEN FOR语句打开动态游标,动态绑定SQL语句。 + + 打开动态游标的语法图,请参见[图5](#zh-cn_topic_0237122244_zh-cn_topic_0059778930_f8e95270034c744b3bec53bd78cf56a22)。 + + **图 5** open\_dynamic\_cursor::= + ![](figures/open_dynamic_cursor.png "open_dynamic_cursor") + + PL/SQL程序不能用OPEN语句重复打开一个游标。 + +3. 提取游标数据:检索结果集合中的数据行,放入指定的输出变量中。 + + 提取游标数据的语法图,请参见[图6](#zh-cn_topic_0237122244_zh-cn_topic_0059778930_f0759ffa7118d4c4481c0f0fd9a600351)。 + + **图 6** fetch\_cursor::= + ![](figures/fetch_cursor.png "fetch_cursor") + +4. 对该记录进行处理。 +5. 继续处理,直到活动集合中没有记录。 +6. 关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用FETCH语句获取其中数据。关闭后的游标可以使用OPEN语句重新打开。 + + 关闭游标的语法图,请参见[图7](#zh-cn_topic_0237122244_zh-cn_topic_0059778930_fdd13133c237949828f65e55cb3ec2f5b)。 + + **图 7** close\_cursor::= + ![](figures/close_cursor.jpg "close_cursor") + + +## 属性 + +游标的属性用于控制程序流程或者了解程序的状态。当运行DML语句时,PL/SQL打开一个内建游标并处理结果,游标是维护查询结果的内存中的一个区域,游标在运行DML语句时打开,完成后关闭。显式游标的属性为: + +- %FOUND布尔型属性:当最近一次读记录时成功返回,则值为TRUE。 +- %NOTFOUND布尔型属性:与%FOUND相反。 +- %ISOPEN布尔型属性:当游标已打开时返回TRUE。 +- %ROWCOUNT数值型属性:返回已从游标中读取的记录数。 + diff --git "a/content/zh/docs/Developerguide/\346\233\264\346\226\260\347\273\237\350\256\241\344\277\241\346\201\257.md" "b/content/zh/docs/Developerguide/\346\233\264\346\226\260\347\273\237\350\256\241\344\277\241\346\201\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..ce0e541300726e9aefdb8fcefda21519a0f5a503 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\233\264\346\226\260\347\273\237\350\256\241\344\277\241\346\201\257.md" @@ -0,0 +1,41 @@ +# 更新统计信息 + +在数据库中,统计信息是规划器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造成执行计划严重劣化,从而导致性能问题。 + +## 背景信息 + +ANALYZE语句可收集与数据库中表内容相关的统计信息,统计结果存储在系统表PG\_STATISTIC中。查询优化器会使用这些统计数据,以生成最有效的执行计划。 + +建议在执行了大批量插入/删除操作后,例行对表或全库执行ANALYZE语句更新统计信息。目前默认收集统计信息的采样比例是30000行(即:guc参数default\_statistics\_target默认设置为100),如果表的总行数超过一定行数(大于1600000),建议设置guc参数default\_statistics\_target为-2,即按2%收集样本估算统计信息。 + +对于在批处理脚本或者存储过程中生成的中间表,也需要在完成数据生成之后显式的调用ANALYZE。 + +对于表中多个列有相关性且查询中有同时基于这些列的条件或分组操作的情况,可尝试收集多列统计信息,以便查询优化器可以更准确地估算行数,并生成更有效的执行计划。 + +## 操作步骤 + +使用以下命令更新某个表或者整个database的统计信息。 + +``` +ANALYZE tablename; --更新单个表的统计信息 +ANALYZE; --更新全库的统计信息 +``` + +使用以下命令进行多列统计信息相关操作。 + +``` +ANALYZE tablename ((column_1, column_2)); --收集tablename表的column_1、column_2列的多列统计信息 + +ALTER TABLE tablename ADD STATISTICS ((column_1, column_2)); --添加tablename表的column_1、column_2列的多列统计信息声明 +ANALYZE tablename; --收集单列统计信息,并收集已声明的多列统计信息 + +ALTER TABLE tablename DELETE STATISTICS ((column_1, column_2)); --删除tablename表的column_1、column_2列的多列统计信息或其声明 +``` + +>![](public_sys-resources/icon-notice.gif) **须知:** +>在使用ALTER TABLE tablename ADD STATISTICS语句添加了多列统计信息声明后,系统并不会立刻收集多列统计信息,而是在下次对该表或全库进行ANALYZE时,进行多列统计信息的收集。 +>如果想直接收集多列统计信息,请使用ANALYZE命令进行收集。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>使用EXPLAIN查看各SQL的执行计划时,如果发现某个表SEQ SCAN的输出中rows=10,rows=10是系统给的默认值,有可能该表没有进行ANALYZE,需要对该表执行ANALYZE。 + diff --git "a/content/zh/docs/Developerguide/\346\233\264\346\226\260\350\241\250\344\270\255\346\225\260\346\215\256-4.md" "b/content/zh/docs/Developerguide/\346\233\264\346\226\260\350\241\250\344\270\255\346\225\260\346\215\256-4.md" new file mode 100644 index 0000000000000000000000000000000000000000..7f2e853c03b16451ad00f576b6e9e56a5f2932e0 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\233\264\346\226\260\350\241\250\344\270\255\346\225\260\346\215\256-4.md" @@ -0,0 +1,7 @@ +# 更新表中数据 + +- **[使用DML命令更新表](使用DML命令更新表.md)** + +- **[使用合并方式更新和插入数据](使用合并方式更新和插入数据.md)** + + diff --git "a/content/zh/docs/Developerguide/\346\235\241\344\273\266\350\241\250\350\276\276\345\274\217\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\346\235\241\344\273\266\350\241\250\350\276\276\345\274\217\345\207\275\346\225\260.md" index 5028255770cdcce76ebb5d87302d5300a5c1001e..a29a945305c0df5be46c66c5da6c04e2ba8c84d8 100644 --- "a/content/zh/docs/Developerguide/\346\235\241\344\273\266\350\241\250\350\276\276\345\274\217\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\346\235\241\344\273\266\350\241\250\350\276\276\345\274\217\345\207\275\346\225\260.md" @@ -105,26 +105,6 @@ 备注:参数expr1和expr2可以为任意类型,当NVL的两个参数不属于同类型时,看第二个参数是否可以向第一个参数进行隐式转换,如果可以则返回第一个参数类型。如果第二个参数不能向第一个参数进行隐式转换而第一个参数可以向第二个参数进行隐式转换,则返回第二个参数的类型。如果两个参数之间不存在隐式类型转换并且也不属于同一类型则报错。 -- sys\_context\( 'namespace' , 'parameter'\) - - 描述:获取并返回指定namespace下参数parameter的值。 - - 返回值类型:VARCHAR - - 示例: - - ``` - postgres=# SELECT sys_context('USERENV', 'CURRENT_SCHEMA'); - sys_context - ------------- - public - (1 row) - ``` - - 根据当前所在的实际schema而变化。 - - 备注:目前仅支持SYS\_CONTEXT\('USERENV', 'CURRENT\_SCHEMA'\) 和SYS\_CONTEXT\('USERENV', 'CURRENT\_USER'\)两种格式。 - - greatest\(expr1 \[, ...\]\) 描述:获取并返回参数列表中值最大的表达式的值。 @@ -188,6 +168,4 @@ postgres=# DROP TABLE blob_tb; ``` - 备注:使用DBMS.GETLENGTH求得的长度为0。 - diff --git "a/content/zh/docs/Developerguide/\346\235\241\344\273\266\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\346\235\241\344\273\266\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..10f8e8e8a5c5e04bfdd1561bb49bb49ff301ce2b --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\235\241\344\273\266\350\257\255\345\217\245.md" @@ -0,0 +1,102 @@ +# 条件语句 + +条件语句的主要作用判断参数或者语句是否满足已给定的条件,根据判定结果执行相应的操作。 + +openGauss有五种形式的IF: + +- IF\_THEN + + **图 1** IF\_THEN::= + ![](figures/IF_THEN.jpg "IF_THEN") + + IF\_THEN语句是IF的最简单形式。如果条件为真,statements将被执行。否则,将忽略它们的结果使该IF\_THEN语句执行结束。 + + **示例** + + ``` + postgres=# IF v_user_id <> 0 THEN + UPDATE users SET email = v_email WHERE user_id = v_user_id; + END IF; + ``` + +- IF\_THEN\_ELSE + + **图 2** IF\_THEN\_ELSE::= + ![](figures/IF_THEN_ELSE.jpg "IF_THEN_ELSE") + + IF\_THEN\_ELSE语句增加了ELSE的分支,可以声明在条件为假的时候执行的语句。 + + **示例** + + ``` + postgres=# IF parentid IS NULL OR parentid = '' + THEN + RETURN; + ELSE + hp_true_filename(parentid);--表示调用存储过程 + END IF; + ``` + +- IF\_THEN\_ELSE IF + + IF语句可以嵌套,嵌套方式如下: + + ``` + postgres=# IF sex = 'm' THEN + pretty_sex := 'man'; + ELSE + IF sex = 'f' THEN + pretty_sex := 'woman'; + END IF; + END IF; + ``` + + 这种形式实际上就是在一个IF语句的ELSE部分嵌套了另一个IF语句。因此需要一个END IF语句给每个嵌套的IF,另外还需要一个END IF语句结束父IF-ELSE。如果有多个选项,可使用下面的形式。 + +- IF\_THEN\_ELSIF\_ELSE + + **图 3** IF\_THEN\_ELSIF\_ELSE::= + ![](figures/IF_THEN_ELSIF_ELSE.png "IF_THEN_ELSIF_ELSE") + + **示例** + + ``` + IF number_tmp = 0 THEN + result := 'zero'; + ELSIF number_tmp > 0 THEN + result := 'positive'; + ELSIF number_tmp < 0 THEN + result := 'negative'; + ELSE + result := 'NULL'; + END IF; + ``` + +- IF\_THEN\_ELSEIF\_ELSE + + ELSEIF是ELSIF的别名。 + + 综合示例 + + ``` + CREATE OR REPLACE PROCEDURE proc_control_structure(i in integer) + AS + BEGIN + IF i > 0 THEN + raise info 'i:% is greater than 0. ',i; + ELSIF i < 0 THEN + raise info 'i:% is smaller than 0. ',i; + ELSE + raise info 'i:% is equal to 0. ',i; + END IF; + RETURN; + END; + / + + CALL proc_control_structure(3); + + --删除存储过程 + DROP PROCEDURE proc_control_structure; + ``` + + diff --git "a/content/zh/docs/Developerguide/\346\237\245\347\234\213\345\256\241\350\256\241\347\273\223\346\236\234.md" "b/content/zh/docs/Developerguide/\346\237\245\347\234\213\345\256\241\350\256\241\347\273\223\346\236\234.md" index 97d6855823033eb581d8ae950db37ca4121ff735..8b13bbdcf7227f1d1297e463533fbe36f4424880 100644 --- "a/content/zh/docs/Developerguide/\346\237\245\347\234\213\345\256\241\350\256\241\347\273\223\346\236\234.md" +++ "b/content/zh/docs/Developerguide/\346\237\245\347\234\213\345\256\241\350\256\241\347\273\223\346\236\234.md" @@ -9,7 +9,7 @@ ## 背景信息 -- 只有拥有AUDITADMIN属性的用户才可以查看审计记录。有关数据库用户及创建用户的办法请参见[用户](用户.md#ZH-CN_TOPIC_0246507961)。 +- 只有拥有AUDITADMIN属性的用户才可以查看审计记录。有关数据库用户及创建用户的办法请参见[用户](用户.md)。 - 审计查询命令是数据库提供的sql函数pg\_query\_audit,其原型为: ``` @@ -18,12 +18,6 @@ 参数startime和endtime分别表示审计记录的开始时间和结束时间,audit\_log表示所查看的审计日志信息所在的物理文件路径,当不指定audit\_log时,默认查看连接当前实例的审计日志信息。 - 通过sql函数pgxc\_query\_audit可以查询数据库主节点的审计日志,其原型为: - - ``` - pgxc_query_audit(timestamptz startime,timestamptz endtime) - ``` - >![](public_sys-resources/icon-note.gif) **说明:** >startime和endtime的差值代表要查询的时间段,其有效值为从startime日期中的00:00:00开始到endtime日期中的23:59:59之间的任何值。请正确指定这两个参数,否则将查不到需要的审计信息。 @@ -42,7 +36,7 @@ 连接成功后,系统显示类似如下信息: ``` - gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. @@ -65,28 +59,4 @@ 该条记录表明,用户omm在2015-07-15 08:03:55+08登录数据库postgres。其中client\_conninfo字段在log\_hostname启动且IP连接时,字符@后显示反向DNS查找得到的主机名。 -4. 查询数据库主节点审计记录。 - - ``` - postgres=# SELECT * FROM pgxc_query_audit('2019-01-10 17:00:00','2019-01-10 19:00:00') where type = 'login_success' and username = 'user1'; - ``` - - 查询结果如下: - - ``` - time | type | result | username | database | client_conninfo | object_name | detail_info | node_name | thread_id | - local_port | remote_port - ------------------------+---------------+--------+----------+----------+-----------------+-------------+------------------------------------------------------+--------------+---------------------------------+- - -----------+------------- - 2019-01-10 18:06:08+08 | login_success | ok | user1 | postgres | gsql@[local] | postgres | login db(postgres) success,the current user is:user1 | coordinator1 | 139965149210368@600429968516954 | - 17560 | null - 2019-01-10 18:06:22+08 | login_success | ok | user1 | postgres | gsql@[local] | postgres | login db(postgres) success,the current user is:user1 | coordinator1 | 139965149210368@600429982697548 | - 17560 | null - 2019-01-10 18:06:54+08 | login_success | ok | user1 | postgres | gsql@[local] | postgres | login db(postgres) success,the current user is:user1 | coordinator2 | 140677694355200@600430014804280 | - 17562 | null - (3 rows) - ``` - - 查询结果显示,用户user1在数据库主节点1和数据库主节点2的成功登录记录。 - diff --git "a/content/zh/docs/Developerguide/\346\237\245\347\234\213\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\225\260.md" "b/content/zh/docs/Developerguide/\346\237\245\347\234\213\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\225\260.md" index 0f2bd5f176ceb9c1b93d33b77870b14ef25677e1..7fc57be61239b1f0b988f93f40bc7b16efe33cba 100644 --- "a/content/zh/docs/Developerguide/\346\237\245\347\234\213\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\346\237\245\347\234\213\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\225\260.md" @@ -1,10 +1,10 @@ -# 查看数据库连接数 +# 查看数据库连接数 ## 背景信息 当用户连接数达到上限后,无法建立新的连接。因此,当数据库管理员发现某用户无法连接到数据库时,需要查看是否连接数达到了上限。控制数据库连接的主要以下几种选项。 -- 全局的最大连接数:由运行参数max\_connections指定,默认值为800。 +- 全局的最大连接数:由运行参数max\_connections指定,默认值为5000。 - 某用户的连接数:在创建用户时由CREATE ROLE命令的CONNECTION LIMIT connlimit子句直接设定,也可以在设定以后用ALTER ROLE的CONNECTION LIMIT connlimit子句修改。 - 某数据库的连接数:在创建数据库时,由CREATE DATABASE的CONNECTION LIMIT connlimit参数指定。 @@ -22,7 +22,7 @@ 连接成功后,系统显示类似如下信息: ``` - gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. @@ -70,7 +70,16 @@

    查看指定用户已使用的会话连接数。

    执行如下命令查看指定用户omm已使用的会话连接数。其中,1表示omm已使用的会话连接数。

    -
    postgres=# SELECT COUNT(*) FROM V$SESSION WHERE USERNAME='omm';
    +    
    postgres=# CREATE OR REPLACE VIEW DV_SESSIONS AS
    +    	       SELECT
    +    		    sa.sessionid AS SID,
    +    		    0::integer AS SERIAL#,
    +    		    sa.usesysid AS USER#,
    +    		    ad.rolname AS USERNAME
    +    	        FROM pg_stat_get_activity(NULL) AS sa
    +    	        LEFT JOIN pg_authid ad ON(sa.usesysid = ad.oid)
    +    	        WHERE sa.application_name <> 'JobScheduler';
    +    postgres=# SELECT COUNT(*) FROM DV_SESSIONS WHERE USERNAME='omm';
         
          count
         -------
    @@ -102,7 +111,16 @@
         

    查看所有用户已使用会话连接数。

    执行如下命令查看所有用户已使用的会话连接数。

    -
    postgres=# SELECT COUNT(*) FROM V$SESSION;
    +    
    postgres=# CREATE OR REPLACE VIEW DV_SESSIONS AS
    +    	       SELECT
    +    		    sa.sessionid AS SID,
    +    		    0::integer AS SERIAL#,
    +    		    sa.usesysid AS USER#,
    +    		    ad.rolname AS USERNAME
    +    	        FROM pg_stat_get_activity(NULL) AS sa
    +    	        LEFT JOIN pg_authid ad ON(sa.usesysid = ad.oid)
    +    	        WHERE sa.application_name <> 'JobScheduler';
    +    postgres=# SELECT COUNT(*) FROM DV_SESSIONS;
          count
         -------
              10
    diff --git "a/content/zh/docs/Developerguide/\346\237\245\350\257\242\345\222\214\347\264\242\345\274\225\347\273\237\350\256\241\346\224\266\351\233\206\345\231\250.md" "b/content/zh/docs/Developerguide/\346\237\245\350\257\242\345\222\214\347\264\242\345\274\225\347\273\237\350\256\241\346\224\266\351\233\206\345\231\250.md"
    index 016385ebbfa702eb224bde6e6470bd487c676a8c..f6ced43a1aa1c277b64de4ec64666114292b3e99 100644
    --- "a/content/zh/docs/Developerguide/\346\237\245\350\257\242\345\222\214\347\264\242\345\274\225\347\273\237\350\256\241\346\224\266\351\233\206\345\231\250.md"
    +++ "b/content/zh/docs/Developerguide/\346\237\245\350\257\242\345\222\214\347\264\242\345\274\225\347\273\237\350\256\241\346\224\266\351\233\206\345\231\250.md"
    @@ -56,7 +56,7 @@
     **取值范围:**枚举类型
     
     -   pl表示只追踪过程语言函数。
    --   all表示追踪SQL和C语言函数。
    +-   all表示追踪SQL语言函数。
     -   none表示关闭函数追踪功能。
     
     **默认值:**none
    @@ -137,8 +137,8 @@
     
     >![](public_sys-resources/icon-note.gif) **说明:**   
     >-   track\_sql\_count参数受track\_activities约束:  
    ->    -   track\_activities开启而track\_sql\_count关闭时,如果查询了gs\_sql\_count或pgxc\_sql\_count视图,将会有WARNING提示track\_sql\_count是关闭的;  
    ->    -   track\_activities和track\_sql\_count同时关闭,那么此时将会有两条WARNING,分别提示track\_activities是关闭的和track\_sql\_count是关闭的;  
    ->    -   track\_activities关闭而track\_sql\_count开启,此时将仅有WARNING提示track\_activities是关闭。  
    +>    -   track\_activities开启而track\_sql\_count关闭时,如果查询了gs\_sql\_count或pgxc\_sql\_count视图,日志中将会有WARNING提示track\_sql\_count是关闭的;  
    +>    -   track\_activities和track\_sql\_count同时关闭,那么此时日志中将会有两条WARNING,分别提示track\_activities是关闭的和track\_sql\_count是关闭的;  
    +>    -   track\_activities关闭而track\_sql\_count开启,此时日志中将仅有WARNING提示track\_activities是关闭。  
     >-   当参数关闭时,查询视图的结果为0行。  
     
    diff --git "a/content/zh/docs/Developerguide/\346\237\245\350\257\242\346\234\200\350\200\227\346\200\247\350\203\275\347\232\204SQL.md" "b/content/zh/docs/Developerguide/\346\237\245\350\257\242\346\234\200\350\200\227\346\200\247\350\203\275\347\232\204SQL.md"
    new file mode 100644
    index 0000000000000000000000000000000000000000..d63747d5f9def4e5a37b75ab17b514aba09014d7
    --- /dev/null
    +++ "b/content/zh/docs/Developerguide/\346\237\245\350\257\242\346\234\200\350\200\227\346\200\247\350\203\275\347\232\204SQL.md"
    @@ -0,0 +1,83 @@
    +# 查询最耗性能的SQL
    +
    +系统中有些SQL语句运行了很长时间还没有结束,这些语句会消耗很多的系统性能,请根据本章内容查询长时间运行的SQL语句。
    +
    +## 操作步骤
    +
    +1.  以操作系统用户omm登录数据库节点。
    +2.  使用如下命令连接数据库。
    +
    +    ```
    +    gsql -d postgres -p 8000
    +    ```
    +
    +    postgres为需要连接的数据库名称,8000为数据库节点的端口号。
    +
    +    连接成功后,系统显示类似如下信息:
    +
    +    ```
    +    gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131
    +    Non-SSL connection (SSL connection is recommended when requiring high-security)
    +    Type "help" for help.
    +    
    +    postgres=# 
    +    ```
    +
    +3.  查询系统中长时间运行的查询语句。
    +
    +    ```
    +    SELECT current_timestamp - query_start AS runtime, datname, usename, query FROM pg_stat_activity where state != 'idle' ORDER BY 1 desc;
    +    ```
    +
    +    查询后会按执行时间从长到短顺序返回查询语句列表,第一条结果就是当前系统中执行时间最长的查询语句。返回结果中包含了系统调用的SQL语句和用户执行SQL语句,请根据实际找到用户执行时间长的语句。
    +
    +    若当前系统较为繁忙,可以通过限制current\_timestamp - query\_start大于某一阈值来查看执行时间超过此阈值的查询语句。
    +
    +    ```
    +    SELECT query FROM pg_stat_activity WHERE current_timestamp - query_start > interval '1 days';
    +    ```
    +
    +4.  设置参数track\_activities为on。
    +
    +    ```
    +    SET track_activities = on;
    +    ```
    +
    +    当此参数为on时,数据库系统才会收集当前活动查询的运行信息。
    +
    +5.  查看正在运行的查询语句。
    +
    +    以查看视图pg\_stat\_activity为例:
    +
    +    ```
    +    SELECT datname, usename, state FROM pg_stat_activity;
    +     datname  | usename | state  |
    +    ----------+---------+--------+
    +     postgres |   omm   | idle   |
    +     postgres |   omm   | active |
    +    (2 rows)
    +    ```
    +
    +    如果state字段显示为idle,则表明此连接处于空闲,等待用户输入命令。
    +
    +    如果仅需要查看非空闲的查询语句,则使用如下命令查看:
    +
    +    ```
    +    SELECT datname, usename, state FROM pg_stat_activity WHERE state != 'idle';
    +    ```
    +
    +6.  分析长时间运行的查询语句状态。
    +    -   若查询语句处于正常状态,则等待其执行完毕。
    +    -   若查询语句阻塞,则通过如下命令查看当前处于阻塞状态的查询语句:
    +
    +        ```
    +        SELECT datname, usename, state, query FROM pg_stat_activity WHERE waiting = true;
    +        ```
    +
    +        查询结果中包含了当前被阻塞的查询语句,该查询语句所请求的锁资源可能被其他会话持有,正在等待持有会话释放锁资源。
    +
    +        >![](public_sys-resources/icon-note.gif) **说明:**   
    +        >只有当查询阻塞在系统内部锁资源时,waiting字段才显示为true。尽管等待锁资源是数据库系统最常见的阻塞行为,但是在某些场景下查询也会阻塞在等待其他系统资源上,例如写文件、定时器等。但是这种情况的查询阻塞,不会在视图pg\_stat\_activity中体现。  
    +
    +
    +
    diff --git "a/content/zh/docs/Developerguide/\346\243\200\346\237\245\347\202\271.md" "b/content/zh/docs/Developerguide/\346\243\200\346\237\245\347\202\271.md"
    index 3a1f4178b8e52bc6893934452114337f9b78024c..74ff8ec1c48bc7f714486f3ab87a64c5d7908f04 100644
    --- "a/content/zh/docs/Developerguide/\346\243\200\346\237\245\347\202\271.md"
    +++ "b/content/zh/docs/Developerguide/\346\243\200\346\237\245\347\202\271.md"
    @@ -8,7 +8,7 @@
     
     **取值范围**:整型,最小值1
     
    -提升此参数可加快大数据的导入速度,但需要结合[checkpoint\_timeout](#zh-cn_topic_0237124708_zh-cn_topic_0059778936_s880baa9f9b594980afbbe95fb8a77182)、[shared\_buffers](内存.md#zh-cn_topic_0237124699_zh-cn_topic_0059777577_s55a43fb6d0464430a59031671b37cd07)这两个参数统一考虑。这个参数同时影响WAL日志段文件复用数量,通常情况下pg\_xlog文件夹下最大的复用文件个数为2倍的checkpoint\_segments个,复用的文件被改名为后续即将使用的WAL日志段文件,不会被真正删除。
    +提升此参数可加快大数据的导入速度,但需要结合[checkpoint\_timeout](#zh-cn_topic_0237124708_zh-cn_topic_0059778936_s880baa9f9b594980afbbe95fb8a77182)、[shared\_buffers](内存-21.md#zh-cn_topic_0237124699_zh-cn_topic_0059777577_s55a43fb6d0464430a59031671b37cd07)这两个参数统一考虑。这个参数同时影响WAL日志段文件复用数量,通常情况下pg\_xlog文件夹下最大的复用文件个数为2倍的checkpoint\_segments个,复用的文件被改名为后续即将使用的WAL日志段文件,不会被真正删除。
     
     **默认值:**64
     
    @@ -20,7 +20,7 @@
     
     **取值范围**:整型, 30~3600(秒)
     
    -在提升[checkpoint\_segments](#zh-cn_topic_0237124708_zh-cn_topic_0059778936_sbadc77895e6643b882a5e7557e405373)以加快大数据导入的场景也需将此参数调大,同时这两个参数提升会加大[shared\_buffers](内存.md#zh-cn_topic_0237124699_zh-cn_topic_0059777577_s55a43fb6d0464430a59031671b37cd07)的负担,需要综合考虑。
    +在提升[checkpoint\_segments](#zh-cn_topic_0237124708_zh-cn_topic_0059778936_sbadc77895e6643b882a5e7557e405373)以加快大数据导入的场景也需将此参数调大,同时这两个参数提升会加大[shared\_buffers](内存-21.md#zh-cn_topic_0237124699_zh-cn_topic_0059777577_s55a43fb6d0464430a59031671b37cd07)的负担,需要综合考虑。
     
     **默认值:**15min
     
    @@ -91,7 +91,7 @@
     
     ## enable\_xlog\_prune
     
    -**参数说明:**设置主机是否在任一备机断联时候保留全部xlog不回收。
    +**参数说明:**设置在任一备机断联时,主机是否根据xlog日志的大小超过参数max\_size\_for\_xlog\_prune的值而回收日志。
     
     该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
     
    @@ -99,3 +99,13 @@
     
     **默认值:**on
     
    +## max\_size\_for\_xlog\_prune
    +
    +**参数说明:**在enable\_xlog\_prune打开时生效,如果有备机断连且xlog日志大小大于此阈值,则回收日志。
    +
    +该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
    +
    +**取值范围**:整型,0~576 460 752 303 423 487,单位为MB
    +
    +**默认值:**100000,单位MB
    +
    diff --git "a/content/zh/docs/Developerguide/\346\246\202\350\277\260-11.md" "b/content/zh/docs/Developerguide/\346\246\202\350\277\260-11.md"
    new file mode 100644
    index 0000000000000000000000000000000000000000..6be95d5db17acb65bb9152d84cf2dc46f99e4c38
    --- /dev/null
    +++ "b/content/zh/docs/Developerguide/\346\246\202\350\277\260-11.md"
    @@ -0,0 +1,4 @@
    +# 概述
    +
    +Sqldiag是一个语句时间诊断框架,通过深度学习和统计学习相结合,实现在不获取语句执行计划的前提下,依据语句逻辑相似度与历史执行记录,预测语句的执行时间。
    +
    diff --git "a/content/zh/docs/Developerguide/\346\246\202\350\277\260-16.md" "b/content/zh/docs/Developerguide/\346\246\202\350\277\260-16.md"
    new file mode 100644
    index 0000000000000000000000000000000000000000..6a12230ca0c4e000d71b04c4ef5888eb14aadb7e
    --- /dev/null
    +++ "b/content/zh/docs/Developerguide/\346\246\202\350\277\260-16.md"
    @@ -0,0 +1,47 @@
    +# 概述
    +
    +## 背景信息
    +
    +在SQL语言中,每个数据都与一个决定其行为和用法的数据类型相关。openGauss提供一个可扩展的数据类型系统,该系统比其它SQL实现更具通用性和灵活性。因而,openGauss中大多数类型转换是由通用规则来管理的,这种做法允许使用混合类型的表达式。
    +
    +openGauss扫描/分析器只将词法元素分解成五个基本种类:整数、浮点数、字符串、标识符和关键字。大多数非数字类型首先表现为字符串。SQL语言的定义允许将常量字符串声明为具体的类型。例,下面查询:
    +
    +```
    +postgres=# SELECT text 'Origin' AS "label", point '(0,0)' AS "value";
    + label  | value
    +--------+-------
    + Origin | (0,0)
    +(1 row)
    +```
    +
    +示例中有两个文本常量,类型分别为text和point。如果没有为字符串文本声明类型,则该文本首先被定义成一个unknown类型。
    +
    +在openGauss分析器里,有四种基本的SQL结构需要独立的类型转换规则:
    +
    +-   函数调用
    +
    +    多数SQL类型系统是建筑在一套丰富的函数上的。函数调用可以有一个或多个参数。因为SQL允许函数重载,所以不能通过函数名直接找到要调用的函数,分析器必须根据函数提供的参数类型选择正确的函数。
    +
    +-   操作符
    +
    +    SQL允许在表达式上使用前缀或后缀(单目)操作符,也允许表达式内部使用双目操作符(两个参数)。像函数一样,操作符也可以被重载,因此操作符的选择也和函数一样取决于参数类型。
    +
    +-   值存储
    +
    +    INSERT和UPDATE语句将表达式结果存入表中。语句中的表达式类型必须和目标字段的类型一致或者可以转换为一致。
    +
    +-   UNION,CASE和相关构造
    +
    +    因为联合SELECT语句中的所有查询结果必须在一列里显示出来,所以每个SELECT子句中的元素类型必须相互匹配并转换成一个统一类型。类似地,一个CASE构造的结果表达式必须转换成统一的类型,这样整个case表达式会有一个统一的输出类型。同样的要求也存在于ARRAY构造以及GREATEST和LEAST函数中。
    +
    +
    +系统表pg\_cast存储了有关数据类型之间的转换关系以及如何执行这些转换的信息。详细信息请参见[PG\_CAST](PG_CAST.md)。
    +
    +语义分析阶段会决定表达式的返回值类型并选择适当的转换行为。数据类型的基本类型分类,包括:Boolean,numeric,string,bitstring,datetime,timespan,geometric和network。每种类型都有一种或多种首选类型用于解决类型选择的问题。根据首选类型和可用的隐含转换,就可能保证有歧义的表达式(那些有多个候选解析方案的)得到有效的方式解决。
    +
    +所有类型转换规则都是建立在下面几个基本原则上的:
    +
    +-   隐含转换决不能有奇怪的或不可预见的输出。
    +-   如果一个查询不需要隐含的类型转换,分析器和执行器不应该进行更多的额外操作。这就是说,任何一个类型匹配、格式清晰的查询不应该在分析器里耗费更多的时间,也不应该向查询中引入任何不必要的隐含类型转换调用。
    +-   另外,如果一个查询在调用某个函数时需要进行隐式转换,当用户定义了一个有正确参数的函数后,解释器应该选择使用新函数。
    +
    diff --git "a/content/zh/docs/Developerguide/\346\246\202\350\277\260-5.md" "b/content/zh/docs/Developerguide/\346\246\202\350\277\260-5.md"
    new file mode 100644
    index 0000000000000000000000000000000000000000..4d43eb9095e7c51e5bbf47878a7c45fd7ac671c2
    --- /dev/null
    +++ "b/content/zh/docs/Developerguide/\346\246\202\350\277\260-5.md"
    @@ -0,0 +1,77 @@
    +# 概述
    +
    +openGauss提供的gs\_dump和gs\_dumpall工具,能够帮助用户导出需要的数据库对象或其相关信息。通过导入工具将导出的数据信息导入至需要的数据库,可以完成数据库信息的迁移。gs\_dump支持导出单个数据库或其内的对象,而gs\_dumpall支持导出openGauss中所有数据库或各库的公共全局对象。详细的使用场景见[表1](#zh-cn_topic_0237121167_table08278213504)。
    +
    +**表 1**  适用场景
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    适用场景

    +

    支持的导出粒度

    +

    支持的导出格式

    +

    配套的导入方法

    +

    导出单个数据库

    +

    数据库级导出

    +
    • 导出全量信息。

      使用导出的全量信息可以创建一个与当前库相同的数据库,且库中数据也与当前库相同。

      +
    • 仅导出库中所有对象的定义,包含库定义、函数定义、模式定义、表定义、索引定义和存储过程定义等。

      使用导出的对象定义,可以快速创建一个相同的数据库,但是库中并无原数据库的数据。

      +
    • 仅导出数据。
    +
    • 纯文本格式
    • 自定义归档格式
    • 目录归档格式
    • tar归档格式
    +
    +

    模式级导出

    +
    • 导出模式的全量信息。
    • 仅导出模式中数据。
    • 仅导出对象的定义,包含表定义、存储过程定义和索引定义等。
    +
    表级导出
    • 导出表的全量信息。
    • 仅导出表中数据。
    • 仅导出表的定义。
    +
    +

    导出所有数据库

    +

    数据库级导出

    +
    • 导出全量信息。

      使用导出的全量信息可以创建与当前主机相同的一个主机环境,拥有相同数据库和公共全局对象,且库中数据也与当前各库相同。

      +
    • 仅导出各数据库中的对象定义,包含表空间、库定义、函数定义、模式定义、表定义、索引定义和存储过程定义等。

      使用导出的对象定义,可以快速创建与当前主机相同的一个主机环境,拥有相同的数据库和表空间,但是库中并无原数据库的数据。

      +
    • 仅导出数据。
    +

    纯文本格式

    +

    数据文件导入请参见使用gsql元命令导入数据

    +
    各库公共全局对象导出
    • 仅导出表空间信息。
    • 仅导出角色信息。
    • 导出角色与表空间。
    +
    +
    + +gs\_dump和gs\_dumpall通过-U指定执行导出的用户帐户。如果当前使用的帐户不具备导出所要求的权限时,会无法导出数据。此时,可在导出命令中设置--role参数来指定具备权限的角色。在执行命令后,gs\_dump和gs\_dumpall会使用--role参数指定的角色,完成导出动作。可使用该功能的场景请参见[表1](#zh-cn_topic_0237121167_table08278213504),详细操作请参见[无权限角色导出数据](无权限角色导出数据.md)。 + +gs\_dump和gs\_dumpall通过对导出的数据文件加密,导入时对加密的数据文件进行解密,可以防止数据信息泄露,为数据库的安全提供保证。 + +gs\_dump和gs\_dumpall工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。 + +gs\_dump和gs\_dumpall工具支持导出完整一致的数据。例如,T1时刻启动gs\_dump导出A数据库,或者启动gs\_dumpall导出openGauss数据库,那么导出数据结果将会是T1时刻A数据库或者该openGauss数据库的数据状态,T1时刻之后对A数据库或openGauss数据库的修改不会被导出。 + +## 注意事项 + +- 禁止修改导出的文件和内容,否则可能无法恢复成功。 +- 如果数据库中包含的对象数量(数据表、视图、索引)在50万以上,为了提高性能且避免出现内存问题,建议通过gs\_guc工具设置数据库节点的如下参数(如果参数值大于如下建议值,则无需设置)。 + + ``` + gs_guc set -N all -I all -c 'max_prepared_transactions = 1000' + gs_guc set -N all -I all -c 'max_locks_per_transaction = 512' + ``` + +- 为了保证数据一致性和完整性,导出工具会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs\_dump和gs\_dumpall会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。 +- 由于gs\_dumpall读取所有数据库中的表,因此必须以openGauss管理员身份进行连接,才能导出完整文件。在使用gsql执行脚本文件导入时,同样需要管理员权限,以便添加用户和组,以及创建数据库。 + diff --git "a/content/zh/docs/Developerguide/\346\246\202\350\277\260-7.md" "b/content/zh/docs/Developerguide/\346\246\202\350\277\260-7.md" new file mode 100644 index 0000000000000000000000000000000000000000..738bfd208096883b7639cd2a642ca12302ebb515 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\246\202\350\277\260-7.md" @@ -0,0 +1,6 @@ +# 概述 + +Predictor是基于机器学习且具有在线学习能力的查询时间预测工具。通过不断学习数据库内收集的历史执行信息,实现计划的执行时间预测功能。 + +本特性需要拉起python进程AIEngine,用于模型的训练和推理。 + diff --git "a/content/zh/docs/Developerguide/\346\246\202\350\277\260-8.md" "b/content/zh/docs/Developerguide/\346\246\202\350\277\260-8.md" new file mode 100644 index 0000000000000000000000000000000000000000..bf1071718568d9aae943f69bec79cbd9b2a1e058 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\246\202\350\277\260-8.md" @@ -0,0 +1,4 @@ +# 概述 + +X-Tuner 是一款数据库自带的参数调优工具,通过结合深度强化学习和启发式算法,实现在无需人工干预的情况下,获取最佳数据库参数的途径。 + diff --git "a/content/zh/docs/Developerguide/\346\250\241\345\274\217\345\214\271\351\205\215\346\223\215\344\275\234\347\254\246.md" "b/content/zh/docs/Developerguide/\346\250\241\345\274\217\345\214\271\351\205\215\346\223\215\344\275\234\347\254\246.md" index b5d986c1415b55c3797488f7288b3defee9f6a3c..c734a6552e234c06aafc6f90fbd28367e88d2421 100644 --- "a/content/zh/docs/Developerguide/\346\250\241\345\274\217\345\214\271\351\205\215\346\223\215\344\275\234\347\254\246.md" +++ "b/content/zh/docs/Developerguide/\346\250\241\345\274\217\345\214\271\351\205\215\346\223\215\344\275\234\347\254\246.md" @@ -122,7 +122,7 @@ 正则表达式函数: - 支持使用函数[•substring\(string from pattern for escape\)](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_la1fee63f0fe34c148a0649f508a3048c)截取匹配SQL正则表达式的子字符串。 + 支持使用函数[substring\(string from pa...](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_la1fee63f0fe34c148a0649f508a3048c)截取匹配SQL正则表达式的子字符串。 示例: @@ -160,7 +160,7 @@ - POSIX正则表达式 - 描述:正则表达式是一个字符序列,它是定义一个串集合 (一个正则集)的缩写。 如果一个串是正则表达式描述的正则集中的一员时, 我们就说这个串匹配该正则表达式。 POSIX正则表达式提供了比LIKE和SIMILAR TO操作符更强大的含义。[表 1 正则表达式匹配操作符](#zh-cn_topic_0237121970_table6512684711360)列出了所有可用于POSIX正则表达式模式匹配的操作符。 + 描述:正则表达式是一个字符序列,它是定义一个串集合 (一个正则集)的缩写。 如果一个串是正则表达式描述的正则集中的一员时, 我们就说这个串匹配该正则表达式。 POSIX正则表达式提供了比LIKE和SIMILAR TO操作符更强大的含义。[表1](#zh-cn_topic_0237121970_table6512684711360)列出了所有可用于POSIX正则表达式模式匹配的操作符。 **表 1** 正则表达式匹配操作符 @@ -238,11 +238,11 @@ POSIX正则表达式支持下面函数。 - - [substring\(string from pattern\)](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_leae425d0ea44492abccc5db3556aa6f4)函数提供了抽取一个匹配POSIX正则表达式模式的子串的方法。 - - [regexp\_replace\(string, pattern, replacement \[,flags \]\)](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_l3d209c16ba5f452798f2875e0144da4f)函数提供了将匹配POSIX正则表达式模式的子串替换为新文本的功能。 - - [regexp\_matches\(string text, pattern text \[, flags text\]\)](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_l780ff57395f849c39cd24ae7bbc09950)函数返回一个文本数组,该数组由匹配一个POSIX正则表达式模式得到的所有被捕获子串构成。 - - [regexp\_split\_to\_table\(string text, pattern text \[, flags text\]\)](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_l75315d2c7397491e8c5b10466b3fff91)函数把一个POSIX正则表达式模式当作一个定界符来分离一个串。 - - [regexp\_split\_to\_array\(string text, pattern text \[, flags text \]\)](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_l0af8a0d78ca24b35815a93c7305cafdd)和regexp\_split\_to\_table类似,是一个正则表达式分离函数,不过它的结果以一个text数组的形式返回。 + - [substring\(string from pa...](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_leae425d0ea44492abccc5db3556aa6f4)函数提供了抽取一个匹配POSIX正则表达式模式的子串的方法。 + - [regexp\_replace\(string, p...](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_l3d209c16ba5f452798f2875e0144da4f)函数提供了将匹配POSIX正则表达式模式的子串替换为新文本的功能。 + - [regexp\_matches\(string te...](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_l780ff57395f849c39cd24ae7bbc09950)函数返回一个文本数组,该数组由匹配一个POSIX正则表达式模式得到的所有被捕获子串构成。 + - [regexp\_split\_to\_table\(st...](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_l75315d2c7397491e8c5b10466b3fff91)函数把一个POSIX正则表达式模式当作一个定界符来分离一个串。 + - [regexp\_split\_to\_array\(st...](字符处理函数和操作符.md#zh-cn_topic_0237121967_zh-cn_topic_0059779223_l0af8a0d78ca24b35815a93c7305cafdd)和regexp\_split\_to\_table类似,是一个正则表达式分离函数,不过它的结果以一个text数组的形式返回。 >![](public_sys-resources/icon-note.gif) **说明:** >正则表达式分离函数会忽略零长度的匹配,这种匹配发生在串的开头或结尾或者正好发生在前一个匹配之后。这和正则表达式匹配的严格定义是相悖的,后者由regexp\_matches实现,但是通常前者是实际中最常用的行为。 @@ -259,7 +259,7 @@ ``` ``` - postgres=# SELECT 'abc' ~ '* Abc' AS RESULT; + postgres=# SELECT 'abc' ~* 'Abc' AS RESULT; result -------- t diff --git "a/content/zh/docs/Developerguide/\346\265\213\350\257\225\345\222\214\350\260\203\350\257\225\346\226\207\346\234\254\346\220\234\347\264\242.md" "b/content/zh/docs/Developerguide/\346\265\213\350\257\225\345\222\214\350\260\203\350\257\225\346\226\207\346\234\254\346\220\234\347\264\242.md" index 870a66ffe3c8b1499d6e2ea1622e9da1aca8ff58..fc0a1b421a8c0f776bc4905634f7ef10e2583ddf 100644 --- "a/content/zh/docs/Developerguide/\346\265\213\350\257\225\345\222\214\350\260\203\350\257\225\346\226\207\346\234\254\346\220\234\347\264\242.md" +++ "b/content/zh/docs/Developerguide/\346\265\213\350\257\225\345\222\214\350\260\203\350\257\225\346\226\207\346\234\254\346\220\234\347\264\242.md" @@ -1,7 +1,5 @@ # 测试和调试文本搜索 -自定义文本搜索分词器的行为很容易变得混乱,本节中描述的函数用于对文本搜索对象进行测试。可以测试分词器整体,也可以单独测试解析器和词典。 - - **[分词器测试](分词器测试.md)** - **[解析器测试](解析器测试.md)** diff --git "a/content/zh/docs/Developerguide/\346\270\270\346\240\207.md" "b/content/zh/docs/Developerguide/\346\270\270\346\240\207.md" new file mode 100644 index 0000000000000000000000000000000000000000..970a6997c4a9a9a079d4b335b2906d569fdc0017 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\270\270\346\240\207.md" @@ -0,0 +1,11 @@ +# 游标 + +- **[游标概述](游标概述.md)** + +- **[显式游标](显式游标.md)** + +- **[隐式游标](隐式游标.md)** + +- **[游标循环](游标循环.md)** + + diff --git "a/content/zh/docs/Developerguide/\346\270\270\346\240\207\345\276\252\347\216\257.md" "b/content/zh/docs/Developerguide/\346\270\270\346\240\207\345\276\252\347\216\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..fb0fa8f0effece6c438925ec0484c8f79c7ad2cb --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\270\270\346\240\207\345\276\252\347\216\257.md" @@ -0,0 +1,18 @@ +# 游标循环 + +游标在WHILE语句、LOOP语句中的使用称为游标循环,一般这种循环都需要使用OPEN、FETCH和CLOSE语句。下面要介绍的一种循环不需要这些操作,可以简化游标循环的操作,这种循环方式适用于静态游标的循环,不用执行静态游标的四个步骤。 + +## 语法 + +FOR AS循环的语法请参见[图1](#zh-cn_topic_0237122246_zh-cn_topic_0059778239_fd1982700d7d8496a9358b5d029a0123b)。 + +**图 1** FOR\_AS\_loop::= +![](figures/FOR_AS_loop.png "FOR_AS_loop") + +## 注意事项 + +- 不能在该循环语句中对查询的表进行更新操作。 +- 变量loop\_name会自动定义且只在此循环中有效,类型和select\_statement的查询结果类型一致。loop\_name的取值就是select\_statement的查询结果。 + +- 游标的属性中%FOUND、%NOTFOUND、%ROWCOUNT在openGauss数据库中都是访问同一个内部变量,事务和匿名块不支持多个游标同时访问。 + diff --git "a/content/zh/docs/Developerguide/\346\270\270\346\240\207\346\223\215\344\275\234.md" "b/content/zh/docs/Developerguide/\346\270\270\346\240\207\346\223\215\344\275\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..782327e5665cc954939bc8b2919e55b352b78ce4 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\270\270\346\240\207\346\223\215\344\275\234.md" @@ -0,0 +1,8 @@ +# 游标操作 + +openGauss中游标(cursor)是系统为用户开设的一个数据缓冲区,存放着SQL语句的执行结果。每个游标区都有一个名称。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。 + +游标的操作主要有游标的定义、打开、获取和关闭。 + +完整的游标操作示例可参考[显式游标](显式游标.md)。 + diff --git "a/content/zh/docs/Developerguide/\346\270\270\346\240\207\346\246\202\350\277\260.md" "b/content/zh/docs/Developerguide/\346\270\270\346\240\207\346\246\202\350\277\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..62b513fdcd6475bddedc41252f984974fafed2e6 --- /dev/null +++ "b/content/zh/docs/Developerguide/\346\270\270\346\240\207\346\246\202\350\277\260.md" @@ -0,0 +1,36 @@ +# 游标概述 + +为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>当游标作为存储过程的返回值时,如果使用JDBC调用该存储过程,返回的游标将不可用。 + +游标的使用分为显式游标和隐式游标。对于不同的SQL语句,游标的使用情况不同,详细信息请参见[表1](#zh-cn_topic_0237122243_zh-cn_topic_0059778312_t0961a7f2a418407cbc7ebba3ba58c03d)。 + +**表 1** 游标使用情况 + + + + + + + + + + + + + + + + +

    SQL语句

    +

    游标

    +

    非查询语句

    +

    隐式的

    +

    结果是单行的查询语句

    +

    隐式的或显式的

    +

    结果是多行的查询语句

    +

    显式的

    +
    + diff --git "a/content/zh/docs/Developerguide/\347\216\257\345\242\203\351\203\250\347\275\262.md" "b/content/zh/docs/Developerguide/\347\216\257\345\242\203\351\203\250\347\275\262.md" new file mode 100644 index 0000000000000000000000000000000000000000..6d62887dc12fab44180c5ead77668a9935ed5d2c --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\216\257\345\242\203\351\203\250\347\275\262.md" @@ -0,0 +1,231 @@ +# 环境部署 + +## 前提条件 + +需要保证openGauss处于正常状态,用户通过身份验证成功登录openGauss;用户执行的SQL语法正确无报错,且不会导致数据库异常等;历史性能数据窗口内openGauss并发量稳定,表结构、表数量不变,数据量无突变,涉及查询性能的guc参数不变;进行预测时,需要保证模型已训练并收敛;AiEngine运行环境稳定。 + +## 请求样例 + +AiEngine进程与内核进程使用https发送请求进行通信,请求样例如下: + +``` +curl -X POST -d '{"modelName":"modelname"}' -H 'Content-Type: application/json' 'https://IP-address:port/request-API' +``` + +**表 1** : AI-Engine对外接口 + + + + + + + + + + + + + + + + + + + + + + + + + +

    Request-API

    +

    功能

    +

    /check

    +

    检查模型是否被正常拉起

    +

    /configure

    +

    设置模型参数

    +

    /train

    +

    模型训练

    +

    /track_process

    +

    查看模型训练日志

    +

    /setup

    +

    加载历史模型

    +

    /predict

    +

    模型预测

    +
    + +## 证书生成 + +使用此功能前需使用openssl工具生成通信双方认证所需的证书,保证通信安全。 + +1. 搭建证书生成环境,证书文件保存路径为$GAUSSHOME/CA。 + + --拷贝证书生成脚本及相关文件 + + ``` + cp path_to_predictor/install/ssl.sh $GAUSSHOME/ + cp path_to_predictor/install/ca_ext.txt $GAUSSHOME/ + ``` + + --copy 配置文件openssl.cnf到$GAUSSHOME路径下 + + ``` + cp $GAUSSHOME/share/om/openssl.cnf $GAUSSHOME/ + ``` + + --修改openssl.conf配置参数 + + ``` + dir = $GAUSSHOME/CA/demoCA + default_md = sha256 + ``` + + --至此证书生成环境准备完成 + +2. 生成证书及密钥 + + ``` + cd $GAUSSHOME + sh ssl.sh + ``` + + --根据提示设置密码,假如为Test@123: + + --密码要求至少3种不同类型字符,长度至少为8位 + + ``` + Please enter your password: + ``` + + --根据提示输入选项: + + ``` + Certificate Details: + Serial Number: 1 (0x1) + Validity + Not Before: May 15 08:32:44 2020 GMT + Not After : May 15 08:32:44 2021 GMT + Subject: + countryName = CN + stateOrProvinceName = SZ + organizationName = HW + organizationalUnitName = GS + commonName = CA + X509v3 extensions: + X509v3 Basic Constraints: + CA:TRUE + Certificate is to be certified until May 15 08:32:44 2021 GMT (365 days) + Sign the certificate? [y/n]:y + 1 out of 1 certificate requests certified, commit? [y/n]y + ``` + + --输入拉起AIEngine的IP地址,如IP为127.0.0.1: + + ``` + Please enter your aiEngine IP: 127.0.0.1 + ``` + + --根据提示输入选项: + + ``` + Certificate Details: + Serial Number: 2 (0x2) + Validity + Not Before: May 15 08:38:07 2020 GMT + Not After : May 13 08:38:07 2030 GMT + Subject: + countryName = CN + stateOrProvinceName = SZ + organizationName = HW + organizationalUnitName = GS + commonName = 127.0.0.1 + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Certificate is to be certified until May 13 08:38:07 2030 GMT (3650 days) + Sign the certificate? [y/n]:y + 1 out of 1 certificate requests certified, commit? [y/n]y + ``` + + --输入启动OpenGauss IP地址,如IP为127.0.0.1: + + ``` + Please enter your gaussdb IP: 127.0.0.1 + ``` + + --根据提示输入选项: + + ``` + Certificate Details: + Serial Number: 3 (0x3) + Validity + Not Before: May 15 08:41:46 2020 GMT + Not After : May 13 08:41:46 2030 GMT + Subject: + countryName = CN + stateOrProvinceName = SZ + organizationName = HW + organizationalUnitName = GS + commonName = 127.0.0.1 + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Certificate is to be certified until May 13 08:41:46 2030 GMT (3650 days) + Sign the certificate? [y/n]:y + 1 out of 1 certificate requests certified, commit? [y/n]y + ``` + + --至此,相关证书及密钥已生成,($GAUSSHOME/CA)内容如下: + + ![](figures/zh-cn_image_0253082069.png) + + +## 环境准备 + +1. 将工具代码文件夹拷贝至目标环境 + + --假设安装路径为$INSTALL\_FOLDER + + --假设目标环境路径为/home/ai\_user : + + ``` + scp -r $INSTALL_FOLDER/bin/dbmind/predictor ai_user@127.0.0.1:path_to_Predictor + ``` + +2. 拷贝CA证书文件夹至aiEngine环境中某路径下: + + ``` + cp -r $GAUSSHOME/CA ai_user@127.0.0.1:path_to_CA + ``` + +3. 安装predictor/install/requirements\(-gpu\).txt工具: + + ``` + 有GPU:pip install requirements-gpu.txt + 无GPU:pip install requirements.txt + ``` + + +## 拉起AiEngine + +1. 切换至aiEngine环境(即拷贝predictor的目标环境 ai\_user): + + 设置predictor/python/settings.py 中的相关参数: + + ``` + DEFAULT_FLASK_SERVER_HOST = '127.0.0.1' (aiEngine运行IP地址) + DEFAULT_FLASK_SERVER_PORT = '5000' (aiEngine运行端口号) + PATH_SSL = "path_to_CA" (CA文件夹路径) + ``` + +2. 运行aiEngine启动脚本: + + ``` + python path_to_Predictor/python/run.py + ``` + + 此时,aiEngine即在相应端口保持拉起状态,等待内核侧时间预测功能的请求指令。 + + 至此,aiEngine工具部署完成。从内核中发起执行时间预测功能指令步骤,请参考《时间预测使用说明》。 + + diff --git "a/content/zh/docs/Developerguide/\347\224\250SSH\351\232\247\351\201\223\350\277\233\350\241\214\345\256\211\345\205\250\347\232\204TCP-IP\350\277\236\346\216\245.md" "b/content/zh/docs/Developerguide/\347\224\250SSH\351\232\247\351\201\223\350\277\233\350\241\214\345\256\211\345\205\250\347\232\204TCP-IP\350\277\236\346\216\245.md" index 104be887375a44966ec575deb8350586bc8ae6ce..fcdb171a08bf996ed3ef948f04eb5216a121ebba 100644 --- "a/content/zh/docs/Developerguide/\347\224\250SSH\351\232\247\351\201\223\350\277\233\350\241\214\345\256\211\345\205\250\347\232\204TCP-IP\350\277\236\346\216\245.md" +++ "b/content/zh/docs/Developerguide/\347\224\250SSH\351\232\247\351\201\223\350\277\233\350\241\214\345\256\211\345\205\250\347\232\204TCP-IP\350\277\236\346\216\245.md" @@ -1,4 +1,4 @@ -# 用SSH隧道进行安全的TCP/IP连接 +# 用SSH隧道进行安全的TCP/IP连接 ## 背景信息 diff --git "a/content/zh/docs/Developerguide/\347\224\250SSL\350\277\233\350\241\214\345\256\211\345\205\250\347\232\204TCP-IP\350\277\236\346\216\245.md" "b/content/zh/docs/Developerguide/\347\224\250SSL\350\277\233\350\241\214\345\256\211\345\205\250\347\232\204TCP-IP\350\277\236\346\216\245.md" index 49daefeaef68f24f07c0b6ebbcf599f12244b120..a0119a088fd2fd1376839d938eef54bc33d7746d 100644 --- "a/content/zh/docs/Developerguide/\347\224\250SSL\350\277\233\350\241\214\345\256\211\345\205\250\347\232\204TCP-IP\350\277\236\346\216\245.md" +++ "b/content/zh/docs/Developerguide/\347\224\250SSL\350\277\233\350\241\214\345\256\211\345\205\250\347\232\204TCP-IP\350\277\236\346\216\245.md" @@ -1,4 +1,4 @@ -# 用SSL进行安全的TCP/IP连接 +# 用SSL进行安全的TCP/IP连接 ## 背景信息 @@ -99,67 +99,67 @@ openGauss在openGauss部署完成后,默认已开启SSL认证模式。服务 **表 2** 服务器参数 - + + + + @@ -93,7 +93,7 @@ @@ -105,7 +105,7 @@ @@ -124,7 +124,7 @@ diff --git "a/content/zh/docs/Developerguide/\351\205\215\347\275\256\346\234\215\345\212\241\347\253\257\350\277\234\347\250\213\350\277\236\346\216\245.md" "b/content/zh/docs/Developerguide/\351\205\215\347\275\256\346\234\215\345\212\241\347\253\257\350\277\234\347\250\213\350\277\236\346\216\245.md" index 8481e734663aba180952cb6e3539617a573a0b64..3ff7e9131ff28006c80c4587c93e9643c6ae9c40 100644 --- "a/content/zh/docs/Developerguide/\351\205\215\347\275\256\346\234\215\345\212\241\347\253\257\350\277\234\347\250\213\350\277\236\346\216\245.md" +++ "b/content/zh/docs/Developerguide/\351\205\215\347\275\256\346\234\215\345\212\241\347\253\257\350\277\234\347\250\213\350\277\236\346\216\245.md" @@ -1,13 +1,13 @@ # 配置服务端远程连接 -进行远程连接前,需要在所有部署了数据库主节点的机器上设置允许客户端访问数据库,并配置远程连接。 +进行远程连接前,需要在部署了数据库主节点的机器上设置允许客户端访问数据库,并配置远程连接。 ## 操作步骤 -以下步骤需要在openGauss的数据库主节点所在主机上执行。 +以下步骤需要在openGauss所在主机上执行。 1. 以操作系统用户omm登录数据库主节点。 -2. 配置客户端认证方式,请参考[配置客户端接入认证](配置客户端接入认证.md#ZH-CN_TOPIC_0242376654)。 +2. 配置客户端认证方式,请参考[配置客户端接入认证](配置客户端接入认证.md)。 3. 配置[listen\_addresses](连接设置.md#zh-cn_topic_0237124695_zh-cn_topic_0059777636_sed0adde99a3f47669f5d4ab557b36b35),listen\_addresses即远程客户端连接使用的数据库主节点ip或者主机名。 1. 使用如下命令查看数据库主节点目前的listen\_addresses配置。 diff --git "a/content/zh/docs/Developerguide/\351\205\215\347\275\256\347\244\272\344\276\213.md" "b/content/zh/docs/Developerguide/\351\205\215\347\275\256\347\244\272\344\276\213.md" index 71607e01a933774f8f752a00dddb0661f499f67b..d6a2489af9f22a91eaf31df0c1a699eddf3e4945 100644 --- "a/content/zh/docs/Developerguide/\351\205\215\347\275\256\347\244\272\344\276\213.md" +++ "b/content/zh/docs/Developerguide/\351\205\215\347\275\256\347\244\272\344\276\213.md" @@ -50,7 +50,7 @@ openGauss中预定义有一些可用的文本搜索配置,用户也可创建 ); ``` -4. 设置文本搜索配置ts\_conf,修改某些类型的token对应的词典列表。关于token类型的详细信息,请参见[解析器](解析器.md#ZH-CN_TOPIC_0242370496)。 +4. 设置文本搜索配置ts\_conf,修改某些类型的token对应的词典列表。关于token类型的详细信息,请参见[解析器](解析器.md)。 ``` postgres=# ALTER TEXT SEARCH CONFIGURATION ts_conf diff --git "a/content/zh/docs/Developerguide/\351\207\215\350\256\276\345\217\202\346\225\260.md" "b/content/zh/docs/Developerguide/\351\207\215\350\256\276\345\217\202\346\225\260.md" index 1cade6753ac5d4f7cd505fa9ae416ba06a915504..60aeb10e7d15b44edb41fe9f02f721ca9497d60b 100644 --- "a/content/zh/docs/Developerguide/\351\207\215\350\256\276\345\217\202\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\351\207\215\350\256\276\345\217\202\346\225\260.md" @@ -94,7 +94,7 @@ openGauss提供了三种方式来修改GUC参数,具体操作请参考[表2](# diff --git "a/content/zh/docs/Developerguide/\351\223\276\346\216\245\345\255\227\347\254\246.md" "b/content/zh/docs/Developerguide/\351\223\276\346\216\245\345\255\227\347\254\246.md" index c139ca32f0b8bfbbfbfc28f19bb61f7c8fbe8f12..68c284b5628ba9ccb82f4205e0627878643140b8 100644 --- "a/content/zh/docs/Developerguide/\351\223\276\346\216\245\345\255\227\347\254\246.md" +++ "b/content/zh/docs/Developerguide/\351\223\276\346\216\245\345\255\227\347\254\246.md" @@ -33,6 +33,11 @@ + + + - -

    参数

    + - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/content/zh/docs/Developerguide/\347\224\250\346\210\267.md" "b/content/zh/docs/Developerguide/\347\224\250\346\210\267.md" index 237947ab0ea4b31a5926a5641535e61e5d4bafc0..d14714e2b549f5215d249c2c222321dfedae1c86 100644 --- "a/content/zh/docs/Developerguide/\347\224\250\346\210\267.md" +++ "b/content/zh/docs/Developerguide/\347\224\250\346\210\267.md" @@ -1,14 +1,14 @@ # 用户 -使用CREATE USER和ALTER USER可以创建和管理数据库用户。openGauss包含一个或多个已命名数据库。用户和角色在openGauss范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的那个数据库。 +使用CREATE USER和ALTER USER可以创建和管理数据库用户。openGauss包含一个或多个已命名数据库。用户和角色在整个openGauss范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的那个数据库。 -非[三权分立](三权分立.md#ZH-CN_TOPIC_0246507960)下,openGauss用户帐户只能由系统管理员或拥有CREATEROLE属性的安全管理员创建和删除。三权分立时,用户帐户只能由初始用户和安全管理员创建。 +非[三权分立](三权分立.md)下,openGauss用户帐户只能由系统管理员或拥有CREATEROLE属性的安全管理员创建和删除。三权分立时,用户帐户只能由初始用户和安全管理员创建。 在用户登录openGauss时会对其进行身份验证。用户可以拥有数据库和数据库对象(例如表),并且可以向用户和角色授予对这些对象的权限以控制谁可以访问哪个对象。除系统管理员外,具有CREATEDB属性的用户可以创建数据库并授予对这些数据库的权限。 ## 创建、修改和删除用户 -- 要创建用户,请使用SQL语句[CREATE USER](CREATE-USER.md#ZH-CN_TOPIC_0242370589)。 +- 要创建用户,请使用SQL语句[CREATE USER](CREATE-USER.md)。 例如:创建用户joe,并设置用户拥有CREATEDB属性。 @@ -17,10 +17,10 @@ CREATE ROLE ``` -- 要创建系统管理员,请使用带有SYSADMIN选项的[CREATE USER](CREATE-USER.md#ZH-CN_TOPIC_0242370589)语句 。 +- 要创建系统管理员,请使用带有SYSADMIN选项的[CREATE USER](CREATE-USER.md)语句 。 - 要删除现有用户,请使用[DROP USER](DROP-USER.md)。 -- 要更改用户帐户(例如,重命名用户或更改密码),请使用[ALTER USER](ALTER-USER.md#ZH-CN_TOPIC_0242370547)。 -- 要查看用户列表,请查询视图[PG\_USER](PG_USER.md#ZH-CN_TOPIC_0242385999): +- 要更改用户帐户(例如,重命名用户或更改密码),请使用[ALTER USER](ALTER-USER.md)。 +- 要查看用户列表,请查询视图[PG\_USER](PG_USER.md): ``` postgres=# SELECT * FROM pg_user; @@ -37,7 +37,7 @@ 对于有多个业务部门,各部门间使用不同的数据库用户进行业务操作,同时有一个同级的数据库维护部门使用数据库管理员进行维护操作的场景下,业务部门可能希望在未经授权的情况下,管理员用户只能对各部门的数据进行控制操作(DROP、ALTER、TRUNCATE),但是不能进行访问操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即针对管理员用户,表对象的控制权和访问权要能够分离,提高普通用户数据安全性。 -[三权分立](三权分立.md#ZH-CN_TOPIC_0246507960)情况下,管理员对其他用户放在属于各自模式下的表无权限。但是,这种无权限包含了无控制权限,因此不能满足上面的诉求。为此,openGauss提供了私有用户方案。即在非三权分立模式下,创建具有INDEPENDENT属性的私有用户。 +[三权分立](三权分立.md)情况下,管理员对其他用户放在属于各自模式下的表无权限。但是,这种无权限包含了无控制权限,因此不能满足上面的诉求。为此,openGauss提供了私有用户方案。即在非三权分立模式下,创建具有INDEPENDENT属性的私有用户。 ``` postgres=# CREATE USER user_independent WITH INDEPENDENT IDENTIFIED BY "1234@abc"; diff --git "a/content/zh/docs/Developerguide/\347\224\250\346\210\267\350\207\252\345\256\232\344\271\211\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\347\224\250\346\210\267\350\207\252\345\256\232\344\271\211\345\207\275\346\225\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..4a8a0c5cf7a6870409e0d4c25424b95a02476df6 --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\224\250\346\210\267\350\207\252\345\256\232\344\271\211\345\207\275\346\225\260.md" @@ -0,0 +1,5 @@ +# 用户自定义函数 + +- **[PL/pgSQL语言函数](PL-pgSQL语言函数.md)** + + diff --git "a/content/zh/docs/Developerguide/\347\233\270\345\205\263\346\246\202\345\277\265.md" "b/content/zh/docs/Developerguide/\347\233\270\345\205\263\346\246\202\345\277\265.md" index b6d5c04c32b51d9bf54ef44ca7be41df8c33e610..ad860fb45c8811fd6f895ef768f902abf4fcc429 100644 --- "a/content/zh/docs/Developerguide/\347\233\270\345\205\263\346\246\202\345\277\265.md" +++ "b/content/zh/docs/Developerguide/\347\233\270\345\205\263\346\246\202\345\277\265.md" @@ -18,5 +18,5 @@ openGauss使用用户和角色来控制对数据库的访问。根据角色自 ## 事务管理 -在事务管理上,openGauss采取了MVCC(多版本并发控制)结合两阶段锁的方式,其特点是读写之间不阻塞。openGauss的MVCC没有将历史版本数据统一存放,而是和当前元组的版本放在了一起。openGauss没有回滚段的概念,但是为了定期清除历史版本数据openGauss引入了一个VACUUM线程。一般情况下用户不用关注它,除非要做性能调优。此外,openGauss是自动提交事务。 +在事务管理上,openGauss采取了MVCC(多版本并发控制)结合两阶段锁的方式,其特点是读写之间不阻塞。openGauss统一存放,而是和当前元组的版本放在了一起。openGauss期清除历史版本数据openGauss引入了一个VACUUM线程。一般情况下用户不用关注它,除非要做性能调优。此外,openGauss是自动提交事务。 diff --git "a/content/zh/docs/Developerguide/\347\241\254\344\273\266\347\223\266\351\242\210\347\202\271\345\210\206\346\236\220.md" "b/content/zh/docs/Developerguide/\347\241\254\344\273\266\347\223\266\351\242\210\347\202\271\345\210\206\346\236\220.md" new file mode 100644 index 0000000000000000000000000000000000000000..e16f102c855e22532bb2c8b8a9d21ca0ab72e034 --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\241\254\344\273\266\347\223\266\351\242\210\347\202\271\345\210\206\346\236\220.md" @@ -0,0 +1,13 @@ +# 硬件瓶颈点分析 + +获取openGauss节点的CPU、内存、I/O和网络资源使用情况,确认这些资源是否已被充分利用,是否存在瓶颈点。 + +- **[CPU](CPU.md)** +通过top命令查看openGauss内节点CPU使用情况,分析是否存在由于CPU负载过高导致的性能瓶颈。 +- **[内存](内存.md)** +通过top命令查看openGauss节点内存使用情况,分析是否存在由于内存占用率过高导致的性能瓶颈。 +- **[I/O](I-O.md)** +通过iostat、pidstat命令或openGauss健康检查工具查看openGauss内节点I/O繁忙度和吞吐量,分析是否存在由于I/O导致的性能瓶颈。 +- **[网络](网络.md)** +通过sar或ifconfig命令查看openGauss内节点网络使用情况,分析是否存在由于网络导致的性能瓶颈。 + diff --git "a/content/zh/docs/Developerguide/\347\241\256\345\256\232\346\200\247\350\203\275\350\260\203\344\274\230\350\214\203\345\233\264.md" "b/content/zh/docs/Developerguide/\347\241\256\345\256\232\346\200\247\350\203\275\350\260\203\344\274\230\350\214\203\345\233\264.md" new file mode 100644 index 0000000000000000000000000000000000000000..fd1b7e1d26cb7e96d13af1bf28b06fc62ae27b09 --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\241\256\345\256\232\346\200\247\350\203\275\350\260\203\344\274\230\350\214\203\345\233\264.md" @@ -0,0 +1,46 @@ +# 确定性能调优范围 + +数据库性能调优通常发生在用户对业务的执行效率不满意,期望通过调优加快业务执行的情况下。正如“[性能因素](#zh-cn_topic_0237121484_zh-cn_topic_0073259659_zh-cn_topic_0040046511_section218827915473)”小节所述,数据库性能受影响因素多,从而性能调优是一项复杂的工程,有些时候无法系统性地说明和解释,而是依赖于DBA的经验判断。尽管如此,此处还是期望能尽量系统性的对性能调优方法加以说明,方便应用开发人员和刚接触openGauss的DBA参考。 + +## 性能因素 + +多个性能因素会影响数据库性能,了解这些因素可以帮助定位和分析性能问题。 + +- 系统资源 + + 数据库性能在很大程度上依赖于磁盘的I/O和内存使用情况。为了准确设置性能指标,用户需要了解openGauss部署硬件的基本性能。CPU,硬盘,磁盘控制器,内存和网络接口等这些硬件性能将显著影响数据库的运行速度。 + +- 负载 + + 负载等于数据库系统的需求总量,它会随着时间变化。总体负载包含用户查询,应用程序,并行作业,事务以及数据库随时传递的系统命令。比如:多用户在执行多个查询时会提高负载。负载会显著地影响数据库的性能。了解工作负载高峰期可以帮助用户更合理地利用系统资源,更有效地完成系统任务。 + +- 吞吐量 + + 使用系统的吞吐量来定义处理数据的整体能力。数据库的吞吐量以每秒的查询次数、每秒的处理事务数量或平均响应时间来测量。数据库的处理能力与底层系统(磁盘I/O,CPU速度,存储器带宽等)有密切的关系,所以当设置数据库吞吐量目标时,需要提前了解硬件的性能。 + +- 竞争 + + 竞争是指两组或多组负载组件尝试使用冲突的方式使用系统的情况。比如,多条查询视图同一时间更新相同的数据,或者多个大量的负载争夺系统资源。随着竞争的增加,吞吐量下降。 + +- 优化 + + 数据库优化可以影响到整个系统的性能。在执行SQL制定、数据库配置参数、表设计、数据分布等操作时,启用数据库查询优化器打造最有效的执行计划。 + + +## 调优范围确定 + +性能调优主要通过查看openGauss节点的CPU、内存、I/O和网络这些硬件资源的使用情况,确认这些资源是否已被充分利用,是否存在瓶颈点,然后针对性调优。 + +- 如果某个资源已达瓶颈,则: + 1. 检查关键的操作系统参数和数据库参数是否合理设置,进行[系统调优指南](系统调优指南.md)。 + 2. 通过查询最耗时的SQL语句、跑不出来的SQL语句,找出耗资源的SQL,进行[SQL调优指南](SQL调优指南.md)。 + +- 如果所有资源均未达瓶颈,则表明性能仍有提升潜力。可以查询最耗时的SQL语句,或者跑不出来的SQL语句,进行针对性的[SQL调优指南](SQL调优指南.md)。 + +- **[硬件瓶颈点分析](硬件瓶颈点分析.md)** +获取openGauss节点的CPU、内存、I/O和网络资源使用情况,确认这些资源是否已被充分利用,是否存在瓶颈点。 +- **[查询最耗性能的SQL](查询最耗性能的SQL.md)** + +- **[分析作业是否被阻塞](分析作业是否被阻塞.md)** + + diff --git "a/content/zh/docs/Developerguide/\347\244\272\344\276\213-2.md" "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-2.md" new file mode 100644 index 0000000000000000000000000000000000000000..13413d1f0a2b361c23388dba0ab4fe13c339153f --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-2.md" @@ -0,0 +1,339 @@ +# 示例 + +## 常用功能示例代码 + +``` +// 此示例演示如何通过ODBC方式获取openGauss中的数据。 +// DBtest.c (compile with: libodbc.so) +#include +#include +#include +#ifdef WIN32 +#include +#endif +SQLHENV V_OD_Env; // Handle ODBC environment +SQLHSTMT V_OD_hstmt; // Handle statement +SQLHDBC V_OD_hdbc; // Handle connection +char typename[100]; +SQLINTEGER value = 100; +SQLINTEGER V_OD_erg,V_OD_buffer,V_OD_err,V_OD_id; +int main(int argc,char *argv[]) +{ + // 1. 申请环境句柄 + V_OD_erg = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&V_OD_Env); + if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) + { + printf("Error AllocHandle\n"); + exit(0); + } + // 2. 设置环境属性(版本信息) + SQLSetEnvAttr(V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); + // 3. 申请连接句柄 + V_OD_erg = SQLAllocHandle(SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc); + if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) + { + SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); + exit(0); + } + // 4. 设置连接属性 + SQLSetConnectAttr(V_OD_hdbc, SQL_ATTR_AUTOCOMMIT, SQL_AUTOCOMMIT_ON, 0); + // 5. 连接数据源,这里的“userName”与“password”分别表示连接数据库的用户名和用户密码,请根据实际情况修改。 + // 如果odbc.ini文件中已经配置了用户名密码,那么这里可以留空("");但是不建议这么做,因为一旦odbc.ini权限管理不善,将导致数据库用户密码泄露。 + V_OD_erg = SQLConnect(V_OD_hdbc, (SQLCHAR*) "gaussdb", SQL_NTS, + (SQLCHAR*) "userName", SQL_NTS, (SQLCHAR*) "password", SQL_NTS); + if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) + { + printf("Error SQLConnect %d\n",V_OD_erg); + SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); + exit(0); + } + printf("Connected !\n"); + // 6. 设置语句属性 + SQLSetStmtAttr(V_OD_hstmt,SQL_ATTR_QUERY_TIMEOUT,(SQLPOINTER *)3,0); + // 7. 申请语句句柄 + SQLAllocHandle(SQL_HANDLE_STMT, V_OD_hdbc, &V_OD_hstmt); + // 8. 直接执行SQL语句。 + SQLExecDirect(V_OD_hstmt,"drop table IF EXISTS customer_t1",SQL_NTS); + SQLExecDirect(V_OD_hstmt,"CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));",SQL_NTS); + SQLExecDirect(V_OD_hstmt,"insert into customer_t1 values(25,li)",SQL_NTS); + // 9. 准备执行 + SQLPrepare(V_OD_hstmt,"insert into customer_t1 values(?)",SQL_NTS); + // 10. 绑定参数 + SQLBindParameter(V_OD_hstmt,1,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,0,0, + &value,0,NULL); + // 11. 执行准备好的语句 + SQLExecute(V_OD_hstmt); + SQLExecDirect(V_OD_hstmt,"select id from testtable",SQL_NTS); + // 12. 获取结果集某一列的属性 + SQLColAttribute(V_OD_hstmt,1,SQL_DESC_TYPE,typename,100,NULL,NULL); + printf("SQLColAtrribute %s\n",typename); + // 13. 绑定结果集 + SQLBindCol(V_OD_hstmt,1,SQL_C_SLONG, (SQLPOINTER)&V_OD_buffer,150, + (SQLLEN *)&V_OD_err); + // 14. 通过SQLFetch取结果集中数据 + V_OD_erg=SQLFetch(V_OD_hstmt); + // 15. 通过SQLGetData获取并返回数据。 + while(V_OD_erg != SQL_NO_DATA) + { + SQLGetData(V_OD_hstmt,1,SQL_C_SLONG,(SQLPOINTER)&V_OD_id,0,NULL); + printf("SQLGetData ----ID = %d\n",V_OD_id); + V_OD_erg=SQLFetch(V_OD_hstmt); + }; + printf("Done !\n"); + // 16. 断开数据源连接并释放句柄资源 + SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt); + SQLDisconnect(V_OD_hdbc); + SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc); + SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); + return(0); + } +``` + +## 批量绑定示例代码 + +``` +/********************************************************************** +* 请在数据源中打开UseBatchProtocol,同时指定数据库中参数support_batch_bind +* 为on +* CHECK_ERROR的作用是检查并打印错误信息。 +* 此示例将与用户交互式获取DSN、模拟的数据量,忽略的数据量,并将最终数据入库到test_odbc_batch_insert中 +***********************************************************************/ +#include +#include +#include +#include +#include + +#include "util.c" + +void Exec(SQLHDBC hdbc, SQLCHAR* sql) +{ + SQLRETURN retcode; // Return status + SQLHSTMT hstmt = SQL_NULL_HSTMT; // Statement handle + SQLCHAR loginfo[2048]; + + // Allocate Statement Handle + retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); + CHECK_ERROR(retcode, "SQLAllocHandle(SQL_HANDLE_STMT)", + hstmt, SQL_HANDLE_STMT); + + // Prepare Statement + retcode = SQLPrepare(hstmt, (SQLCHAR*) sql, SQL_NTS); + sprintf((char*)loginfo, "SQLPrepare log: %s", (char*)sql); + CHECK_ERROR(retcode, loginfo, hstmt, SQL_HANDLE_STMT); + + // Execute Statement + retcode = SQLExecute(hstmt); + sprintf((char*)loginfo, "SQLExecute stmt log: %s", (char*)sql); + CHECK_ERROR(retcode, loginfo, hstmt, SQL_HANDLE_STMT); + + // Free Handle + retcode = SQLFreeHandle(SQL_HANDLE_STMT, hstmt); + sprintf((char*)loginfo, "SQLFreeHandle stmt log: %s", (char*)sql); + CHECK_ERROR(retcode, loginfo, hstmt, SQL_HANDLE_STMT); +} + +int main () +{ + SQLHENV henv = SQL_NULL_HENV; + SQLHDBC hdbc = SQL_NULL_HDBC; + int batchCount = 1000; + SQLLEN rowsCount = 0; + int ignoreCount = 0; + + SQLRETURN retcode; + SQLCHAR dsn[1024] = {'\0'}; + SQLCHAR loginfo[2048]; + + // 交互获取数据源名称 + getStr("Please input your DSN", (char*)dsn, sizeof(dsn), 'N'); + // 交互获取批量绑定的数据量 + getInt("batchCount", &batchCount, 'N', 1); + do + { + // 交互获取批量绑定的数据中,不要入库的数据量 + getInt("ignoreCount", &ignoreCount, 'N', 1); + if (ignoreCount > batchCount) + { + printf("ignoreCount(%d) should be less than batchCount(%d)\n", ignoreCount, batchCount); + } + }while(ignoreCount > batchCount); + + retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); + CHECK_ERROR(retcode, "SQLAllocHandle(SQL_HANDLE_ENV)", + henv, SQL_HANDLE_ENV); + + // Set ODBC Verion + retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, + (SQLPOINTER*)SQL_OV_ODBC3, 0); + CHECK_ERROR(retcode, "SQLSetEnvAttr(SQL_ATTR_ODBC_VERSION)", + henv, SQL_HANDLE_ENV); + + // Allocate Connection + retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); + CHECK_ERROR(retcode, "SQLAllocHandle(SQL_HANDLE_DBC)", + henv, SQL_HANDLE_DBC); + + // Set Login Timeout + retcode = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0); + CHECK_ERROR(retcode, "SQLSetConnectAttr(SQL_LOGIN_TIMEOUT)", + hdbc, SQL_HANDLE_DBC); + + // Set Auto Commit + retcode = SQLSetConnectAttr(hdbc, SQL_ATTR_AUTOCOMMIT, + (SQLPOINTER)(1), 0); + CHECK_ERROR(retcode, "SQLSetConnectAttr(SQL_ATTR_AUTOCOMMIT)", + hdbc, SQL_HANDLE_DBC); + + // Connect to DSN + sprintf(loginfo, "SQLConnect(DSN:%s)", dsn); + retcode = SQLConnect(hdbc, (SQLCHAR*) dsn, SQL_NTS, + (SQLCHAR*) NULL, 0, NULL, 0); + CHECK_ERROR(retcode, loginfo, hdbc, SQL_HANDLE_DBC); + + // init table info. + Exec(hdbc, "drop table if exists test_odbc_batch_insert"); + Exec(hdbc, "create table test_odbc_batch_insert(id int primary key, col varchar2(50))"); + + // 下面的代码根据用户输入的数据量,构造出将要入库的数据: + { + SQLRETURN retcode; + SQLHSTMT hstmtinesrt = SQL_NULL_HSTMT; + int i; + SQLCHAR *sql = NULL; + SQLINTEGER *ids = NULL; + SQLCHAR *cols = NULL; + SQLLEN *bufLenIds = NULL; + SQLLEN *bufLenCols = NULL; + SQLUSMALLINT *operptr = NULL; + SQLUSMALLINT *statusptr = NULL; + SQLULEN process = 0; + + // 这里是按列构造,每个字段的内存连续存放在一起。 + ids = (SQLINTEGER*)malloc(sizeof(ids[0]) * batchCount); + cols = (SQLCHAR*)malloc(sizeof(cols[0]) * batchCount * 50); + // 这里是每个字段中,每一行数据的内存长度。 + bufLenIds = (SQLLEN*)malloc(sizeof(bufLenIds[0]) * batchCount); + bufLenCols = (SQLLEN*)malloc(sizeof(bufLenCols[0]) * batchCount); + // 该行是否需要被处理,SQL_PARAM_IGNORE 或 SQL_PARAM_PROCEED + operptr = (SQLUSMALLINT*)malloc(sizeof(operptr[0]) * batchCount); + memset(operptr, 0, sizeof(operptr[0]) * batchCount); + // 该行的处理结果。 + // 注:由于数据库中处理方式是同一语句隶属同一事务中,所以如果出错,那么待处理数据都将是出错的,并不会部分入库。 + statusptr = (SQLUSMALLINT*)malloc(sizeof(statusptr[0]) * batchCount); + memset(statusptr, 88, sizeof(statusptr[0]) * batchCount); + + if (NULL == ids || NULL == cols || NULL == bufLenCols || NULL == bufLenIds) + { + fprintf(stderr, "FAILED:\tmalloc data memory failed\n"); + goto exit; + } + + for (int i = 0; i < batchCount; i++) + { + ids[i] = i; + sprintf(cols + 50 * i, "column test value %d", i); + bufLenIds[i] = sizeof(ids[i]); + bufLenCols[i] = strlen(cols + 50 * i); + operptr[i] = (i < ignoreCount) ? SQL_PARAM_IGNORE : SQL_PARAM_PROCEED; + } + + // Allocate Statement Handle + retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmtinesrt); + CHECK_ERROR(retcode, "SQLAllocHandle(SQL_HANDLE_STMT)", + hstmtinesrt, SQL_HANDLE_STMT); + + // Prepare Statement + sql = (SQLCHAR*)"insert into test_odbc_batch_insert values(?, ?)"; + retcode = SQLPrepare(hstmtinesrt, (SQLCHAR*) sql, SQL_NTS); + sprintf((char*)loginfo, "SQLPrepare log: %s", (char*)sql); + CHECK_ERROR(retcode, loginfo, hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLSetStmtAttr(hstmtinesrt, SQL_ATTR_PARAMSET_SIZE, (SQLPOINTER)batchCount, sizeof(batchCount)); + CHECK_ERROR(retcode, "SQLSetStmtAttr", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLBindParameter(hstmtinesrt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(ids[0]), 0,&(ids[0]), 0, bufLenIds); + CHECK_ERROR(retcode, "SQLBindParameter for id", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLBindParameter(hstmtinesrt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 50, 50, cols, 50, bufLenCols); + CHECK_ERROR(retcode, "SQLBindParameter for cols", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLSetStmtAttr(hstmtinesrt, SQL_ATTR_PARAMS_PROCESSED_PTR, (SQLPOINTER)&process, sizeof(process)); + CHECK_ERROR(retcode, "SQLSetStmtAttr for SQL_ATTR_PARAMS_PROCESSED_PTR", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLSetStmtAttr(hstmtinesrt, SQL_ATTR_PARAM_STATUS_PTR, (SQLPOINTER)statusptr, sizeof(statusptr[0]) * batchCount); + CHECK_ERROR(retcode, "SQLSetStmtAttr for SQL_ATTR_PARAM_STATUS_PTR", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLSetStmtAttr(hstmtinesrt, SQL_ATTR_PARAM_OPERATION_PTR, (SQLPOINTER)operptr, sizeof(operptr[0]) * batchCount); + CHECK_ERROR(retcode, "SQLSetStmtAttr for SQL_ATTR_PARAM_OPERATION_PTR", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLExecute(hstmtinesrt); + sprintf((char*)loginfo, "SQLExecute stmt log: %s", (char*)sql); + CHECK_ERROR(retcode, loginfo, hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLRowCount(hstmtinesrt, &rowsCount); + CHECK_ERROR(retcode, "SQLRowCount execution", hstmtinesrt, SQL_HANDLE_STMT); + + if (rowsCount != (batchCount - ignoreCount)) + { + sprintf(loginfo, "(batchCount - ignoreCount)(%d) != rowsCount(%d)", (batchCount - ignoreCount), rowsCount); + CHECK_ERROR(SQL_ERROR, loginfo, NULL, SQL_HANDLE_STMT); + } + else + { + sprintf(loginfo, "(batchCount - ignoreCount)(%d) == rowsCount(%d)", (batchCount - ignoreCount), rowsCount); + CHECK_ERROR(SQL_SUCCESS, loginfo, NULL, SQL_HANDLE_STMT); + } + + // check row number returned + if (rowsCount != process) + { + sprintf(loginfo, "process(%d) != rowsCount(%d)", process, rowsCount); + CHECK_ERROR(SQL_ERROR, loginfo, NULL, SQL_HANDLE_STMT); + } + else + { + sprintf(loginfo, "process(%d) == rowsCount(%d)", process, rowsCount); + CHECK_ERROR(SQL_SUCCESS, loginfo, NULL, SQL_HANDLE_STMT); + } + + for (int i = 0; i < batchCount; i++) + { + if (i < ignoreCount) + { + if (statusptr[i] != SQL_PARAM_UNUSED) + { + sprintf(loginfo, "statusptr[%d](%d) != SQL_PARAM_UNUSED", i, statusptr[i]); + CHECK_ERROR(SQL_ERROR, loginfo, NULL, SQL_HANDLE_STMT); + } + } + else if (statusptr[i] != SQL_PARAM_SUCCESS) + { + sprintf(loginfo, "statusptr[%d](%d) != SQL_PARAM_SUCCESS", i, statusptr[i]); + CHECK_ERROR(SQL_ERROR, loginfo, NULL, SQL_HANDLE_STMT); + } + } + + retcode = SQLFreeHandle(SQL_HANDLE_STMT, hstmtinesrt); + sprintf((char*)loginfo, "SQLFreeHandle hstmtinesrt"); + CHECK_ERROR(retcode, loginfo, hstmtinesrt, SQL_HANDLE_STMT); + } + + +exit: + printf ("\nComplete.\n"); + + // Connection + if (hdbc != SQL_NULL_HDBC) { + SQLDisconnect(hdbc); + SQLFreeHandle(SQL_HANDLE_DBC, hdbc); + } + + // Environment + if (henv != SQL_NULL_HENV) + SQLFreeHandle(SQL_HANDLE_ENV, henv); + + return 0; +} +``` + diff --git "a/content/zh/docs/Developerguide/\347\244\272\344\276\213-3.md" "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-3.md" new file mode 100644 index 0000000000000000000000000000000000000000..3d185d7384c14d0d93c4a09d3a336844af9cd152 --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-3.md" @@ -0,0 +1,446 @@ +# 示例 + +## 常用功能示例代码1 + +``` +// 此示例演示如何通过ODBC方式获取openGauss中的数据。 +// DBtest.c (compile with: libodbc.so) +#include +#include +#include +#ifdef WIN32 +#include +#endif +SQLHENV V_OD_Env; // Handle ODBC environment +SQLHSTMT V_OD_hstmt; // Handle statement +SQLHDBC V_OD_hdbc; // Handle connection +char typename[100]; +SQLINTEGER value = 100; +SQLINTEGER V_OD_erg,V_OD_buffer,V_OD_err,V_OD_id; +int main(int argc,char *argv[]) +{ + // 1. 申请环境句柄 + V_OD_erg = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&V_OD_Env); + if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) + { + printf("Error AllocHandle\n"); + exit(0); + } + // 2. 设置环境属性(版本信息) + SQLSetEnvAttr(V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); + // 3. 申请连接句柄 + V_OD_erg = SQLAllocHandle(SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc); + if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) + { + SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); + exit(0); + } + // 4. 设置连接属性 + SQLSetConnectAttr(V_OD_hdbc, SQL_ATTR_AUTOCOMMIT, SQL_AUTOCOMMIT_ON, 0); + // 5. 连接数据源,这里的“userName”与“password”分别表示连接数据库的用户名和用户密码,请根据实际情况修改。 + // 如果odbc.ini文件中已经配置了用户名密码,那么这里可以留空("");但是不建议这么做,因为一旦odbc.ini权限管理不善,将导致数据库用户密码泄露。 + V_OD_erg = SQLConnect(V_OD_hdbc, (SQLCHAR*) "gaussdb", SQL_NTS, + (SQLCHAR*) "userName", SQL_NTS, (SQLCHAR*) "password", SQL_NTS); + if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO)) + { + printf("Error SQLConnect %d\n",V_OD_erg); + SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); + exit(0); + } + printf("Connected !\n"); + // 6. 设置语句属性 + SQLSetStmtAttr(V_OD_hstmt,SQL_ATTR_QUERY_TIMEOUT,(SQLPOINTER *)3,0); + // 7. 申请语句句柄 + SQLAllocHandle(SQL_HANDLE_STMT, V_OD_hdbc, &V_OD_hstmt); + // 8. 直接执行SQL语句。 + SQLExecDirect(V_OD_hstmt,"drop table IF EXISTS customer_t1",SQL_NTS); + SQLExecDirect(V_OD_hstmt,"CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));",SQL_NTS); + SQLExecDirect(V_OD_hstmt,"insert into customer_t1 values(25,li)",SQL_NTS); + // 9. 准备执行 + SQLPrepare(V_OD_hstmt,"insert into customer_t1 values(?)",SQL_NTS); + // 10. 绑定参数 + SQLBindParameter(V_OD_hstmt,1,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,0,0, + &value,0,NULL); + // 11. 执行准备好的语句 + SQLExecute(V_OD_hstmt); + SQLExecDirect(V_OD_hstmt,"select id from testtable",SQL_NTS); + // 12. 获取结果集某一列的属性 + SQLColAttribute(V_OD_hstmt,1,SQL_DESC_TYPE,typename,100,NULL,NULL); + printf("SQLColAtrribute %s\n",typename); + // 13. 绑定结果集 + SQLBindCol(V_OD_hstmt,1,SQL_C_SLONG, (SQLPOINTER)&V_OD_buffer,150, + (SQLLEN *)&V_OD_err); + // 14. 通过SQLFetch取结果集中数据 + V_OD_erg=SQLFetch(V_OD_hstmt); + // 15. 通过SQLGetData获取并返回数据。 + while(V_OD_erg != SQL_NO_DATA) + { + SQLGetData(V_OD_hstmt,1,SQL_C_SLONG,(SQLPOINTER)&V_OD_id,0,NULL); + printf("SQLGetData ----ID = %d\n",V_OD_id); + V_OD_erg=SQLFetch(V_OD_hstmt); + }; + printf("Done !\n"); + // 16. 断开数据源连接并释放句柄资源 + SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt); + SQLDisconnect(V_OD_hdbc); + SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc); + SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env); + return(0); + } +``` + +## 常用功能示例代码2 + +``` +#include +#include +#include + +static void exit_nicely(PGconn *conn) +{ + PQfinish(conn); + exit(1); +} + +int main(int argc, char **argv) +{ + const char *conninfo; + PGconn *conn; + PGresult *res; + int nFields; + int i,j; + + /* + * 如果用户在命令行上提供了一个参数,将它用作连接信息串。 + * 否则默认用设置 dbname=postgres 并且为所有其他链接参数使用环境变量或默认值。 + */ + if (argc > 1) + conninfo = argv[1]; + else + conninfo = "dbname = postgres"; + + /* 建立到数据库的一个连接 */ + conn = PQconnectdb(conninfo); + + /* 检查看后端连接是否成功建立 */ + if (PQstatus(conn) != CONNECTION_OK) + { + fprintf(stderr, "Connection to database failed: %s", + PQerrorMessage(conn)); + exit_nicely(conn); + } + + /* + * 我们的测试案例这里涉及使用一个游标,对它我们必须用在一个事务块内。 + * 我们可以在一个单一的 "select * from pg_database" 的 PQexec() 中做整个事情, + * 但是作为一个好的例子它太琐碎。 + */ + + /* 开始一个事务块 */ + res = PQexec(conn, "BEGIN"); + if (PQresultStatus(res) != PGRES_COMMAND_OK) + { + fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn)); + PQclear(res); + exit_nicely(conn); + } + + /* 任何时候不再需要 PGresult 时,应该 PQclear 它来避免内存泄露 */ + PQclear(res); + + /* 从 pg_database 取得行,它是数据库的系统目录 */ + res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from pg_database"); + if (PQresultStatus(res) != PGRES_COMMAND_OK) + { + fprintf(stderr, "DECLARE CURSOR failed: %s", PQerrorMessage(conn)); + PQclear(res); + exit_nicely(conn); + } + PQclear(res); + + res = PQexec(conn, "FETCH ALL in myportal"); + if (PQresultStatus(res) != PGRES_TUPLES_OK) + { + fprintf(stderr, "FETCH ALL failed: %s", PQerrorMessage(conn)); + PQclear(res); + exit_nicely(conn); + } + + /* 首先,打印出属性名 */ + nFields = PQnfields(res); + for (i = 0; i < nFields; i++) + printf("%-15s", PQfname(res, i)); + printf("\n\n"); + + /* 接下来,打印出行 */ + for (i = 0; i < PQntuples(res); i++) + { + for (j = 0; j < nFields; j++) + printf("%-15s", PQgetvalue(res, i, j)); + printf("\n"); + } + + PQclear(res); + + /* 关闭入口,我们不需要考虑检查错误 */ + res = PQexec(conn, "CLOSE myportal"); + PQclear(res); + + /* 结束事务 */ + res = PQexec(conn, "END"); + PQclear(res); + + /* 关闭到数据库的连接并且清理 */ + PQfinish(conn); + + return 0; +} +``` + +## 批量绑定示例代码 + +``` +/********************************************************************** +* 请在数据源中打开UseBatchProtocol,同时指定数据库中参数support_batch_bind +* 为on +* CHECK_ERROR的作用是检查并打印错误信息。 +* 此示例将与用户交互式获取DSN、模拟的数据量,忽略的数据量,并将最终数据入库到test_odbc_batch_insert中 +***********************************************************************/ +#include +#include +#include +#include +#include + +#include "util.c" + +void Exec(SQLHDBC hdbc, SQLCHAR* sql) +{ + SQLRETURN retcode; // Return status + SQLHSTMT hstmt = SQL_NULL_HSTMT; // Statement handle + SQLCHAR loginfo[2048]; + + // Allocate Statement Handle + retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); + CHECK_ERROR(retcode, "SQLAllocHandle(SQL_HANDLE_STMT)", + hstmt, SQL_HANDLE_STMT); + + // Prepare Statement + retcode = SQLPrepare(hstmt, (SQLCHAR*) sql, SQL_NTS); + sprintf((char*)loginfo, "SQLPrepare log: %s", (char*)sql); + CHECK_ERROR(retcode, loginfo, hstmt, SQL_HANDLE_STMT); + + // Execute Statement + retcode = SQLExecute(hstmt); + sprintf((char*)loginfo, "SQLExecute stmt log: %s", (char*)sql); + CHECK_ERROR(retcode, loginfo, hstmt, SQL_HANDLE_STMT); + + // Free Handle +retcode = SQLFreeHandle(SQL_HANDLE_STMT, hstmt); + sprintf((char*)loginfo, "SQLFreeHandle stmt log: %s", (char*)sql); + CHECK_ERROR(retcode, loginfo, hstmt, SQL_HANDLE_STMT); +} + +int main () +{ + SQLHENV henv = SQL_NULL_HENV; + SQLHDBC hdbc = SQL_NULL_HDBC; + int batchCount = 1000; + SQLLEN rowsCount = 0; + int ignoreCount = 0; + + SQLRETURN retcode; + SQLCHAR dsn[1024] = {'\0'}; + SQLCHAR loginfo[2048]; + + // 交互获取数据源名称 + getStr("Please input your DSN", (char*)dsn, sizeof(dsn), 'N'); + // 交互获取批量绑定的数据量 + getInt("batchCount", &batchCount, 'N', 1); + do + { + // 交互获取批量绑定的数据中,不要入库的数据量 + getInt("ignoreCount", &ignoreCount, 'N', 1); + if (ignoreCount > batchCount) + { + printf("ignoreCount(%d) should be less than batchCount(%d)\n", ignoreCount, batchCount); + } + }while(ignoreCount > batchCount); + + retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); + CHECK_ERROR(retcode, "SQLAllocHandle(SQL_HANDLE_ENV)", + henv, SQL_HANDLE_ENV); + + // Set ODBC Verion + retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, + (SQLPOINTER*)SQL_OV_ODBC3, 0); + CHECK_ERROR(retcode, "SQLSetEnvAttr(SQL_ATTR_ODBC_VERSION)", + henv, SQL_HANDLE_ENV); + + // Allocate Connection + retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); + CHECK_ERROR(retcode, "SQLAllocHandle(SQL_HANDLE_DBC)", + henv, SQL_HANDLE_DBC); + + // Set Login Timeout + retcode = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0); + CHECK_ERROR(retcode, "SQLSetConnectAttr(SQL_LOGIN_TIMEOUT)", + hdbc, SQL_HANDLE_DBC); + + // Set Auto Commit + retcode = SQLSetConnectAttr(hdbc, SQL_ATTR_AUTOCOMMIT, + (SQLPOINTER)(1), 0); + CHECK_ERROR(retcode, "SQLSetConnectAttr(SQL_ATTR_AUTOCOMMIT)", + hdbc, SQL_HANDLE_DBC); + + // Connect to DSN + sprintf(loginfo, "SQLConnect(DSN:%s)", dsn); + retcode = SQLConnect(hdbc, (SQLCHAR*) dsn, SQL_NTS, + (SQLCHAR*) NULL, 0, NULL, 0); + CHECK_ERROR(retcode, loginfo, hdbc, SQL_HANDLE_DBC); + + // init table info. + Exec(hdbc, "drop table if exists test_odbc_batch_insert"); + Exec(hdbc, "create table test_odbc_batch_insert(id int primary key, col varchar2(50))"); + + // 下面的代码根据用户输入的数据量,构造出将要入库的数据: + { + SQLRETURN retcode; + SQLHSTMT hstmtinesrt = SQL_NULL_HSTMT; + int i; + SQLCHAR *sql = NULL; + SQLINTEGER *ids = NULL; + SQLCHAR *cols = NULL; + SQLLEN *bufLenIds = NULL; + SQLLEN *bufLenCols = NULL; + SQLUSMALLINT *operptr = NULL; + SQLUSMALLINT *statusptr = NULL; + SQLULEN process = 0; + + // 这里是按列构造,每个字段的内存连续存放在一起。 + ids = (SQLINTEGER*)malloc(sizeof(ids[0]) * batchCount); + cols = (SQLCHAR*)malloc(sizeof(cols[0]) * batchCount * 50); + // 这里是每个字段中,每一行数据的内存长度。 + bufLenIds = (SQLLEN*)malloc(sizeof(bufLenIds[0]) * batchCount); + bufLenCols = (SQLLEN*)malloc(sizeof(bufLenCols[0]) * batchCount); + // 该行是否需要被处理,SQL_PARAM_IGNORE 或 SQL_PARAM_PROCEED + operptr = (SQLUSMALLINT*)malloc(sizeof(operptr[0]) * batchCount); + memset(operptr, 0, sizeof(operptr[0]) * batchCount); + // 该行的处理结果。 + // 注:由于数据库中处理方式是同一语句隶属同一事务中,所以如果出错,那么待处理数据都将是出错的,并不会部分入库。 + statusptr = (SQLUSMALLINT*)malloc(sizeof(statusptr[0]) * batchCount); + memset(statusptr, 88, sizeof(statusptr[0]) * batchCount); + + if (NULL == ids || NULL == cols || NULL == bufLenCols || NULL == bufLenIds) + { + fprintf(stderr, "FAILED:\tmalloc data memory failed\n"); + goto exit; + } + + for (int i = 0; i < batchCount; i++) + { + ids[i] = i; + sprintf(cols + 50 * i, "column test value %d", i); + bufLenIds[i] = sizeof(ids[i]); + bufLenCols[i] = strlen(cols + 50 * i); + operptr[i] = (i < ignoreCount) ? SQL_PARAM_IGNORE : SQL_PARAM_PROCEED; + } + + // Allocate Statement Handle + retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmtinesrt); + CHECK_ERROR(retcode, "SQLAllocHandle(SQL_HANDLE_STMT)", + hstmtinesrt, SQL_HANDLE_STMT); + + // Prepare Statement + sql = (SQLCHAR*)"insert into test_odbc_batch_insert values(?, ?)"; + retcode = SQLPrepare(hstmtinesrt, (SQLCHAR*) sql, SQL_NTS); + sprintf((char*)loginfo, "SQLPrepare log: %s", (char*)sql); + CHECK_ERROR(retcode, loginfo, hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLSetStmtAttr(hstmtinesrt, SQL_ATTR_PARAMSET_SIZE, (SQLPOINTER)batchCount, sizeof(batchCount)); + CHECK_ERROR(retcode, "SQLSetStmtAttr", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLBindParameter(hstmtinesrt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, sizeof(ids[0]), 0,&(ids[0]), 0, bufLenIds); + CHECK_ERROR(retcode, "SQLBindParameter for id", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLBindParameter(hstmtinesrt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 50, 50, cols, 50, bufLenCols); + CHECK_ERROR(retcode, "SQLBindParameter for cols", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLSetStmtAttr(hstmtinesrt, SQL_ATTR_PARAMS_PROCESSED_PTR, (SQLPOINTER)&process, sizeof(process)); + CHECK_ERROR(retcode, "SQLSetStmtAttr for SQL_ATTR_PARAMS_PROCESSED_PTR", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLSetStmtAttr(hstmtinesrt, SQL_ATTR_PARAM_STATUS_PTR, (SQLPOINTER)statusptr, sizeof(statusptr[0]) * batchCount); + CHECK_ERROR(retcode, "SQLSetStmtAttr for SQL_ATTR_PARAM_STATUS_PTR", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLSetStmtAttr(hstmtinesrt, SQL_ATTR_PARAM_OPERATION_PTR, (SQLPOINTER)operptr, sizeof(operptr[0]) * batchCount); + CHECK_ERROR(retcode, "SQLSetStmtAttr for SQL_ATTR_PARAM_OPERATION_PTR", hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLExecute(hstmtinesrt); + sprintf((char*)loginfo, "SQLExecute stmt log: %s", (char*)sql); + CHECK_ERROR(retcode, loginfo, hstmtinesrt, SQL_HANDLE_STMT); + + retcode = SQLRowCount(hstmtinesrt, &rowsCount); + CHECK_ERROR(retcode, "SQLRowCount execution", hstmtinesrt, SQL_HANDLE_STMT); + + if (rowsCount != (batchCount - ignoreCount)) + { + sprintf(loginfo, "(batchCount - ignoreCount)(%d) != rowsCount(%d)", (batchCount - ignoreCount), rowsCount); + CHECK_ERROR(SQL_ERROR, loginfo, NULL, SQL_HANDLE_STMT); + } + else + { + sprintf(loginfo, "(batchCount - ignoreCount)(%d) == rowsCount(%d)", (batchCount - ignoreCount), rowsCount); + CHECK_ERROR(SQL_SUCCESS, loginfo, NULL, SQL_HANDLE_STMT); + } + + if (rowsCount != process) + { + sprintf(loginfo, "process(%d) != rowsCount(%d)", process, rowsCount); + CHECK_ERROR(SQL_ERROR, loginfo, NULL, SQL_HANDLE_STMT); + } + else + { + sprintf(loginfo, "process(%d) == rowsCount(%d)", process, rowsCount); + CHECK_ERROR(SQL_SUCCESS, loginfo, NULL, SQL_HANDLE_STMT); + } + + for (int i = 0; i < batchCount; i++) + { + if (i < ignoreCount) + { + if (statusptr[i] != SQL_PARAM_UNUSED) + { + sprintf(loginfo, "statusptr[%d](%d) != SQL_PARAM_UNUSED", i, statusptr[i]); + CHECK_ERROR(SQL_ERROR, loginfo, NULL, SQL_HANDLE_STMT); + } + } + else if (statusptr[i] != SQL_PARAM_SUCCESS) + { + sprintf(loginfo, "statusptr[%d](%d) != SQL_PARAM_SUCCESS", i, statusptr[i]); + CHECK_ERROR(SQL_ERROR, loginfo, NULL, SQL_HANDLE_STMT); + } + } + + retcode = SQLFreeHandle(SQL_HANDLE_STMT, hstmtinesrt); + sprintf((char*)loginfo, "SQLFreeHandle hstmtinesrt"); + CHECK_ERROR(retcode, loginfo, hstmtinesrt, SQL_HANDLE_STMT); + } + + +exit: + printf ("\nComplete.\n"); + + // Connection + if (hdbc != SQL_NULL_HDBC) { + SQLDisconnect(hdbc); + SQLFreeHandle(SQL_HANDLE_DBC, hdbc); + } + + // Environment + if (henv != SQL_NULL_HENV) + SQLFreeHandle(SQL_HANDLE_ENV, henv); + + return 0; +} +``` + diff --git "a/content/zh/docs/Developerguide/\347\244\272\344\276\213-\344\273\216MY\345\220\221openGauss\350\277\233\350\241\214\346\225\260\346\215\256\350\277\201\347\247\273.md" "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-\344\273\216MY\345\220\221openGauss\350\277\233\350\241\214\346\225\260\346\215\256\350\277\201\347\247\273.md" new file mode 100644 index 0000000000000000000000000000000000000000..9e986cc2a4a7e0dbbea82699a03c3ab7436f613a --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-\344\273\216MY\345\220\221openGauss\350\277\233\350\241\214\346\225\260\346\215\256\350\277\201\347\247\273.md" @@ -0,0 +1,91 @@ +# 示例:从MY向openGauss进行数据迁移 + +下面示例演示如何通过CopyManager从MY向openGauss进行数据迁移的过程。 + +``` +import java.io.StringReader; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import org.postgresql.copy.CopyManager; +import org.postgresql.core.BaseConnection; + +public class Migration{ + + public static void main(String[] args) { + String url = new String("jdbc:postgresql://10.180.155.74:8000/postgres"); //数据库URL + String user = new String("jack"); //openGauss用户名 + String pass = new String("Gauss@123"); //openGauss密码 + String tablename = new String("migration_table"); //定义表信息 + String delimiter = new String("|"); //定义分隔符 + String encoding = new String("UTF8"); //定义字符集 + String driver = "org.postgresql.Driver"; + StringBuffer buffer = new StringBuffer(); //定义存放格式化数据的缓存 + + try { + //获取源数据库查询结果集 + ResultSet rs = getDataSet(); + + //遍历结果集,逐行获取记录 + //将每条记录中各字段值,按指定分隔符分割,由换行符结束,拼成一个字符串 + //把拼成的字符串,添加到缓存buffer + while (rs.next()) { + buffer.append(rs.getString(1) + delimiter + + rs.getString(2) + delimiter + + rs.getString(3) + delimiter + + rs.getString(4) + + "\n"); + } + rs.close(); + + try { + //建立目标数据库连接 + Class.forName(driver); + Connection conn = DriverManager.getConnection(url, user, pass); + BaseConnection baseConn = (BaseConnection) conn; + baseConn.setAutoCommit(false); + + //初始化表信息 + String sql = "Copy " + tablename + " from STDIN DELIMITER " + "'" + delimiter + "'" + " ENCODING " + "'" + encoding + "'"; + + //提交缓存buffer中的数据 + CopyManager cp = new CopyManager(baseConn); + StringReader reader = new StringReader(buffer.toString()); + cp.copyIn(sql, reader); + baseConn.commit(); + reader.close(); + baseConn.close(); + } catch (ClassNotFoundException e) { + e.printStackTrace(System.out); + } catch (SQLException e) { + e.printStackTrace(System.out); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + //******************************** + // 从源数据库返回查询结果集 + //********************************* + private static ResultSet getDataSet() { + ResultSet rs = null; + try { + Class.forName("com.MY.jdbc.Driver").newInstance(); + Connection conn = DriverManager.getConnection("jdbc:MY://10.119.179.227:3306/jack?useSSL=false&allowPublicKeyRetrieval=true", "jack", "Gauss@123"); + Statement stmt = conn.createStatement(); + rs = stmt.executeQuery("select * from migration_table"); + } catch (SQLException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + return rs; + } +} +``` + diff --git "a/content/zh/docs/Developerguide/\347\244\272\344\276\213-\345\270\270\347\224\250\346\223\215\344\275\234.md" "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-\345\270\270\347\224\250\346\223\215\344\275\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..cd76af61c81c1e099fc86a3de4b1615d7613445d --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-\345\270\270\347\224\250\346\223\215\344\275\234.md" @@ -0,0 +1,218 @@ +# 示例:常用操作 + +## 示例1 + +此示例将演示如何基于openGauss提供的JDBC接口开发应用程序。 + +``` +//DBtest.java +//演示基于JDBC开发的主要步骤,会涉及创建数据库、创建表、插入数据等。 + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.CallableStatement; + +public class DBTest { + + //创建数据库连接。 + public static Connection GetConnection(String username, String passwd) { + String driver = "org.postgresql.Driver"; + String sourceURL = "jdbc:postgresql://localhost:8000/postgres"; + Connection conn = null; + try { + //加载数据库驱动。 + Class.forName(driver).newInstance(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + try { + //创建数据库连接。 + conn = DriverManager.getConnection(sourceURL, username, passwd); + System.out.println("Connection succeed!"); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + return conn; + }; + + //执行普通SQL语句,创建customer_t1表。 + public static void CreateTable(Connection conn) { + Statement stmt = null; + try { + stmt = conn.createStatement(); + + //执行普通SQL语句。 + int rc = stmt + .executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));"); + + stmt.close(); + } catch (SQLException e) { + if (stmt != null) { + try { + stmt.close(); + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + e.printStackTrace(); + } + } + + //执行预处理语句,批量插入数据。 + public static void BatchInsertData(Connection conn) { + PreparedStatement pst = null; + + try { + //生成预处理语句。 + pst = conn.prepareStatement("INSERT INTO customer_t1 VALUES (?,?)"); + for (int i = 0; i < 3; i++) { + //添加参数。 + pst.setInt(1, i); + pst.setString(2, "data " + i); + pst.addBatch(); + } + //执行批处理。 + pst.executeBatch(); + pst.close(); + } catch (SQLException e) { + if (pst != null) { + try { + pst.close(); + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + e.printStackTrace(); + } + } + + //执行预编译语句,更新数据。 + public static void ExecPreparedSQL(Connection conn) { + PreparedStatement pstmt = null; + try { + pstmt = conn + .prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1"); + pstmt.setString(1, "new Data"); + int rowcount = pstmt.executeUpdate(); + pstmt.close(); + } catch (SQLException e) { + if (pstmt != null) { + try { + pstmt.close(); + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + e.printStackTrace(); + } + } + + +//执行存储过程。 + public static void ExecCallableSQL(Connection conn) { + CallableStatement cstmt = null; + try { + + cstmt=conn.prepareCall("{? = CALL TESTPROC(?,?,?)}"); + cstmt.setInt(2, 50); + cstmt.setInt(1, 20); + cstmt.setInt(3, 90); + cstmt.registerOutParameter(4, Types.INTEGER); //注册out类型的参数,类型为整型。 + cstmt.execute(); + int out = cstmt.getInt(4); //获取out参数 + System.out.println("The CallableStatment TESTPROC returns:"+out); + cstmt.close(); + } catch (SQLException e) { + if (cstmt != null) { + try { + cstmt.close(); + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + e.printStackTrace(); + } + } + + + /** + * 主程序,逐步调用各静态方法。 + * @param args + */ + public static void main(String[] args) { + //创建数据库连接。 + Connection conn = GetConnection("tester", "Password1234"); + + //创建表。 + CreateTable(conn); + + //批插数据。 + BatchInsertData(conn); + + //执行预编译语句,更新数据。 + ExecPreparedSQL(conn); + + //执行存储过程。 + ExecCallableSQL(conn); + + //关闭数据库连接。 + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + + } + +} +``` + +## 示例2 客户端内存占用过多解决 + +此示例主要使用setFetchSize来调整客户端内存使用,它的原理是通过数据库游标来分批获取服务器端数据,但它会加大网络交互,可能会损失部分性能。 + +由于游标事务内有效,故需要先关闭自动提交,最后需要执行手动提交。 + +``` +// 关闭掉自动提交 +conn.setAutoCommit(false); +Statement st = conn.createStatement(); + +// 打开游标,每次获取50行数据 +st.setFetchSize(50); +ResultSet rs = st.executeQuery("SELECT * FROM mytable"); +conn.commit(); +while (rs.next()) +{ + System.out.print("a row was returned."); +} +rs.close(); + +// 关闭服务器游标。 +st.setFetchSize(0); +rs = st.executeQuery("SELECT * FROM mytable"); +conn.commit(); +while (rs.next()) +{ + System.out.print("many rows were returned."); +} +rs.close(); + +// Close the statement. +st.close(); +conn.close(); +``` + +执行完毕后可使用如下命令恢复自动提交: + +``` +conn.setAutoCommit(true); +``` + diff --git "a/content/zh/docs/Developerguide/\347\244\272\344\276\213-\351\200\232\350\277\207\346\234\254\345\234\260\346\226\207\344\273\266\345\257\274\345\205\245\345\257\274\345\207\272\346\225\260\346\215\256.md" "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-\351\200\232\350\277\207\346\234\254\345\234\260\346\226\207\344\273\266\345\257\274\345\205\245\345\257\274\345\207\272\346\225\260\346\215\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..ea38cb7485a8c641476528c8a06ec1377a0bbf99 --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-\351\200\232\350\277\207\346\234\254\345\234\260\346\226\207\344\273\266\345\257\274\345\205\245\345\257\274\345\207\272\346\225\260\346\215\256.md" @@ -0,0 +1,113 @@ +# 示例:通过本地文件导入导出数据 + +在使用JAVA语言基于openGauss进行二次开发时,可以使用CopyManager接口,通过流方式,将数据库中的数据导出到本地文件或者将本地文件导入数据库中,文件格式支持CSV、TEXT等格式。 + +样例程序如下,执行时需要加载openGauss jdbc驱动。 + +``` +import java.sql.Connection; +import java.sql.DriverManager; +import java.io.IOException; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.sql.SQLException; +import org.postgresql.copy.CopyManager; +import org.postgresql.core.BaseConnection; + +public class Copy{ + + public static void main(String[] args) + { + String urls = new String("jdbc:postgresql://10.180.155.74:8000/postgres"); //数据库URL + String username = new String("jack"); //用户名 + String password = new String("Gauss@123"); //密码 + String tablename = new String("migration_table"); //定义表信息 + String tablename1 = new String("migration_table_1"); //定义表信息 + String driver = "org.postgresql.Driver"; + Connection conn = null; + + try { + Class.forName(driver); + conn = DriverManager.getConnection(urls, username, password); + } catch (ClassNotFoundException e) { + e.printStackTrace(System.out); + } catch (SQLException e) { + e.printStackTrace(System.out); + } + + // 将SELECT * FROM migration_table查询结果导出到本地文件d:/data.txt + try { + copyToFile(conn, "d:/data.txt", "(SELECT * FROM migration_table)"); + } catch (SQLException e) { + k + e.printStackTrace(); + } catch (IOException e) { + + e.printStackTrace(); + } + //将d:/data.txt中的数据导入到migration_table_1中。 + try { + copyFromFile(conn, "d:/data.txt", tablename1); + } catch (SQLException e) { + e.printStackTrace(); + } catch (IOException e) { + + e.printStackTrace(); + } + + // 将migration_table_1中的数据导出到本地文件d:/data1.txt + try { + copyToFile(conn, "d:/data1.txt", tablename1); + } catch (SQLException e) { + + e.printStackTrace(); + } catch (IOException e) { + + + e.printStackTrace(); + } + } + // 使用copyIn把数据从文件中导入数据库, + public static void copyFromFile(Connection connection, String filePath, String tableName) + throws SQLException, IOException { + + FileInputStream fileInputStream = null; + + try { + CopyManager copyManager = new CopyManager((BaseConnection)connection); + fileInputStream = new FileInputStream(filePath); + copyManager.copyIn("COPY " + tableName + " FROM STDIN", fileInputStream); + } finally { + if (fileInputStream != null) { + try { + fileInputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + // 使用copyOut把数据从数据库中导出到文件中 + public static void copyToFile(Connection connection, String filePath, String tableOrQuery) + throws SQLException, IOException { + + FileOutputStream fileOutputStream = null; + + try { + CopyManager copyManager = new CopyManager((BaseConnection)connection); + fileOutputStream = new FileOutputStream(filePath); + copyManager.copyOut("COPY " + tableOrQuery + " TO STDOUT", fileOutputStream); + } finally { + if (fileOutputStream != null) { + try { + fileOutputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } +} +``` + diff --git "a/content/zh/docs/Developerguide/\347\244\272\344\276\213-\351\207\215\346\226\260\346\211\247\350\241\214\345\272\224\347\224\250SQL.md" "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-\351\207\215\346\226\260\346\211\247\350\241\214\345\272\224\347\224\250SQL.md" new file mode 100644 index 0000000000000000000000000000000000000000..2afff9ef3e53d9ee3ad5034210763d9ad77bb5aa --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\244\272\344\276\213-\351\207\215\346\226\260\346\211\247\350\241\214\345\272\224\347\224\250SQL.md" @@ -0,0 +1,199 @@ +# 示例:重新执行应用SQL + +当主数据库节点故障且10s未恢复时,openGauss会将对应的备数据库节点升主,使openGauss正常运行。备升主期间正在运行的作业会失败;备升主后启动的作业不会再受影响。如果要做到数据库节点主备切换过程中,上层业务不感知,可参考此示例构建业务层SQL重试机制。 + +``` +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +class ExitHandler extends Thread { + private Statement cancel_stmt = null; + + public ExitHandler(Statement stmt) { + super("Exit Handler"); + this.cancel_stmt = stmt; + } + public void run() { + System.out.println("exit handle"); + try { + this.cancel_stmt.cancel(); + } catch (SQLException e) { + System.out.println("cancel query failed."); + e.printStackTrace(); + } + } +} + +public class SQLRetry { + //创建数据库连接。 + public static Connection GetConnection(String username, String passwd) { + String driver = "org.postgresql.Driver"; + String sourceURL = "jdbc:postgresql://10.131.72.136:8000/postgres"; + Connection conn = null; + try { + //加载数据库驱动。 + Class.forName(driver).newInstance(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + try { + //创建数据库连接。 + conn = DriverManager.getConnection(sourceURL, username, passwd); + System.out.println("Connection succeed!"); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + return conn; +} + + //执行普通SQL语句,创建jdbc_test1表。 + public static void CreateTable(Connection conn) { + Statement stmt = null; + try { + stmt = conn.createStatement(); + + + Runtime.getRuntime().addShutdownHook(new ExitHandler(stmt)); + + //执行普通SQL语句。 + int rc2 = stmt + .executeUpdate("DROP TABLE if exists jdbc_test1;"); + + int rc1 = stmt + .executeUpdate("CREATE TABLE jdbc_test1(col1 INTEGER, col2 VARCHAR(10));"); + + stmt.close(); + } catch (SQLException e) { + if (stmt != null) { + try { + stmt.close(); + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + e.printStackTrace(); + } + } + + //执行预处理语句,批量插入数据。 + public static void BatchInsertData(Connection conn) { + PreparedStatement pst = null; + + try { + //生成预处理语句。 + pst = conn.prepareStatement("INSERT INTO jdbc_test1 VALUES (?,?)"); + for (int i = 0; i < 100; i++) { + //添加参数。 + pst.setInt(1, i); + pst.setString(2, "data " + i); + pst.addBatch(); + } + //执行批处理。 + pst.executeBatch(); + pst.close(); + } catch (SQLException e) { + if (pst != null) { + try { + pst.close(); + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + e.printStackTrace(); + } + } + + //执行预编译语句,更新数据。 + private static boolean QueryRedo(Connection conn){ + PreparedStatement pstmt = null; + boolean retValue = false; + try { + pstmt = conn + .prepareStatement("SELECT col1 FROM jdbc_test1 WHERE col2 = ?"); + + pstmt.setString(1, "data 10"); + ResultSet rs = pstmt.executeQuery(); + + while (rs.next()) { + System.out.println("col1 = " + rs.getString("col1")); + } + rs.close(); + + pstmt.close(); + retValue = true; + } catch (SQLException e) { + System.out.println("catch...... retValue " + retValue); + if (pstmt != null) { + try { + pstmt.close(); + } catch (SQLException e1) { + e1.printStackTrace(); + } + } + e.printStackTrace(); + } + + System.out.println("finesh......"); + return retValue; + } + + //查询语句,执行失败重试,重试次数可配置。 + public static void ExecPreparedSQL(Connection conn) throws InterruptedException { + int maxRetryTime = 50; + int time = 0; + String result = null; + do { + time++; + try { + System.out.println("time:" + time); + boolean ret = QueryRedo(conn); + if(ret == false){ + System.out.println("retry, time:" + time); + Thread.sleep(10000); + QueryRedo(conn); + } + } catch (Exception e) { + e.printStackTrace(); + } + } while (null == result && time < maxRetryTime); + + } + + /** + * 主程序,逐步调用各静态方法。 + * @param args + * @throws InterruptedException + */ + public static void main(String[] args) throws InterruptedException { + //创建数据库连接。 + Connection conn = GetConnection("testuser", "test@123"); + + //创建表。 + CreateTable(conn); + + //批插数据。 + BatchInsertData(conn); + + //执行预编译语句,更新数据。 + ExecPreparedSQL(conn); + + //关闭数据库连接。 + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + + } + + } +``` + diff --git "a/content/zh/docs/Developerguide/\347\244\272\344\276\213.md" "b/content/zh/docs/Developerguide/\347\244\272\344\276\213.md" index 13413d1f0a2b361c23388dba0ab4fe13c339153f..cf705c67203f9e664e85b6644fc71a6241b614c6 100644 --- "a/content/zh/docs/Developerguide/\347\244\272\344\276\213.md" +++ "b/content/zh/docs/Developerguide/\347\244\272\344\276\213.md" @@ -1,4 +1,4 @@ -# 示例 +# 示例 ## 常用功能示例代码 diff --git "a/content/zh/docs/Developerguide/\347\244\272\344\276\2132-\344\273\216MY\345\220\221openGauss\346\225\260\346\215\256\345\272\223\350\277\233\350\241\214\346\225\260\346\215\256\350\277\201\347\247\273.md" "b/content/zh/docs/Developerguide/\347\244\272\344\276\2132-\344\273\216MY\345\220\221openGauss\346\225\260\346\215\256\345\272\223\350\277\233\350\241\214\346\225\260\346\215\256\350\277\201\347\247\273.md" new file mode 100644 index 0000000000000000000000000000000000000000..3933f86ad71742b3277304447238f22649c6962a --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\244\272\344\276\2132-\344\273\216MY\345\220\221openGauss\346\225\260\346\215\256\345\272\223\350\277\233\350\241\214\346\225\260\346\215\256\350\277\201\347\247\273.md" @@ -0,0 +1,91 @@ +# 示例2:从MY向openGauss数据库进行数据迁移 + +下面示例演示如何通过CopyManager从MY向openGauss数据库进行数据迁移的过程。 + +``` +import java.io.StringReader; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import org.postgresql.copy.CopyManager; +import org.postgresql.core.BaseConnection; + +public class Migration{ + + public static void main(String[] args) { + String url = new String("jdbc:postgresql://localhost:8000/postgres"); //数据库URL + String user = new String("username"); //openGauss数据库用户名 + String pass = new String("passwd"); //openGauss数据库密码 + String tablename = new String("migration_table_1"); //定义表信息 + String delimiter = new String("|"); //定义分隔符 + String encoding = new String("UTF8"); //定义字符集 + String driver = "org.postgresql.Driver"; + StringBuffer buffer = new StringBuffer(); //定义存放格式化数据的缓存 + + try { + //获取源数据库查询结果集 + ResultSet rs = getDataSet(); + + //遍历结果集,逐行获取记录 + //将每条记录中各字段值,按指定分隔符分割,由换行符结束,拼成一个字符串 + //把拼成的字符串,添加到缓存buffer + while (rs.next()) { + buffer.append(rs.getString(1) + delimiter + + rs.getString(2) + delimiter + + rs.getString(3) + delimiter + + rs.getString(4) + + "\n"); + } + rs.close(); + + try { + //建立目标数据库连接 + Class.forName(driver); + Connection conn = DriverManager.getConnection(url, user, pass); + BaseConnection baseConn = (BaseConnection) conn; + baseConn.setAutoCommit(false); + + //初始化表信息 + String sql = "Copy " + tablename + " from STDIN with (DELIMITER " + "'" + delimiter + "'" +","+ " ENCODING " + "'" + encoding + "'"); + + //提交缓存buffer中的数据 + CopyManager cp = new CopyManager(baseConn); + StringReader reader = new StringReader(buffer.toString()); + cp.copyIn(sql, reader); + baseConn.commit(); + reader.close(); + baseConn.close(); + } catch (ClassNotFoundException e) { + e.printStackTrace(System.out); + } catch (SQLException e) { + e.printStackTrace(System.out); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + //******************************** + // 从源数据库返回查询结果集 + //********************************* + private static ResultSet getDataSet() { + ResultSet rs = null; + try { + Class.forName("com.MY.jdbc.Driver").newInstance(); + Connection conn = DriverManager.getConnection("jdbc:MY://10.119.179.227:3306/jack?useSSL=false&allowPublicKeyRetrieval=true", "jack", "Gauss@123"); + Statement stmt = conn.createStatement(); + rs = stmt.executeQuery("select * from migration_table"); + } catch (SQLException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + return rs; + } +} +``` + diff --git "a/content/zh/docs/Developerguide/\347\251\272\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\347\251\272\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..201c493a3cbaf6cff912d6a33f47516fc1ae9ce0 --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\251\272\350\257\255\345\217\245.md" @@ -0,0 +1,20 @@ +# 空语句 + +在PL/SQL程序中,可以用NULL语句来说明“不用做任何事情”,相当于一个占位符,可以使某些语句变得有意义,提高程序的可读性。 + +## 语法 + +空语句的用法如下: + +``` +DECLARE + … +BEGIN + … + IF v_num IS NULL THEN + NULL; -- 不需要处理任何数据。 + END IF; +END; +/ +``` + diff --git "a/content/zh/docs/Developerguide/\347\256\200\345\215\225\350\241\250\350\276\276\345\274\217.md" "b/content/zh/docs/Developerguide/\347\256\200\345\215\225\350\241\250\350\276\276\345\274\217.md" index 58197c8979efcb0fe0699cd3628c7639b66553ba..f7ab23a0bcb260f9ed6b0dc2f5cbd9e0eeddf9cd 100644 --- "a/content/zh/docs/Developerguide/\347\256\200\345\215\225\350\241\250\350\276\276\345\274\217.md" +++ "b/content/zh/docs/Developerguide/\347\256\200\345\215\225\350\241\250\350\276\276\345\274\217.md" @@ -2,11 +2,11 @@ ## 逻辑表达式 -逻辑表达式的操作符和运算规则,请参见[逻辑操作符](逻辑操作符.md#ZH-CN_TOPIC_0242370429)。 +逻辑表达式的操作符和运算规则,请参见[逻辑操作符](逻辑操作符.md)。 ## 比较表达式 -常用的比较操作符,请参见[比较操作符](比较操作符.md#ZH-CN_TOPIC_0242370430)。 +常用的比较操作符,请参见[操作符](操作符.md)。 除比较操作符外,还可以使用以下句式结构: diff --git "a/content/zh/docs/Developerguide/\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230.md" "b/content/zh/docs/Developerguide/\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..a1e8f3548d87fefaa5f6e519faf9c116cebbd159 --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\256\227\345\255\220\347\272\247\350\260\203\344\274\230.md" @@ -0,0 +1,54 @@ +# 算子级调优 + +## 算子级调优介绍 + +一个查询语句要经过多个算子步骤才会输出最终的结果。由于各别算子耗时过长导致整体查询性能下降的情况比较常见。这些算子是整个查询的瓶颈算子。通用的优化手段是EXPLAIN ANALYZE/PERFORMANCE命令查看执行过程的瓶颈算子,然后进行针对性优化。 + +如下面的执行过程信息中,Hashagg算子的执行时间占总时间的:\(51016-13535\)/ 56476 ≈66%,此处Hashagg算子就是这个查询的瓶颈算子,在进行性能优化时应当优先考虑此算子的优化。 + +![](figures/zh-cn_image_0118861065.jpg) + +## 算子级调优示例 + +**示例1:**基表扫描时,对于点查或者范围扫描等过滤大量数据的查询,如果使用SeqScan全表扫描会比较耗时,可以在条件列上建立索引选择IndexScan进行索引扫描提升扫描效率。 + +``` +postgres=# explain (analyze on, costs off) select * from store_sales where ss_sold_date_sk = 2450944; + id | operation | A-time | A-rows | Peak Memory | A-width +----+--------------------------------+---------------------+--------+--------------+--------- + 1 | -> Streaming (type: GATHER) | 3666.020 | 3360 | 195KB | + 2 | -> Seq Scan on store_sales | [3594.611,3594.611] | 3360 | [34KB, 34KB] | +(2 rows) + + Predicate Information (identified by plan id) +----------------------------------------------- + 2 --Seq Scan on store_sales + Filter: (ss_sold_date_sk = 2450944) + Rows Removed by Filter: 4968936 +``` + +``` +postgres=# create index idx on store_sales_row(ss_sold_date_sk); +CREATE INDEX +postgres=# explain (analyze on, costs off) select * from store_sales_row where ss_sold_date_sk = 2450944; + id | operation | A-time | A-rows | Peak Memory | A-width +----+------------------------------------------------+-----------------+--------+--------------+---------- + 1 | -> Streaming (type: GATHER) | 81.524 | 3360 | 195KB | + 2 | -> Index Scan using idx on store_sales_row | [13.352,13.352] | 3360 | [34KB, 34KB] | +(2 rows) +``` + +上述例子中,全表扫描返回3360条数据,过滤掉大量数据,在ss\_sold\_date\_sk列上建立索引后,使用IndexScan扫描效率显著提高,从3.6秒提升到13毫秒。 + +**示例2:**如果从执行计划中看,两表join选择了NestLoop,而实际行数比较大时,NestLoop Join可能执行比较慢。如下的例子中NestLoop耗时181秒,如果设置参数enable\_mergejoin=off关掉Merge Join,同时设置参数enable\_nestloop=off关掉NestLoop,让优化器选择HashJoin,则Join耗时提升至200多毫秒。 + +![](figures/12-4-5-4-算子级调优(示例错乱调整1).png) + +![](figures/12-4-5-4-算子级调优(示例错乱调整2).png) + +**示例3**:通常情况下Agg选择HashAgg性能较好,如果大结果集选择了Sort+GroupAgg,则需要设置enable\_sort=off,HashAgg耗时明显优于Sort+GroupAgg。 + +![](figures/12-4-5-4-算子级调优(示例错乱调整示例3).png) + +![](figures/12-4-5-4-算子级调优(示例错乱调整示例3-1).png) + diff --git "a/content/zh/docs/Developerguide/\347\256\241\347\220\206\344\272\213\345\212\241.md" "b/content/zh/docs/Developerguide/\347\256\241\347\220\206\344\272\213\345\212\241.md" index b039f912cad0ce0e1aacda60ce916f32750d067d..96a877459d7b49ab254092130527628298aaf9f2 100644 --- "a/content/zh/docs/Developerguide/\347\256\241\347\220\206\344\272\213\345\212\241.md" +++ "b/content/zh/docs/Developerguide/\347\256\241\347\220\206\344\272\213\345\212\241.md" @@ -28,7 +28,7 @@ 事务隔离级别,它决定多个事务并发操作同一个对象时的处理方式。 >![](public_sys-resources/icon-note.gif) **说明:** ->在事务中第一个数据修改语句(SELECT,INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,事务隔离级别就不能再次设置。 +>在事务中第一个数据修改语句(SELECT, INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,事务隔离级别就不能再次设置。 - **READ COMMITTED**:读已提交隔离级别,事务只能读到已提交的数据而不会读到未提交的数据,这是缺省值。 diff --git "a/content/zh/docs/Developerguide/\347\256\241\347\220\206\345\221\230.md" "b/content/zh/docs/Developerguide/\347\256\241\347\220\206\345\221\230.md" index e67b0155d399f3ff17b057dd74b7d2af8db7ba19..8072dc53d9750a40ba79eb42ea94008a7b67901d 100644 --- "a/content/zh/docs/Developerguide/\347\256\241\347\220\206\345\221\230.md" +++ "b/content/zh/docs/Developerguide/\347\256\241\347\220\206\345\221\230.md" @@ -8,7 +8,7 @@ openGauss安装过程中自动生成的帐户称为初始用户。初始用户 ## 系统管理员 -系统管理员是指具有SYSADMIN属性的帐户,默认安装情况下具有与对象所有者相同的权限,但不包括dbms\_perf模式的对象权限。 +系统管理员是指具有SYSADMIN属性的帐户,默认安装情况下具有与对象所有者相同的权限,但不包括dbe\_perf模式的对象权限。 要创建新的系统管理员,请以初始用户或者系统管理员用户身份连接数据库,并使用带SYSADMIN选项的[CREATE USER](CREATE-USER.md)语句或 [ALTER USER](ALTER-USER.md)语句进行设置。 @@ -26,7 +26,7 @@ ALTER USER时,要求用户已存在。 ## 监控管理员 -监控管理员是指具有MONADMIN属性的帐户,具有查看dbms\_perf模式下视图和函数的权限,亦可以对dbms\_perf模式的对象权限进行授予或收回。 +监控管理员是指具有MONADMIN属性的帐户,具有查看dbe\_perf模式下视图和函数的权限,亦可以对dbe\_perf模式的对象权限进行授予或收回。 要创建新的监控管理员,请以初始用户身份连接数据库,并使用带MONADMIN选项的[CREATE USER](CREATE-USER.md)语句或 [ALTER USER](ALTER-USER.md)语句进行设置。 diff --git "a/content/zh/docs/Developerguide/\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" "b/content/zh/docs/Developerguide/\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" index 6f718c31651ee60a1e8efe58109ffb7fd8f0c23c..da00644862b9fa52710150a3943adc8b87d21af7 100644 --- "a/content/zh/docs/Developerguide/\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" +++ "b/content/zh/docs/Developerguide/\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\345\256\211\345\205\250.md" @@ -1,6 +1,6 @@ # 管理数据库安全 -- **[客户端接入认证](客户端接入认证-0.md)** +- **[客户端接入认证](客户端接入认证.md)** - **[管理用户及权限](管理用户及权限.md)** diff --git "a/content/zh/docs/Developerguide/\347\261\273\345\236\213\350\275\254\346\215\242.md" "b/content/zh/docs/Developerguide/\347\261\273\345\236\213\350\275\254\346\215\242.md" index e97377642853c6cbd0136c547e12bb3b6e808a06..44cd771234abef6fd14962812f21cc96e5d444f5 100644 --- "a/content/zh/docs/Developerguide/\347\261\273\345\236\213\350\275\254\346\215\242.md" +++ "b/content/zh/docs/Developerguide/\347\261\273\345\236\213\350\275\254\346\215\242.md" @@ -1,6 +1,6 @@ # 类型转换 -- **[概述](概述-15.md)** +- **[概述](概述-16.md)** - **[操作符](操作符.md)** diff --git "a/content/zh/docs/Developerguide/\347\263\273\347\273\237\344\277\241\346\201\257\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\347\263\273\347\273\237\344\277\241\346\201\257\345\207\275\346\225\260.md" index ab5509a1663140e2bf7709655c574f4bef7c6511..12691e36bd5d9e1149f802b9943928e511649da7 100644 --- "a/content/zh/docs/Developerguide/\347\263\273\347\273\237\344\277\241\346\201\257\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\347\263\273\347\273\237\344\277\241\346\201\257\345\207\275\346\225\260.md" @@ -110,9 +110,9 @@ (1 row) ``` - 备注:current\_user是用于权限检查的用户标识。通常,他表示会话用户,但是可以通过[SET ROLE](SET-ROLE.md#ZH-CN_TOPIC_0242370652)改变他。在函数执行的过程中随着属性SECURITY DEFINER的改变,其值也会改变。 + 备注:current\_user是用于权限检查的用户标识。通常,他表示会话用户,但是可以通过[SET ROLE](SET-ROLE.md)改变他。在函数执行的过程中随着属性SECURITY DEFINER的改变,其值也会改变。 -- pg\_current\_user\(\) +- pg\_current\_sessionid\(\) 描述:当前执行环境下的会话ID。 @@ -353,7 +353,7 @@ (1 row) ``` - 备注:session\_user通常是连接当前数据库的初始用户,不过系统管理员可以用[SET SESSION AUTHORIZATION](SET-SESSION-AUTHORIZATION.md#ZH-CN_TOPIC_0242370653)修改这个设置。 + 备注:session\_user通常是连接当前数据库的初始用户,不过系统管理员可以用[SET SESSION AUTHORIZATION](SET-SESSION-AUTHORIZATION.md)修改这个设置。 - user @@ -477,7 +477,7 @@ 返回类型:Boolean - 备注:has\_function\_privilege检查一个用户是否能以指定方式访问一个函数。其参数类似has\_table\_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考[对象标识符类型](对象标识符类型.md#ZH-CN_TOPIC_0242370424))。访问权限类型必须是EXECUTE。 + 备注:has\_function\_privilege检查一个用户是否能以指定方式访问一个函数。其参数类似has\_table\_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考[对象标识符类型](对象标识符类型.md))。访问权限类型必须是EXECUTE。 - has\_language\_privilege\(user, language, privilege\) @@ -777,18 +777,6 @@ postgres=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid); 备注:pg\_get\_keywords返回一组关于描述服务器识别SQL关键字的记录。word列包含关键字。catcode列包含一个分类代码:U表示通用的,C表示列名,T表示类型或函数名,或R表示保留。catdesc列包含了一个可能本地化描述分类的字符串。 -- pg\_get\_ruledef\(rule\_oid\) - - 描述:获取规则的CREATE RULE命令 - - 返回类型:text - -- pg\_get\_ruledef\(rule\_oid, pretty\_bool\) - - 描述:获取规则的CREATE RULE命令 - - 返回类型:text - - pg\_get\_userbyid\(role\_oid\) 描述:获取给定OID的角色名 @@ -871,7 +859,7 @@ postgres=# SELECT relname FROM pg_class WHERE pg_table_is_visible(oid); 返回类型:regtype - 备注:pg\_typeof返回传递给他的值的数据类型OID。这可能有助于故障排除或动态构造SQL查询。声明此函数返回regtype,这是一个OID别名类型(请参考[对象标识符类型](对象标识符类型.md#ZH-CN_TOPIC_0242370424));这意味着它是一个为了比较而显示类型名称的OID。 + 备注:pg\_typeof返回传递给他的值的数据类型OID。这可能有助于故障排除或动态构造SQL查询。声明此函数返回regtype,这是一个OID别名类型(请参考[对象标识符类型](对象标识符类型.md));这意味着它是一个为了比较而显示类型名称的OID。 示例: diff --git "a/content/zh/docs/Developerguide/\347\263\273\347\273\237\346\223\215\344\275\234.md" "b/content/zh/docs/Developerguide/\347\263\273\347\273\237\346\223\215\344\275\234.md" index fa62627f688822e4afc88871591d5f4f68b48af7..11551873c2801be8a2b4620fff7dbf76a97cbf0f 100644 --- "a/content/zh/docs/Developerguide/\347\263\273\347\273\237\346\223\215\344\275\234.md" +++ "b/content/zh/docs/Developerguide/\347\263\273\347\273\237\346\223\215\344\275\234.md" @@ -8,15 +8,15 @@ openGauss通过SQL语句执行不同的系统操作,比如:设置变量, ## 显示执行计划 -显示openGauss为SQL语句规划的执行计划,请参考[EXPLAIN](EXPLAIN.md#ZH-CN_TOPIC_0242370627)。 +显示openGauss为SQL语句规划的执行计划,请参考[EXPLAIN](EXPLAIN.md)。 ## 事务日志检查点 -预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。CHECKPOINT强迫立即进行检查,而不是等到下一次调度时的检查点。请参考[CHECKPOINT](CHECKPOINT.md#ZH-CN_TOPIC_0242370553)。 +预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。CHECKPOINT强迫立即进行检查,而不是等到下一次调度时的检查点。请参考[CHECKPOINT](CHECKPOINT.md)。 ## 垃圾收集 -进行垃圾收集以及可选择的对数据库进行分析。请参考[VACUUM](VACUUM.md#ZH-CN_TOPIC_0242370659)。 +进行垃圾收集以及可选择的对数据库进行分析。请参考[VACUUM](VACUUM.md)。 ## 收集统计信息 @@ -24,5 +24,5 @@ openGauss通过SQL语句执行不同的系统操作,比如:设置变量, ## 设置当前事务的约束检查模式 -设置当前事务里的约束检查的特性。请参考[SET CONSTRAINTS](SET-CONSTRAINTS.md#ZH-CN_TOPIC_0242370651)。 +设置当前事务里的约束检查的特性。请参考[SET CONSTRAINTS](SET-CONSTRAINTS.md)。 diff --git "a/content/zh/docs/Developerguide/\347\263\273\347\273\237\350\247\206\345\233\276.md" "b/content/zh/docs/Developerguide/\347\263\273\347\273\237\350\247\206\345\233\276.md" index 8d0fc22f7792afea80a32dec991b65fc54fb5b69..fdff4254acb897669ce6262df892f97d90ee9f5d 100644 --- "a/content/zh/docs/Developerguide/\347\263\273\347\273\237\350\247\206\345\233\276.md" +++ "b/content/zh/docs/Developerguide/\347\263\273\347\273\237\350\247\206\345\233\276.md" @@ -1,7 +1,5 @@ # 系统视图 -- **[GET\_GTM\_LITE\_STATUS](GET_GTM_LITE_STATUS.md)** - - **[GS\_SESSION\_CPU\_STATISTICS](GS_SESSION_CPU_STATISTICS.md)** - **[GS\_SESSION\_MEMORY\_STATISTICS](GS_SESSION_MEMORY_STATISTICS.md)** @@ -33,7 +31,7 @@ - **[MPP\_TABLES](MPP_TABLES.md)** - **[PG\_AVAILABLE\_EXTENSION\_VERSIONS](PG_AVAILABLE_EXTENSION_VERSIONS.md)** -PG\_AVAILABLE\_EXTENSION\_VERSIONS视图显示数据库中某些特性的扩展版本信息。 + - **[PG\_AVAILABLE\_EXTENSIONS](PG_AVAILABLE_EXTENSIONS.md)** - **[PG\_CURSORS](PG_CURSORS.md)** @@ -66,8 +64,6 @@ PG\_AVAILABLE\_EXTENSION\_VERSIONS视图显示数据库中某些特性的扩展 - **[PG\_RULES](PG_RULES.md)** -- **[PG\_RUNNING\_XACTS](PG_RUNNING_XACTS.md)** - - **[PG\_SECLABELS](PG_SECLABELS.md)** - **[PG\_SESSION\_WLMSTAT](PG_SESSION_WLMSTAT.md)** @@ -140,8 +136,6 @@ PG\_AVAILABLE\_EXTENSION\_VERSIONS视图显示数据库中某些特性的扩展 - **[PG\_TIMEZONE\_NAMES](PG_TIMEZONE_NAMES.md)** -- **[PG\_TOTAL\_MEMORY\_DETAIL](PG_TOTAL_MEMORY_DETAIL.md)** - - **[PG\_TOTAL\_USER\_RESOURCE\_INFO](PG_TOTAL_USER_RESOURCE_INFO.md)** - **[PG\_USER](PG_USER.md)** @@ -162,15 +156,13 @@ PG\_AVAILABLE\_EXTENSION\_VERSIONS视图显示数据库中某些特性的扩展 - **[GS\_SESSION\_MEMORY](GS_SESSION_MEMORY.md)** -- **[GS\_SESSION\_MEMORY\_CONTEXT](GS_SESSION_MEMORY_CONTEXT.md)** - - **[GS\_SESSION\_MEMORY\_DETAIL](GS_SESSION_MEMORY_DETAIL.md)** - **[GS\_SESSION\_STAT](GS_SESSION_STAT.md)** - **[GS\_SESSION\_TIME](GS_SESSION_TIME.md)** -- **[GS\_THREAD\_MEMORY\_CONTEXT](GS_THREAD_MEMORY_CONTEXT.md)** +- **[GS\_THREAD\_MEMORY\_DETAIL](GS_THREAD_MEMORY_DETAIL.md)** - **[GS\_TOTAL\_MEMORY\_DETAIL](GS_TOTAL_MEMORY_DETAIL.md)** diff --git "a/content/zh/docs/Developerguide/\347\263\273\347\273\237\350\260\203\344\274\230\346\214\207\345\215\227.md" "b/content/zh/docs/Developerguide/\347\263\273\347\273\237\350\260\203\344\274\230\346\214\207\345\215\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..c0393374502b470dcb7a53a7ce7e2e0399c72f5e --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\263\273\347\273\237\350\260\203\344\274\230\346\214\207\345\215\227.md" @@ -0,0 +1,11 @@ +# 系统调优指南 + +系统调优是指进行操作系统级以及数据库系统级的调优,更充分地利用机器的CPU、内存、I/O和网络资源,避免资源冲突,提升整个系统查询的吞吐量。 + +- **[操作系统参数调优](操作系统参数调优.md)** +在性能调优过程中,可以根据实际业务情况修改关键操作系统\(OS\)配置参数,以提升openGauss数据库的性能。 +- **[数据库系统参数调优](数据库系统参数调优.md)** + +- **[配置LLVM](配置LLVM.md)** + + diff --git "a/content/zh/docs/Developerguide/\347\273\217\351\252\214\346\200\273\347\273\223-SQL\350\257\255\345\217\245\346\224\271\345\206\231\350\247\204\345\210\231.md" "b/content/zh/docs/Developerguide/\347\273\217\351\252\214\346\200\273\347\273\223-SQL\350\257\255\345\217\245\346\224\271\345\206\231\350\247\204\345\210\231.md" new file mode 100644 index 0000000000000000000000000000000000000000..61c962f193f9d1eddc0cca380c5afd51a907f8c6 --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\273\217\351\252\214\346\200\273\347\273\223-SQL\350\257\255\345\217\245\346\224\271\345\206\231\350\247\204\345\210\231.md" @@ -0,0 +1,57 @@ +# 经验总结:SQL语句改写规则 + +根据数据库的SQL执行机制以及大量的实践,总结发现:通过一定的规则调整SQL语句,在保证结果正确的基础上,能够提高SQL执行效率。如果遵守这些规则,常常能够大幅度提升业务查询效率。 + +- **使用union all代替union** + + union在合并两个集合时会执行去重操作,而union all则直接将两个结果集合并、不执行去重。执行去重会消耗大量的时间,因此,在一些实际应用场景中,如果通过业务逻辑已确认两个集合不存在重叠,可用union all替代union以便提升性能。 + +- **join列增加非空过滤条件** + + 若join列上的NULL值较多,则可以加上is not null过滤条件,以实现数据的提前过滤,提高join效率。 + +- **not in转not exists** + + not in语句需要使用nestloop anti join来实现,而not exists则可以通过hash anti join来实现。在join列不存在null值的情况下,not exists和not in等价。因此在确保没有null值时,可以通过将not in转换为not exists,通过生成hash join来提升查询效率。 + + 如下所示,如果t2.d2字段中没有null值\(t2.d2字段在表定义中not null\)查询可以修改为 + + ``` + SELECT * FROM t1 WHERE NOT EXISTS (SELECT * FROM t2 WHERE t1.c1=t2.d2); + ``` + + 产生的计划如下: + + ``` + QUERY PLAN + ------------------------------ + Hash Anti Join + Hash Cond: (t1.c1 = t2.d2) + -> Seq Scan on t1 + -> Hash + -> Seq Scan on t2 + (5 rows) + ``` + +- **选择hashagg。** + + 查询中GROUP BY语句如果生成了groupagg+sort的plan性能会比较差,可以通过加大work\_mem的方法生成hashagg的plan,因为不用排序而提高性能。 + +- **尝试将函数替换为case语句。** + + openGauss函数调用性能较低,如果出现过多的函数调用导致性能下降很多,可以根据情况把可下推函数的函数改成CASE表达式。 + +- **避免对索引使用函数或表达式运算。** + + 对索引使用函数或表达式运算会停止使用索引转而执行全表扫描。 + +- **尽量避免在where子句中使用!=或<\>操作符、null值判断、or连接、参数隐式转换。** +- **对复杂SQL语句进行拆分。** + + 对于过于复杂并且不易通过以上方法调整性能的SQL可以考虑拆分的方法,把SQL中某一部分拆分成独立的SQL并把执行结果存入临时表,拆分常见的场景包括但不限于: + + - 作业中多个SQL有同样的子查询,并且子查询数据量较大。 + - Plan cost计算不准,导致子查询hash bucket太小,比如实际数据1000W行,hash bucket只有1000。 + - 函数(如substr,to\_number)导致大数据量子查询选择度计算不准。 + + diff --git "a/content/zh/docs/Developerguide/\347\273\237\350\256\241\344\277\241\346\201\257\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\347\273\237\350\256\241\344\277\241\346\201\257\345\207\275\346\225\260.md" index 2d2d38fb3abc03a839347a2a99944a25d3dbdad4..f7ceaa17a67246c25914e919a8a6c73dc7579bd9 100644 --- "a/content/zh/docs/Developerguide/\347\273\237\350\256\241\344\277\241\346\201\257\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\347\273\237\350\256\241\344\277\241\346\201\257\345\207\275\346\225\260.md" @@ -360,28 +360,28 @@ - - - -

    参数

    描述

    +

    描述

    取值范围

    +

    取值范围

    ssl

    +

    ssl

    表示是否启动SSL功能。

    +

    表示是否启动SSL功能。

    • on:开启SSL功能。
    • off:关闭SSL功能。
    +
    • on:开启SSL功能。
    • off:关闭SSL功能。

    默认值:on

    require_ssl

    +

    require_ssl

    设置服务器端是否强制要求SSL连接。该参数只有当参数ssl为on时才有效。

    +

    设置服务器端是否强制要求SSL连接。该参数只有当参数ssl为on时才有效。

    • on:服务器端强制要求SSL连接。
    • off:服务器端对是否通过SSL连接不作强制要求。
    +
    • on:服务器端强制要求SSL连接。
    • off:服务器端对是否通过SSL连接不作强制要求。

    默认值:off

    ssl_cert_file

    +

    ssl_cert_file

    指定服务器证书文件,包含服务器端的公钥。服务器证书用以表明服务器身份的合法性,公钥将发送给对端用来对数据进行加密。

    +

    指定服务器证书文件,包含服务器端的公钥。服务器证书用以表明服务器身份的合法性,公钥将发送给对端用来对数据进行加密。

    请以实际的证书名为准。必须使用相对路径,相对路径是相对于数据目录的。

    +

    请以实际的证书名为准。必须使用相对路径,相对路径是相对于数据目录的。

    默认值:server.crt

    ssl_key_file

    +

    ssl_key_file

    指定服务器私钥文件,用以对公钥加密的数据进行解密。

    +

    指定服务器私钥文件,用以对公钥加密的数据进行解密。

    请以实际的服务器私钥名称为准。必须使用相对路径,相对路径是相对于数据目录的。

    +

    请以实际的服务器私钥名称为准。必须使用相对路径,相对路径是相对于数据目录的。

    默认值:server.key

    ssl_ca_file

    +

    ssl_ca_file

    CA服务器的根证书。此参数可选择配置,需要验证客户端证书的合法性时才需要配置。

    +

    CA服务器的根证书。此参数可选择配置,需要验证客户端证书的合法性时才需要配置。

    请以实际的CA服务器根证书名称为准。

    -

    默认值cacert.pem

    +

    请以实际的CA服务器根证书名称为准。

    +

    默认值:cacert.pem

    ssl_crl_file

    +

    ssl_crl_file

    证书吊销列表,如果客户端证书在该列表中,则当前客户端证书被视为无效证书。

    +

    证书吊销列表,如果客户端证书在该列表中,则当前客户端证书被视为无效证书。

    请以实际的证书吊销列表名称为准。

    +

    请以实际的证书吊销列表名称为准。

    默认值:空,表示没有吊销列表。

    ssl_ciphers

    +

    ssl_ciphers

    SSL通讯使用的加密算法。

    +

    SSL通讯使用的加密算法。

    本产品支持的加密算法的详细信息请参见表4

    +

    本产品支持的加密算法的详细信息请参见表4

    默认值:ALL,表示允许对端使用产品支持的所有加密算法,但不包含ADH、LOW、EXP、MD5算法。

    int4

    当前该用户io在数据库节点中的最小值。对于行存,以万次/s为单位;对于列存,以次/s为单位。

    +

    当前该用户io在数据库节点中的最小值。对于行存,以万次/s为单位;对于列存,以次/s为单位。

    max_curr_iops

    int4

    当前该用户io在数据库节点中的最大值。对于行存,以万次/s为单位;对于列存,以次/s为单位。

    +

    当前该用户io在数据库节点中的最大值。对于行存,以万次/s为单位;对于列存,以次/s为单位。

    min_peak_iops

    int4

    该用户io峰值中,数据库节点的最小值。对于行存,以万次/s为单位;对于列存,以次/s为单位。

    +

    该用户io峰值中,数据库节点的最小值。对于行存,以万次/s为单位;对于列存,以次/s为单位。

    max_peak_iops

    int4

    该用户io峰值中,数据库节点的最大值。对于行存,以万次/s为单位;对于列存,以次/s为单位。

    +

    该用户io峰值中,数据库节点的最大值。对于行存,以万次/s为单位;对于列存,以次/s为单位。

    io_limits

    @@ -925,7 +925,7 @@
    -- DBMS\_PERF.get\_global\_instance\_time\(\) +- DBE\_PERF.get\_global\_instance\_time\(\) 描述:提供openGauss各个关键阶段的时间消耗,仅在数据库主节点上支持查询,查询该函数必须具有sysadmin权限。 @@ -933,7 +933,7 @@ - get\_instr\_unique\_sql\(\) - 描述:获取当前结点的执行语句(归一化SQL)信息,查询该函数必须具有sysadmin权限。 + 描述:获取当前节点的执行语句(归一化SQL)信息,查询该函数必须具有sysadmin权限。 返回值类型:record @@ -951,65 +951,53 @@ - get\_instr\_user\_login\(\) - 描述:获取当前结点的用户登入登出次数信息,查询该函数必须具有sysadmin权限。 + 描述:获取当前节点的用户登入登出次数信息,查询该函数必须具有sysadmin权限。 返回值类型:record - get\_instr\_rt\_percentile\(\) - 描述:获取CCN结点SQL 响应时间P80,P95分布信息,openGauss统一的信息在CCN节点上,其他节点查询为0。 + 描述:获取CCN节点SQL 响应时间P80,P95分布信息,openGauss统一的信息在CCN节点上,其他节点查询为0。 返回值类型:record - get\_node\_stat\_reset\_time\(\) - 描述:获取当前结点的统计信息重置(重启,主备倒换,数据库删除)时间。 + 描述:获取当前节点的统计信息重置(重启,主备倒换,数据库删除)时间。 返回值类型:record -- dbms\_perf.get\_average\_value\(\) - - 描述:获取当前结点的统计信息重置(重启,主备倒换,数据库删除)时间。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_os\_runtime\(\) +- DBE\_PERF.get\_global\_os\_runtime\(\) 描述:显示当前操作系统运行的状态信息,仅在数据库主节点上支持查询,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_os\_threads\(\) - - 描述:提供openGauss中所有正常节点下的线程状态信息,仅在数据库主节点上支持查询,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_os\_threads\(\) +- DBE\_PERF.get\_global\_os\_threads\(\) 描述:提供openGauss中所有正常节点下的线程状态信息,仅在数据库主节点上支持查询,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_workload\_sql\_count\(\) +- DBE\_PERF.get\_summary\_workload\_sql\_count\(\) 描述:提供openGauss中不同负载SELECT,UPDATE,INSERT,DELETE,DDL, DML,DCL计数信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_workload\_sql\_elapse\_time\(\) +- DBE\_PERF.get\_summary\_workload\_sql\_elapse\_time\(\) 描述:提供openGauss中不同负载SELECT,UPDATE,INSERT,DELETE,响应时间信息(TOTAL,AVG, MIN, MAX),查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_workload\_transaction\(\) +- DBE\_PERF.get\_global\_workload\_transaction\(\) 描述:获取openGauss内所有节点上的事务量信息,事务时间信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_session\_stat\(\) +- DBE\_PERF.get\_global\_session\_stat\(\) 描述:获取openGauss节点上的会话状态信息,查询该函数必须具有sysadmin权限。 @@ -1021,19 +1009,19 @@ >blocks\_read\_time,blocks\_write\_time,sort\_imemory,sort\_idisk,cu\_mem\_hit, >cu\_hdd\_sync\_read,cu\_hdd\_asyread -- DBMS\_PERF.get\_global\_session\_time\(\) +- DBE\_PERF.get\_global\_session\_time\(\) 描述:提供openGauss各节点各个关键阶段的时间消耗,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_session\_memory\(\) +- DBE\_PERF.get\_global\_session\_memory\(\) 描述:汇聚各节点的Session级别的内存使用情况,包含执行作业在数据节点上Postgres线程和Stream线程分配的所有内存,单位为MB,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_session\_memory\_detail\(\) +- DBE\_PERF.get\_global\_session\_memory\_detail\(\) 描述:汇聚各节点的线程的内存使用情况,以MemoryContext节点来统计,查询该函数必须具有sysadmin权限。 @@ -1045,487 +1033,403 @@ 返回值类型:record -- DBMS\_PERF.get\_global\_session\_stat\_activity\(\) +- DBE\_PERF.get\_global\_session\_stat\_activity\(\) 描述:汇聚openGauss内各节点上正在运行的线程相关的信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_thread\_wait\_status\(\) +- DBE\_PERF.get\_global\_thread\_wait\_status\(\) - 描述:汇聚所有结点上工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况,查询该函数必须具有sysadmin权限。 + 描述:汇聚所有节点上工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_wlm\_controlgroup\_ng\_config\(\) - - 描述:数据库内所有的控制组信息,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_wlm\_user\_resource\_runtime\(\) +- DBE\_PERF.get\_wlm\_user\_resource\_runtime\(\) 描述:显示所有用户资源使用情况,参数use\_workload\_manager为on时才有效,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_wlm\_workload\_runtime\(\) - - 描述:汇聚当前用户在数据库主节点上执行作业时在数据库主节点上的状态信息,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_operator\_ec\_history\(\) - - 描述:汇聚当前用户在数据库主节点上EC算子的历史状态信息,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_operator\_ec\_history\_table\(\) - - 描述:汇聚当前用户在数据库主节点上EC算子的历史状态信息(持久化),查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_operator\_ec\_runtime\(\) - - 描述:汇聚当前用户在数据库主节点上EC算子的实时状态信息,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_operator\_history\_table\(\) +- DBE\_PERF.get\_global\_operator\_history\_table\(\) 描述:汇聚当前用户数据库主节点上执行作业结束后的算子相关记录(持久化),查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_operator\_history\(\) +- DBE\_PERF.get\_global\_operator\_history\(\) 描述:汇聚当前用户数据库主节点上执行作业结束后的算子相关记录,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_operator\_runtime\(\) +- DBE\_PERF.get\_global\_operator\_runtime\(\) 描述:汇聚当前用户数据库主节点上执行作业实时的算子相关记录,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statement\_complex\_history\(\) +- DBE\_PERF.get\_global\_statement\_complex\_history\(\) 描述:汇聚当前用户数据库主节点上复杂查询的历史记录,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statement\_complex\_history\_table\(\) +- DBE\_PERF.get\_global\_statement\_complex\_history\_table\(\) 描述:汇聚当前用户数据库主节点上复杂查询的历史记录(持久化),查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statement\_complex\_runtime\(\) +- DBE\_PERF.get\_global\_statement\_complex\_runtime\(\) 描述:汇聚当前用户数据库主节点上复杂查询的实时信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_memory\_node\_detail\(\) +- DBE\_PERF.get\_global\_memory\_node\_detail\(\) 描述:汇聚所有节点某个数据库节点内存使用情况,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_shared\_memory\_detail\(\) +- DBE\_PERF.get\_global\_shared\_memory\_detail\(\) 描述:汇聚所有节点已产生的共享内存上下文的使用信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_comm\_delay\(\) - - 描述:汇聚数据库节点的通信库时延状态,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_comm\_recv\_stream\(\) - - 描述:汇聚数据库节点的通信库接收流状态,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_comm\_send\_stream\(\) - - 描述:汇聚数据库节点的通信库发送流状态,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_comm\_status\(\) - - 描述:汇聚数据库节点的通信库状态,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_statio\_all\_indexes +- DBE\_PERF.get\_global\_statio\_all\_indexes 描述:汇聚所有节点当前数据库中的每个索引行,显示特定索引的I/O的统计,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_local\_toastname\_and\_toastindexname\(\) +- DBE\_PERF.get\_local\_toastname\_and\_toastindexname\(\) 描述:提供本地toast表的name和index和其关联表的对应关系。 返回值类型:record -- DBMS\_PERF.get\_summary\_statio\_all\_indexes +- DBE\_PERF.get\_summary\_statio\_all\_indexes\(\) 描述:统计所有节点当前数据库中的每个索引行,显示特定索引的I/O的统计,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statio\_all\_sequences +- DBE\_PERF.get\_global\_statio\_all\_sequences\(\) 描述:提供命名空间中所有sequences的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statio\_all\_tables +- DBE\_PERF.get\_global\_statio\_all\_tables\(\) 描述:汇聚各节点的数据库中每个表I/O的统计,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_statio\_all\_tables +- DBE\_PERF.get\_summary\_statio\_all\_tables\(\) 描述:统计openGauss内数据库中每个表I/O的统计,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_local\_toast\_relation\(\) +- DBE\_PERF.get\_local\_toast\_relation\(\) - 描述:提供本地toast表的name和其关联表的对应关系。 + 描述:提供本地toast表的name和其关联表的对应关系,查询该函数必须具有sysadmin权限 返回值类型:record -- DBMS\_PERF.get\_global\_statio\_sys\_indexes\(\) +- DBE\_PERF.get\_global\_statio\_sys\_indexes\(\) 描述:汇聚各节点的命名空间中所有系统表索引的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_statio\_sys\_indexes\(\) +- DBE\_PERF.get\_summary\_statio\_sys\_indexes\(\) 描述:统计各节点的命名空间中所有系统表索引的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statio\_sys\_sequences\(\) +- DBE\_PERF.get\_global\_statio\_sys\_sequences\(\) 描述:提供命名空间中所有系统表为sequences的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statio\_sys\_tables\(\) +- DBE\_PERF.get\_global\_statio\_sys\_tables\(\) 描述:提供各节点的命名空间中所有系统表的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_statio\_sys\_tables\(\) +- DBE\_PERF.get\_summary\_statio\_sys\_tables\(\) 描述:openGauss内汇聚命名空间中所有系统表的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statio\_user\_indexes\(\) +- DBE\_PERF.get\_global\_statio\_user\_indexes\(\) 描述:各节点的命名空间中所有用户关系表索引的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_statio\_user\_indexes\(\) +- DBE\_PERF.get\_summary\_statio\_user\_indexes\(\) 描述:openGauss内汇聚命名空间中所有用户关系表索引的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statio\_user\_sequences\(\) +- DBE\_PERF.get\_global\_statio\_user\_sequences\(\) 描述:显示各节点的命名空间中所有用户的sequences的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statio\_user\_tables\(\) +- DBE\_PERF.get\_global\_statio\_user\_tables\(\) 描述:显示各节点的命名空间中所有用户关系表的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_statio\_user\_tables\(\) +- DBE\_PERF.get\_summary\_statio\_user\_tables\(\) 描述:openGauss内汇聚命名空间中所有用户关系表的IO状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_stat\_db\_cu\(\) +- DBE\_PERF.get\_stat\_db\_cu\(\) 描述:视图查询openGauss各个节点,每个数据库的CU命中情况,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_dn\_stat\_all\_tables\(\) - - 描述:汇聚数据库节点结点数据库中每个表的统计信息,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_cn\_stat\_all\_tables\(\) +- DBE\_PERF.get\_global\_stat\_all\_indexes\(\) - 描述:汇聚数据库主节点结点数据库中每个表的统计信息,查询该函数必须具有sysadmin权限。 + 描述:汇聚所有节点数据库中每个索引的统计信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_dn\_stat\_all\_tables\(\) +- DBE\_PERF.get\_summary\_stat\_all\_indexes\(\) - 描述:统计数据库节点结点数据库中每个表的统计信息,查询该函数必须具有sysadmin权限。 + 描述:统计所有节点数据库中每个索引的统计信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_cn\_stat\_all\_tables\(\) - - 描述:统计数据库主节点结点数据库中每个表的统计信息,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_stat\_all\_indexes\(\) - - 描述:汇聚所有结点数据库中每个索引的统计信息,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_summary\_stat\_all\_indexes\(\) - - 描述:统计所有结点数据库中每个索引的统计信息,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_stat\_sys\_tables\(\) +- DBE\_PERF.get\_global\_stat\_sys\_tables\(\) 描述:汇聚各节点pg\_catalog、information\_schema模式的所有命名空间中系统表的统计信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_stat\_sys\_tables\(\) +- DBE\_PERF.get\_summary\_stat\_sys\_tables\(\) 描述:统计各节点pg\_catalog、information\_schema模式的所有命名空间中系统表的统计信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_sys\_indexes\(\) +- DBE\_PERF.get\_global\_stat\_sys\_indexes\(\) 描述:汇聚各节点pg\_catalog、information\_schema模式中所有系统表的索引状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_stat\_sys\_indexes\(\) +- DBE\_PERF.get\_summary\_stat\_sys\_indexes\(\) 描述:统计各节点pg\_catalog、information\_schema模式中所有系统表的索引状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_user\_tables\(\) +- DBE\_PERF.get\_global\_stat\_user\_tables\(\) 描述:汇聚所有命名空间中用户自定义普通表的状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_stat\_user\_tables\(\) +- DBE\_PERF.get\_summary\_stat\_user\_tables\(\) 描述:统计所有命名空间中用户自定义普通表的状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_user\_indexes\(\) +- DBE\_PERF.get\_global\_stat\_user\_indexes\(\) 描述:汇聚所有数据库中用户自定义普通表的索引状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_stat\_user\_indexes\(\) +- DBE\_PERF.get\_summary\_stat\_user\_indexes\(\) 描述:统计所有数据库中用户自定义普通表的索引状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_database\(\) +- DBE\_PERF.get\_global\_stat\_database\(\) 描述:汇聚所有节点数据库统计信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_database\_conflicts\(\) +- DBE\_PERF.get\_global\_stat\_database\_conflicts\(\) 描述:统计所有节点数据库统计信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_xact\_all\_tables\(\) +- DBE\_PERF.get\_global\_stat\_xact\_all\_tables\(\) 描述:汇聚命名空间中所有普通表和toast表的事务状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_stat\_xact\_all\_tables\(\) +- DBE\_PERF.get\_summary\_stat\_xact\_all\_tables\(\) 描述:统计命名空间中所有普通表和toast表的事务状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_xact\_sys\_tables\(\) +- DBE\_PERF.get\_global\_stat\_xact\_sys\_tables\(\) 描述:汇聚所有节点命名空间中系统表的事务状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_stat\_xact\_sys\_tables\(\) +- DBE\_PERF.get\_summary\_stat\_xact\_sys\_tables\(\) 描述:统计所有节点命名空间中系统表的事务状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_xact\_user\_tables\(\) +- DBE\_PERF.get\_global\_stat\_xact\_user\_tables\(\) 描述:汇聚所有节点命名空间中用户表的事务状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_stat\_xact\_user\_tables\(\) +- DBE\_PERF.get\_summary\_stat\_xact\_user\_tables\(\) 描述:统计所有节点命名空间中用户表的事务状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_user\_functions\(\) +- DBE\_PERF.get\_global\_stat\_user\_functions\(\) 描述:汇聚所有节点命名空间中用户定义函数的事务状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_xact\_user\_functions\(\) +- DBE\_PERF.get\_global\_stat\_xact\_user\_functions\(\) 描述:统计所有节点命名空间中用户定义函数的事务状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_stat\_bad\_block\(\) +- DBE\_PERF.get\_global\_stat\_bad\_block\(\) 描述:汇聚所有节点表、索引等文件的读取失败信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_file\_redo\_iostat\(\) +- DBE\_PERF.get\_global\_file\_redo\_iostat\(\) 描述:统计所有节点表、索引等文件的读取失败信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_file\_iostat\(\) +- DBE\_PERF.get\_global\_file\_iostat\(\) 描述:汇聚所有节点数据文件IO的统计,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_locks\(\) +- DBE\_PERF.get\_global\_locks\(\) 描述:汇聚所有节点的锁信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_replication\_slots\(\) +- DBE\_PERF.get\_global\_replication\_slots\(\) 描述:汇聚所有节点上逻辑复制信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_bgwriter\_stat\(\) +- DBE\_PERF.get\_global\_bgwriter\_stat\(\) 描述:汇聚所有节点后端写进程活动的统计信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_replication\_stat\(\) +- DBE\_PERF.get\_global\_replication\_stat\(\) 描述:汇聚各节点日志同步状态信息,如发起端发送日志位置,收端接收日志位置等,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_pooler\_status\(\) - - 描述:汇聚数据库主节点的pooler中的缓存连接状态,查询该函数必须具有sysadmin权限。 - - 返回值类型:record - -- DBMS\_PERF.get\_global\_transactions\_running\_xacts\(\) +- DBE\_PERF.get\_global\_transactions\_running\_xacts\(\) 描述:汇聚各节点运行事务的信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_transactions\_running\_xacts\(\) +- DBE\_PERF.get\_summary\_transactions\_running\_xacts\(\) 描述:统计各节点运行事务的信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_transactions\_prepared\_xacts\(\) +- DBE\_PERF.get\_global\_transactions\_prepared\_xacts\(\) 描述:汇聚各节点当前准备好进行两阶段提交的事务的信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_transactions\_prepared\_xacts\(\) +- DBE\_PERF.get\_summary\_transactions\_prepared\_xacts\(\) 描述:统计各节点当前准备好进行两阶段提交的事务的信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_statement\(\) +- DBE\_PERF.get\_summary\_statement\(\) 描述:汇聚各节点历史执行语句状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_statement\_count\(\) +- DBE\_PERF.get\_global\_statement\_count\(\) 描述:汇聚各节点SELECT,UPDATE,INSERT,DELETE,响应时间信息(TOTAL,AVG, MIN, MAX),查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_config\_settings\(\) +- DBE\_PERF.get\_global\_config\_settings\(\) 描述:汇聚各节点GUC参数配置信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_wait\_events\(\) +- DBE\_PERF.get\_global\_wait\_events\(\) 描述:汇聚各节点wait events状态信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_statement\_responsetime\_percentile\(\) +- DBE\_PERF.get\_statement\_responsetime\_percentile\(\) 描述:获取openGaussSQL响应时间P80,P95分布信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_summary\_user\_login\(\) +- DBE\_PERF.get\_summary\_user\_login\(\) 描述:统计openGauss各节点用户登入登出次数信息,查询该函数必须具有sysadmin权限。 返回值类型:record -- DBMS\_PERF.get\_global\_record\_reset\_time\(\) +- DBE\_PERF.get\_global\_record\_reset\_time\(\) 描述:汇聚openGauss统计信息重置(重启,主备倒换,数据库删除)时间,查询该函数必须具有sysadmin权限。 @@ -1543,70 +1447,12 @@ 返回值类型:record -- DBMS\_PERF.get\_global\_rel\_iostat\(\) +- DBE\_PERF.get\_global\_rel\_iostat\(\) 描述:汇聚所有节点数据文件IO的统计,查询该函数必须具有sysadmin权限。 返回值类型:record -- 函数返回字段描述如下: - -**表 1** PGXC\_GTM\_SNAPSHOT\_STATUS返回参数说明 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    名称

    -

    类型

    -

    描述

    -

    xmin

    -

    xid

    -

    仍在运行的最小事务号。

    -

    xmax

    -

    xid

    -

    已完成的所有事务号中最大事务号的下一个事务号。

    -

    csn

    -

    integer

    -

    待提交事务的序列号。

    -

    oldestxmin

    -

    xid

    -

    当前最早的活跃事务在其取快照时,所有运行事务号最小的事务。

    -

    xcnt

    -

    integer

    -

    当前活跃的事务个数。

    -

    running_xids

    -

    text

    -

    当前活跃的事务号。

    -
    - 示例: @@ -1630,5 +1476,3 @@ postgres=# SELECT pg_stat_get_backend_pid(1); (1 row) ``` ->![](public_sys-resources/icon-notice.gif) **须知:** - diff --git "a/content/zh/docs/Developerguide/\347\273\237\350\256\241\344\277\241\346\201\257\350\260\203\344\274\230.md" "b/content/zh/docs/Developerguide/\347\273\237\350\256\241\344\277\241\346\201\257\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..dbecdd2e0df1981a5bbcb4701ce86e0295041e53 --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\273\237\350\256\241\344\277\241\346\201\257\350\260\203\344\274\230.md" @@ -0,0 +1,93 @@ +# 统计信息调优 + +## 统计信息调优介绍 + +openGauss是基于代价估算生成的最优执行计划。优化器需要根据analyze收集的统计信息行数估算和代价估算,因此统计信息对优化器行数估算和代价估算起着至关重要的作用。通过analyze收集全局统计信息,主要包括:pg\_class表中的relpages和reltuples;pg\_statistic表中的stadistinct、stanullfrac、stanumbersN、stavaluesN、histogram\_bounds等。 + +## 实例分析1:未收集统计信息导致查询性能差 + +在很多场景下,由于查询中涉及到的表或列没有收集统计信息,会对查询性能有很大的影响。 + +表结构如下所示: + +``` +CREATE TABLE LINEITEM +( +L_ORDERKEY BIGINT NOT NULL +, L_PARTKEY BIGINT NOT NULL +, L_SUPPKEY BIGINT NOT NULL +, L_LINENUMBER BIGINT NOT NULL +, L_QUANTITY DECIMAL(15,2) NOT NULL +, L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL +, L_DISCOUNT DECIMAL(15,2) NOT NULL +, L_TAX DECIMAL(15,2) NOT NULL +, L_RETURNFLAG CHAR(1) NOT NULL +, L_LINESTATUS CHAR(1) NOT NULL +, L_SHIPDATE DATE NOT NULL +, L_COMMITDATE DATE NOT NULL +, L_RECEIPTDATE DATE NOT NULL +, L_SHIPINSTRUCT CHAR(25) NOT NULL +, L_SHIPMODE CHAR(10) NOT NULL +, L_COMMENT VARCHAR(44) NOT NULL +) with (orientation = column, COMPRESSION = MIDDLE); + +CREATE TABLE ORDERS +( +O_ORDERKEY BIGINT NOT NULL +, O_CUSTKEY BIGINT NOT NULL +, O_ORDERSTATUS CHAR(1) NOT NULL +, O_TOTALPRICE DECIMAL(15,2) NOT NULL +, O_ORDERDATE DATE NOT NULL +, O_ORDERPRIORITY CHAR(15) NOT NULL +, O_CLERK CHAR(15) NOT NULL +, O_SHIPPRIORITY BIGINT NOT NULL +, O_COMMENT VARCHAR(79) NOT NULL +)with (orientation = column, COMPRESSION = MIDDLE); +``` + +查询语句如下所示: + +``` +explain verbose select +count(*) as numwait +from +lineitem l1, +orders +where +o_orderkey = l1.l_orderkey +and o_orderstatus = 'F' +and l1.l_receiptdate > l1.l_commitdate +and not exists ( +select +* +from +lineitem l3 +where +l3.l_orderkey = l1.l_orderkey +and l3.l_suppkey <> l1.l_suppkey +and l3.l_receiptdate > l3.l_commitdate +) +order by +numwait desc; +``` + +当出现该问题时,可以通过如下方法确认查询中涉及到的表或列有没有做过analyze收集统计信息。 + +1. 通过explain verbose执行query分析执行计划时会提示WARNING信息,如下所示: + + ``` + WARNING:Statistics in some tables or columns(public.lineitem.l_receiptdate, public.lineitem.l_commitdate, public.lineitem.l_orderkey, public.lineitem.l_suppkey, public.orders.o_orderstatus, public.orders.o_orderkey) are not collected. + HINT:Do analyze for them in order to generate optimized plan. + ``` + +2. 可以通过在pg\_log目录下的日志文件中查找以下信息来确认是当前执行的query是否由于没有收集统计信息导致查询性能变差。 + + ``` + 2017-06-14 17:28:30.336 CST 140644024579856 20971684 [BACKEND] LOG:Statistics in some tables or columns(public.lineitem.l_receiptdate, public.lineitem.l_commitdate, public.lineitem.l_orderkey, public.linei + tem.l_suppkey, public.orders.o_orderstatus, public.orders.o_orderkey) are not collected. + 2017-06-14 17:28:30.336 CST 140644024579856 20971684 [BACKEND] HINT:Do analyze for them in order to generate optimized plan. + ``` + + +当通过以上方法查看到哪些表或列没有做analyze,可以通过对WARNING或日志中上报的表或列做analyze可以解决由于为收集统计信息导致查询变慢的问题。 + diff --git "a/content/zh/docs/Developerguide/\347\273\264\346\212\244\345\256\241\350\256\241\346\227\245\345\277\227.md" "b/content/zh/docs/Developerguide/\347\273\264\346\212\244\345\256\241\350\256\241\346\227\245\345\277\227.md" index b3e9f34d01a57c9a3e9c91e2e5b3468b02f2d75a..0aca73388296b4a155c6626304415519f1a7e4d9 100644 --- "a/content/zh/docs/Developerguide/\347\273\264\346\212\244\345\256\241\350\256\241\346\227\245\345\277\227.md" +++ "b/content/zh/docs/Developerguide/\347\273\264\346\212\244\345\256\241\350\256\241\346\227\245\345\277\227.md" @@ -115,7 +115,7 @@ 连接成功后,系统显示类似如下信息: ``` - gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. @@ -147,7 +147,7 @@ 2. 建议执行如下命令设置成默认值1024MB。 ``` - gs_guc reload -Z coordinator -Z datanode -N all -I all -c "audit_space_limit=1024MB" + gs_guc reload -N all -I all -c "audit_space_limit=1024MB" ``` 配置审计文件个数的最大值(audit\_file\_remain\_threshold)。 @@ -167,7 +167,7 @@ 2. 建议执行如下命令设置成默认值1048576。 ``` - gs_guc reload -Z coordinator -Z datanode -N all -I all -c "audit_file_remain_threshold=1048576" + gs_guc reload -N all -I all -c "audit_file_remain_threshold=1048576" ``` - 手动备份审计文件 diff --git "a/content/zh/docs/Developerguide/\347\275\221\347\273\234.md" "b/content/zh/docs/Developerguide/\347\275\221\347\273\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..203180ac2a22eb0662253a42b9c9142de605fcbf --- /dev/null +++ "b/content/zh/docs/Developerguide/\347\275\221\347\273\234.md" @@ -0,0 +1,60 @@ +# 网络 + +通过sar或ifconfig命令查看openGauss内节点网络使用情况,分析是否存在由于网络导致的性能瓶颈。 + +## 查看网络状况 + +查询服务器网络状况的方法主要有以下两种方式: + +- 使用root用户身份登录服务器,执行如下命令查看服务器网络连接。 + + ``` + SIA1000056771:~ # ifconfig + eth0 Link encap:Ethernet HWaddr 28:6E:D4:86:7D:D5 + inet addr:10.180.123.163 Bcast:10.180.123.255 Mask:255.255.254.0 + inet6 addr: fe80::2a6e:d4ff:fe86:7dd5/64 Scope:Link + UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 + RX packets:5669314 errors:0 dropped:0 overruns:0 frame:0 + TX packets:4955927 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:508077795 (484.5 Mb) TX bytes:818004366 (780.1 Mb) + + lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + inet6 addr: ::1/128 Scope:Host + UP LOOPBACK RUNNING MTU:16436 Metric:1 + RX packets:711938 errors:0 dropped:0 overruns:0 frame:0 + TX packets:711938 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:164158862 (156.5 Mb) TX bytes:164158862 (156.5 Mb) + ``` + + - “errors”表示收包错误的总数量。 + - “dropped”表示数据包已经进入了Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃的总数量。 + - “overruns”表示Ring Buffer队列中被丢弃的报文数目,由于Ring Buffer\(aka Driver Queue\)传输的IO大于kernel能够处理的IO导致。 + + 分析时,如果发现上述三个值持续增长,则表示网络负载过大或者存在网卡、内存等硬件故障。 + +- 使用sar命令查看服务器网络连接。 + + ``` + sar -n DEV 1 //1为间隔时间 + Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil + Average: lo 1926.94 1926.94 25573.92 25573.92 0.00 0.00 0.00 0.00 + Average: A1-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 + Average: A1-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 + Average: NIC0 5.17 1.48 0.44 0.92 0.00 0.00 0.00 0.00 + Average: NIC1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 + Average: A0-0 8173.06 92420.66 97102.22 133305.09 0.00 0.00 0.00 0.00 + Average: A0-1 11431.37 9373.06 156950.45 494.40 0.00 0.00 0.00 0.00 + Average: B3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 + Average: B3-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 + ``` + + “rxkB/s”为每秒接收的kB数,“txkB/s”为每秒发送的kB数。 + + 分析时,请主要关注每个网卡的传输量和是否达到传输上限。 + + 检查完后,按“Ctrl+Z”键退出查看。 + + diff --git "a/content/zh/docs/Developerguide/\347\275\221\347\273\234\345\234\260\345\235\200\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/\347\275\221\347\273\234\345\234\260\345\235\200\347\261\273\345\236\213.md" index 909caa22932032fbfab0c5f0ca027efea2d3c603..ef91740aba524e9981500458c968d2f7affa790c 100644 --- "a/content/zh/docs/Developerguide/\347\275\221\347\273\234\345\234\260\345\235\200\347\261\273\345\236\213.md" +++ "b/content/zh/docs/Developerguide/\347\275\221\347\273\234\345\234\260\345\235\200\347\261\273\345\236\213.md" @@ -2,7 +2,7 @@ openGauss提供用于存储IPv4、IPv6、MAC地址的数据类型。 -用这些数据类型存储网络地址比用纯文本类型好,因为这些类型提供输入错误检查和特殊的操作和功能(请参见[网络地址函数和操作符](网络地址函数和操作符.md#ZH-CN_TOPIC_0242370439))。 +用这些数据类型存储网络地址比用纯文本类型好,因为这些类型提供输入错误检查和特殊的操作和功能(请参见[网络地址函数和操作符](网络地址函数和操作符.md))。 **表 1** 网络地址类型 diff --git "a/content/zh/docs/Developerguide/\350\201\232\351\233\206\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\350\201\232\351\233\206\345\207\275\346\225\260.md" index d48607e8c1713422430e765f2af90f1c6571c86d..976dbe7f0dc9e536243660541188adfb2a67be0c 100644 --- "a/content/zh/docs/Developerguide/\350\201\232\351\233\206\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\350\201\232\351\233\206\345\207\275\346\225\260.md" @@ -445,63 +445,6 @@ (1 row) ``` -- rank\(expression\) - - 描述:根据expression对不同组内的元组进行跳跃排序。 - - 返回类型:BIGINT - - 示例: - - ``` - postgres=# SELECT d_moy, d_fy_week_seq, rank() OVER(PARTITION BY d_moy ORDER BY d_fy_week_seq) FROM tpcds.date_dim WHERE d_moy < 4 AND d_fy_week_seq < 7 ORDER BY 1,2; - d_moy | d_fy_week_seq | rank - -------+---------------+------ - 1 | 1 | 1 - 1 | 1 | 1 - 1 | 1 | 1 - 1 | 1 | 1 - 1 | 1 | 1 - 1 | 1 | 1 - 1 | 1 | 1 - 1 | 2 | 8 - 1 | 2 | 8 - 1 | 2 | 8 - 1 | 2 | 8 - 1 | 2 | 8 - 1 | 2 | 8 - 1 | 2 | 8 - 1 | 3 | 15 - 1 | 3 | 15 - 1 | 3 | 15 - 1 | 3 | 15 - 1 | 3 | 15 - 1 | 3 | 15 - 1 | 3 | 15 - 1 | 4 | 22 - 1 | 4 | 22 - 1 | 4 | 22 - 1 | 4 | 22 - 1 | 4 | 22 - 1 | 4 | 22 - 1 | 4 | 22 - 1 | 5 | 29 - 1 | 5 | 29 - 2 | 5 | 1 - 2 | 5 | 1 - 2 | 5 | 1 - 2 | 5 | 1 - 2 | 5 | 1 - 2 | 6 | 6 - 2 | 6 | 6 - 2 | 6 | 6 - 2 | 6 | 6 - 2 | 6 | 6 - 2 | 6 | 6 - 2 | 6 | 6 - (42 rows) - ``` - - regr\_avgx\(Y, X\) 描述:自变量的平均值 \(sum\(X\)/N\) diff --git "a/content/zh/docs/Developerguide/\350\216\267\345\217\226\345\270\256\345\212\251-13.md" "b/content/zh/docs/Developerguide/\350\216\267\345\217\226\345\270\256\345\212\251-13.md" new file mode 100644 index 0000000000000000000000000000000000000000..261614471e7d566d36c381683cab34310dfeb39b --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\216\267\345\217\226\345\270\256\345\212\251-13.md" @@ -0,0 +1,31 @@ +# 获取帮助 + +使用Sqldiag工具前,您可以通过以下指令获取帮助。 + +``` +cd src +python main.py --help +``` + +显示如下帮助信息: + +``` +usage: main.py [-h] [--train TRAIN] [--model MODEL] [--predict PREDICT] + [--ratio RATIO] + {all,train,predict} + +Slow SQL Diagnose + +positional arguments: + {all,train,predict} Execution style + +optional arguments: + -h, --help show this help message and exit + --train TRAIN History Log Data Directory + --model MODEL Output data directory + --predict PREDICT To-be-predicted workload data directory + --ratio RATIO Ratio threshold for retrain recommend +``` + +您也可以通过工具内的Readme文件获取更加详细的帮助。 + diff --git "a/content/zh/docs/Developerguide/\350\216\267\345\217\226\345\270\256\345\212\251.md" "b/content/zh/docs/Developerguide/\350\216\267\345\217\226\345\270\256\345\212\251.md" new file mode 100644 index 0000000000000000000000000000000000000000..4402577a30b253f4e9b12cf01919049d70f45c9d --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\216\267\345\217\226\345\270\256\345\212\251.md" @@ -0,0 +1,45 @@ +# 获取帮助 + +启动调优程序之前,可以通过如下命令获取帮助信息: + +``` +python main.py --help +``` + +输出帮助信息结果如下: + +``` +usage: main.py [-h] [-m {train,tune}] [-f CONFIG_FILE] [--db-name DB_NAME] +[--db-user DB_USER] [--port PORT] [--host HOST] +[--host-user HOST_USER] [--host-ssh-port HOST_SSH_PORT] +[--scenario {ap,tp,htap}] [--benchmark BENCHMARK] +[--model-path MODEL_PATH] [-v] + +X-Tuner: a self-tuning toolkit for OpenGauss. + +optional arguments: +-h, --help show this help message and exit +-m {train,tune}, --mode {train,tune} +train a reinforcement learning model or tune by your +trained model. +-f CONFIG_FILE, --config-file CONFIG_FILE +you can pass a config file path or you should manually +set database information. +--db-name DB_NAME database name. +--db-user DB_USER database user name. +--port PORT database connection port. +--host HOST where did your database install on? +--host-user HOST_USER +user name of the host where your database installed +on. +--host-ssh-port HOST_SSH_PORT +host ssh port. +--scenario {ap,tp,htap} +--benchmark BENCHMARK +--model-path MODEL_PATH +the place where you want to save model weights to or +load model weights from. +-v, --version +show version. +``` + diff --git "a/content/zh/docs/Developerguide/\350\241\214\346\225\260\347\232\204Hint.md" "b/content/zh/docs/Developerguide/\350\241\214\346\225\260\347\232\204Hint.md" new file mode 100644 index 0000000000000000000000000000000000000000..4b37ebaee8b0d5935f1b36d005509afdef4a552c --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\241\214\346\225\260\347\232\204Hint.md" @@ -0,0 +1,42 @@ +# 行数的Hint + +## 功能描述 + +指明中间结果集的大小,支持绝对值和相对值的hint。 + +## 语法格式 + +``` +rows(table_list #|+|-|* const) +``` + +## 参数说明 + +- **\#**,**+**,**-**,**\***,进行行数估算hint的四种操作符号。\#表示直接使用后面的行数进行hint。+,-,\*表示对原来估算的行数进行加、减、乘操作,运算后的行数最小值为1行。table\_list为hint对应的单表或多表join结果集,与[Join方式的Hint](Join方式的Hint.md)中[table\_list](Join方式的Hint.md#zh-cn_topic_0237121534_li1090312446510)相同。 + +- **const**可以是任意非负数,支持科学计数法。 + +例如: + +rows\(t1 \#5\)表示:指定t1表的结果集为5行。 + +rows\(t1 t2 t3 \*1000\)表示:指定t1, t2, t3 join完的结果集的行数乘以1000。 + +## 建议 + +- 推荐使用两个表\*的hint。对于两个表的采用\*操作符的hint,只要两个表出现在join的两端,都会触发hint。例如:设置hint为rows\(t1 t2 \* 3\),对于\(t1 t3 t4\)和\(t2 t5 t6\)join时,由于t1和t2出现在join的两端,所以其join的结果集也会应用该hint规则乘以3。 +- rows hint支持在单表、多表、function table及subquery scan table的结果集上指定hint。 + +## 示例 + +对[示例](Plan-Hint调优概述.md#zh-cn_topic_0237121532_section671421102912)中原语句使用如下hint: + +``` +explain +select /*+ rows(store_sales store_returns *50) */ i_product_name product_name ... +``` + +该hint表示:store\_sales,store\_returns关联的结果集估算行数在原估算行数基础上乘以50。生成计划如下所示: + +![](figures/zh-cn_image_0253036670.png) + diff --git "a/content/zh/docs/Developerguide/\350\247\222\350\211\262.md" "b/content/zh/docs/Developerguide/\350\247\222\350\211\262.md" index 7af9c132b011a495e50f2abbee6bdaaec7c09fe1..9d409ea5c72b61db11cfb36bc198f58643691b81 100644 --- "a/content/zh/docs/Developerguide/\350\247\222\350\211\262.md" +++ "b/content/zh/docs/Developerguide/\350\247\222\350\211\262.md" @@ -12,9 +12,9 @@ SELECT * FROM PG_ROLES; ## 创建、修改和删除角色 -非[三权分立](三权分立.md#ZH-CN_TOPIC_0246507960)时,只有系统管理员和具有CREATEROLE属性的用户才能创建、修改或删除角色。三权分立下,只有初始用户和具有CREATEROLE属性的用户才能创建、修改或删除角色。 +非[三权分立](三权分立.md)时,只有系统管理员和具有CREATEROLE属性的用户才能创建、修改或删除角色。三权分立下,只有初始用户和具有CREATEROLE属性的用户才能创建、修改或删除角色。 - 要创建角色,请使用[CREATE ROLE](CREATE-ROLE.md)。 -- 要在现有角色中添加或删除用户,请使用[ALTER ROLE](ALTER-ROLE.md#ZH-CN_TOPIC_0242370532)。 -- 要删除角色,请使用[DROP ROLE](DROP-ROLE.md#ZH-CN_TOPIC_0242370611)。DROP ROLE只会删除角色,并不会删除角色中的成员用户帐户。 +- 要在现有角色中添加或删除用户,请使用[ALTER ROLE](ALTER-ROLE.md)。 +- 要删除角色,请使用[DROP ROLE](DROP-ROLE.md)。DROP ROLE只会删除角色,并不会删除角色中的成员用户帐户。 diff --git "a/content/zh/docs/Developerguide/\350\247\243\346\236\220\346\226\207\346\241\243.md" "b/content/zh/docs/Developerguide/\350\247\243\346\236\220\346\226\207\346\241\243.md" index 446669b80ae93f287b763215d7cf7ad60c4ef402..e63198dce71627ffca1481cdcb2f31abb17ad45b 100644 --- "a/content/zh/docs/Developerguide/\350\247\243\346\236\220\346\226\207\346\241\243.md" +++ "b/content/zh/docs/Developerguide/\350\247\243\346\236\220\346\226\207\346\241\243.md" @@ -20,7 +20,7 @@ postgres=# SELECT to_tsvector('english', 'a fat cat sat on a mat - it ate a fat to\_tsvector函数内部调用一个解析器,将文档的文本分解成token并给每个token指定一个类型。对于每个token,有一系列词典可供查询。词典系列因token类型的不同而不同。识别token的第一本词典将发出一个或多个标准词素来表示token。例如: - rats变成rat因为词典认为词rats是rat的复数形式。 -- 有些词被作为停用词(请参考[停用词](停用词.md#ZH-CN_TOPIC_0242370499)),这样它们就会被忽略,因为它们出现得太过频繁以致于搜索中没有用处。比如例子中的a、on和it。 +- 有些词被作为停用词(请参考[停用词](停用词.md)),这样它们就会被忽略,因为它们出现得太过频繁以致于搜索中没有用处。比如例子中的a、on和it。 - 如果没有词典识别token,那么它也被忽略。在这个例子中,符号“-”被忽略,因为词典没有给它分配token类型(空间符号),即空间记号永远不会被索引。 语法解析器、词典和要索引的token类型由选定的文本搜索分词器决定。可以在同一个数据库中有多种不同的分词器,以及提供各种语言的预定义分词器。在以上例子中,使用缺省分词器english。 @@ -42,5 +42,5 @@ postgres=# UPDATE tsearch.tt SET ti = postgres=# DROP TABLE tsearch.tt; ``` -上例使用setweight标记已完成的tsvector中的每个词的来源,并且使用tsvector连接操作符||合并标记过的tsvector值,[处理tsvector](处理tsvector.md#ZH-CN_TOPIC_0242370492)一节详细介绍了这些操作。 +上例使用setweight标记已完成的tsvector中的每个词的来源,并且使用tsvector连接操作符||合并标记过的tsvector值,[处理tsvector](处理tsvector.md)一节详细介绍了这些操作。 diff --git "a/content/zh/docs/Developerguide/\350\247\243\346\236\220\346\237\245\350\257\242.md" "b/content/zh/docs/Developerguide/\350\247\243\346\236\220\346\237\245\350\257\242.md" index 2cc0d1b0b7f579e7a4f0aa03d72ce9706705be31..531d44b27e2334325bda3e3545905f7e5501a377 100644 --- "a/content/zh/docs/Developerguide/\350\247\243\346\236\220\346\237\245\350\257\242.md" +++ "b/content/zh/docs/Developerguide/\350\247\243\346\236\220\346\237\245\350\257\242.md" @@ -6,7 +6,7 @@ openGauss提供了函数to\_tsquery和plainto\_tsquery将查询转换为tsquery to_tsquery([ config regconfig, ] querytext text) returns tsquery ``` -to\_tsquery从querytext中创建一个tsquery,querytext必须由布尔运算符& \(AND\),| \(OR\)和! \(NOT\)分割的单个token组成。这些运算符可以用圆括弧分组。换句话说,to\_tsquery输入必须遵循tsquery输入的通用规则,具体请参见[文本搜索类型](文本搜索类型.md#ZH-CN_TOPIC_0242370420)。不同的是基本tsquery以token表面值作为输入,而to\_tsquery使用指定或默认分词器将每个token标准化成词素,并依据分词器丢弃属于停用词的token。例如: +to\_tsquery从querytext中创建一个tsquery,querytext必须由布尔运算符& \(AND\),| \(OR\)和! \(NOT\)分割的单个token组成。这些运算符可以用圆括弧分组。换句话说,to\_tsquery输入必须遵循tsquery输入的通用规则,具体请参见[文本搜索类型](文本搜索类型.md)。不同的是基本tsquery以token表面值作为输入,而to\_tsquery使用指定或默认分词器将每个token标准化成词素,并依据分词器丢弃属于停用词的token。例如: ``` postgres=# SELECT to_tsquery('english', 'The & Fat & Rats'); diff --git "a/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\344\275\215\347\275\256.md" "b/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\344\275\215\347\275\256.md" index 220372ffee5b7f3058a68ce6971d9e649795debc..f521e53134897b425c42c455b27e6d71fb0f90cc 100644 --- "a/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\344\275\215\347\275\256.md" +++ "b/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\344\275\215\347\275\256.md" @@ -126,6 +126,8 @@ 0表示关闭基于容量的新日志文件的创建。 +建议该值大小设置级别至少为MB级,利于日志文件的及时划分。 + **默认值:**20MB ## syslog\_facility @@ -150,7 +152,7 @@ ## event\_source -**参数说明:**该参数openGauss暂未使用。windows环境下log\_destination设置为eventlog时,event\_source设置在日志中openGauss日志消息的标识。 +**参数说明:**该参数仅在windows环境下生效, openGauss暂不支持。log\_destination设置为eventlog时,event\_source设置在日志中openGauss日志消息的标识。 该参数属于POSTMASTER类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 diff --git "a/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\206\205\345\256\271.md" "b/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\206\205\345\256\271.md" index 6cb653b6ae61a01c2c4ca792730b131a83d564d5..30b867288fb0c9b37db59f098dc5626cec58e67e 100644 --- "a/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\206\205\345\256\271.md" +++ "b/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\206\205\345\256\271.md" @@ -253,7 +253,7 @@ > to_hex(pid) >FROM pg_stat_activity; >``` ->- 当log\_line\_prefix设置为空值时,请将其最后一个字符作为一个独立的段,以此来直观地与后续的日志进行区分,也可以使用一个标点符号。 +>- 当log\_line\_prefix设置为非空值时,请将其最后一个字符作为一个独立的段,以此来直观地与后续的日志进行区分,也可以使用一个标点符号。 >- Syslog生成自己的时间戳及进程ID信息,所以当登录日志时,不需要包含这些转义字符。 **取值范围:**字符串 diff --git "a/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\346\227\266\351\227\264.md" "b/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\346\227\266\351\227\264.md" index 131019550fd916a3442f783e536b3f22d36936f0..91f664369401dd030632d4d31194e077f26100ca 100644 --- "a/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\346\227\266\351\227\264.md" +++ "b/content/zh/docs/Developerguide/\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\346\227\266\351\227\264.md" @@ -74,7 +74,7 @@ **默认值:**panic -[表1](#zh-cn_topic_0237124722_zh-cn_topic_0059778452_zh-cn_topic_0058967791_table55180162)解释openGauss中使用的消息安全级别。当日志输出到syslog或者eventlog时,openGauss进行如表中的转换。 +[表1](#zh-cn_topic_0237124722_zh-cn_topic_0059778452_zh-cn_topic_0058967791_table55180162)解释openGauss中使用的消息安全级别。当日志输出到syslog或者eventlog\(仅windows环境下, openGauss版本不涉及该参数\)时,openGauss进行如表中的转换。 **表 1** 信息严重程度分类 diff --git "a/content/zh/docs/Developerguide/\350\256\276\347\275\256.md" "b/content/zh/docs/Developerguide/\350\256\276\347\275\256.md" index 1bbd1dedf75f5f949817c007c3aa9e5a9d04effa..883b78837e92604ee3d93640c8592cf77c249100 100644 --- "a/content/zh/docs/Developerguide/\350\256\276\347\275\256.md" +++ "b/content/zh/docs/Developerguide/\350\256\276\347\275\256.md" @@ -8,6 +8,7 @@ >![](public_sys-resources/icon-notice.gif) **须知:** >- 如果需要启用WAL日志归档和主备机的数据流复制,必须将此参数设置为archive或者hot\_standby。 +>- 如果此参数设置为minimal, archive\_mode必须设置为off, hot\_standby必须设置为off,max\_wal\_senders参数设置为0, 且需为单机环境, 否则将导致数据库无法启动。 >- 如果此参数设置为archive,hot\_standby必须设置为off,否则将导致数据库无法启动。但是,hot\_standby在双机环境中不能设置为off,具体参见hot\_standby参数说明。 **取值范围**:枚举类型 @@ -78,7 +79,7 @@ - fsync\_writethrough表示每次提交的时候调用fsync\(\)强制把缓冲区任何数据写入磁盘。 >![](public_sys-resources/icon-note.gif) **说明:** - >由于历史原因,我们允许在Windows平台上将wal\_sync\_method设置为fsync\_writethrough,尽管它和fsync等效。 + >由于历史原因,Windows平台支持将wal\_sync\_method设置为fsync\_writethrough。在windows平台上fsync\_writethrough和fsync等效。 - fsync表示每次提交的时候调用fsync\(\)。(支持suse10和suse11) - open\_sync表示用带O\_SYNC选项的open\(\)写“WAL”文件。(支持suse10和suse11) @@ -124,7 +125,7 @@ **取值范围:**-1\~218 - 如果设置为-1,表示wal\_buffers的大小随着参数shared\_buffers自动调整,为shared\_buffers的1/32,最小值为8个XLOG\_BLCKSZ,最大值为2048个XLOG\_BLCKSZ。 -- 如果设置为其他值,当小于8时,会被默认设置为8;当大于2048的时,会被强制设置为2048。 +- 如果设置为其他值,当小于4时,会被默认设置为4。 **默认值:**16MB @@ -185,5 +186,5 @@ **取值范围**:整型,单位为8KB。 -**默认值:**16MB \(2048 \* 8KB\) +**默认值:**16MB \(2048 \* 8KB\) diff --git "a/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\257\206\347\240\201\345\256\211\345\205\250\347\255\226\347\225\245.md" "b/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\257\206\347\240\201\345\256\211\345\205\250\347\255\226\347\225\245.md" index edce2c41e0dd35a15f848425b6a43791b1d02829..44a1758d4be1a6160b1186b2f5eb4b158d77cc58 100644 --- "a/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\257\206\347\240\201\345\256\211\345\205\250\347\255\226\347\225\245.md" +++ "b/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\257\206\347\240\201\345\256\211\345\205\250\347\255\226\347\225\245.md" @@ -20,7 +20,7 @@ 连接成功后,系统显示类似如下信息: ``` - gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. @@ -42,7 +42,7 @@ 4. 执行如下命令将其设置为安全的加密算法。 ``` - gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_encryption_type=2" + gs_guc reload -N all -I all -c "password_encryption_type=2" ``` >![](public_sys-resources/icon-notice.gif) **须知:** @@ -92,7 +92,7 @@ 3. 执行如下命令设置成默认值1。 ``` - gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_policy=1" + gs_guc reload -N all -I all -c "password_policy=1" ``` 帐户密码的复杂度要求如下: @@ -152,7 +152,7 @@ >不建议设置为0,即使需要设置也要将所有openGauss节点中的password\_reuse\_time都设置为0才能生效。 ``` - gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_reuse_time=60" + gs_guc reload -N all -I all -c "password_reuse_time=60" ``` 配置password\_reuse\_max参数。 @@ -190,7 +190,7 @@ 3. 执行如下命令设置成默认值0。 ``` - gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_reuse_max = 0" + gs_guc reload -N all -I all -c "password_reuse_max = 0" ``` - 密码有效期限 @@ -235,7 +235,7 @@ 3. 执行如下命令设置成默认值90(不建议设置为0)。 ``` - gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_effect_time = 90" + gs_guc reload -N all -I all -c "password_effect_time = 90" ``` 配置password\_notify\_time参数。 @@ -271,7 +271,7 @@ 3. 如果显示结果不为7,执行如下命令设置成默认值7(不建议设置为0)。 ``` - gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_notify_time = 7" + gs_guc reload -N all -I all -c "password_notify_time = 7" ``` - 密码修改 diff --git "a/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\270\220\345\217\267\346\234\211\346\225\210\346\234\237.md" "b/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\270\220\345\217\267\346\234\211\346\225\210\346\234\237.md" index c514fa9477f657215eee34a7ac11d128dc1eafa7..80e8451e8bc2801a0186372631ed3223b2cea193 100644 --- "a/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\270\220\345\217\267\346\234\211\346\225\210\346\234\237.md" +++ "b/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\270\220\345\217\267\346\234\211\346\225\210\346\234\237.md" @@ -20,7 +20,7 @@ 连接成功后,系统显示类似如下信息: ``` - gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. diff --git "a/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\270\220\346\210\267\345\256\211\345\205\250\347\255\226\347\225\245.md" "b/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\270\220\346\210\267\345\256\211\345\205\250\347\255\226\347\225\245.md" index 64d20584f22d33c338b86085fb7cf119b3810324..a8ae8cf34dd1137ba3a21601351adcc7beaee476 100644 --- "a/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\270\220\346\210\267\345\256\211\345\205\250\347\255\226\347\225\245.md" +++ "b/content/zh/docs/Developerguide/\350\256\276\347\275\256\345\270\220\346\210\267\345\256\211\345\205\250\347\255\226\347\225\245.md" @@ -51,7 +51,7 @@ openGauss为帐户提供了自动锁定和解锁帐户、手动锁定和解锁 4. 执行如下命令设置成默认值10。 ``` - gs_guc reload -Z coordinator -D /gaussdb/data/dbnode -c "failed_login_attempts=10" + gs_guc reload -D /gaussdb/data/dbnode -c "failed_login_attempts=10" ``` @@ -91,7 +91,7 @@ openGauss为帐户提供了自动锁定和解锁帐户、手动锁定和解锁 4. 执行如下命令设置成默认值1。 ``` - gs_guc reload -Z coordinator -Z datanode -N all -I all -c "password_lock_time=1" + gs_guc reload -N all -I all -c "password_lock_time=1" ``` diff --git "a/content/zh/docs/Developerguide/\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\345\256\241\350\256\241.md" "b/content/zh/docs/Developerguide/\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\345\256\241\350\256\241.md" index 8702bd2b57226f6020051d314b4be5bb3ec931fd..85beaa6b217bdc947a4acc4ce241325ad8e6e0c7 100644 --- "a/content/zh/docs/Developerguide/\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\345\256\241\350\256\241.md" +++ "b/content/zh/docs/Developerguide/\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\345\256\241\350\256\241.md" @@ -6,6 +6,6 @@ - **[维护审计日志](维护审计日志.md)** -- **[设置文件权限安全策略](设置文件权限安全策略-9.md)** +- **[设置文件权限安全策略](设置文件权限安全策略.md)** diff --git "a/content/zh/docs/Developerguide/\350\256\276\347\275\256\346\226\207\344\273\266\346\235\203\351\231\220\345\256\211\345\205\250\347\255\226\347\225\245.md" "b/content/zh/docs/Developerguide/\350\256\276\347\275\256\346\226\207\344\273\266\346\235\203\351\231\220\345\256\211\345\205\250\347\255\226\347\225\245.md" index 1f7742325339be12e2010768aa01661c5b8afc3a..97d72f9e35084671f0a14c9350107e5eebc10da8 100644 --- "a/content/zh/docs/Developerguide/\350\256\276\347\275\256\346\226\207\344\273\266\346\235\203\351\231\220\345\256\211\345\205\250\347\255\226\347\225\245.md" +++ "b/content/zh/docs/Developerguide/\350\256\276\347\275\256\346\226\207\344\273\266\346\235\203\351\231\220\345\256\211\345\205\250\347\255\226\347\225\245.md" @@ -1,4 +1,4 @@ -# 设置文件权限安全策略 +# 设置文件权限安全策略 ## 背景信息 @@ -48,6 +48,13 @@

    0700

    data(数据库节点/数据库主节点)

    +

    -

    +

    0700

    +

    base

    实例数据目录

    diff --git "a/content/zh/docs/Developerguide/\350\257\201\344\271\246\346\233\277\346\215\242.md" "b/content/zh/docs/Developerguide/\350\257\201\344\271\246\346\233\277\346\215\242.md" index 3c90f8be8789af38d7d138a99ab2fe20b46fc637..fa0522f79830b82514d4791a9bb9f268f1cc0100 100644 --- "a/content/zh/docs/Developerguide/\350\257\201\344\271\246\346\233\277\346\215\242.md" +++ "b/content/zh/docs/Developerguide/\350\257\201\344\271\246\346\233\277\346\215\242.md" @@ -1,4 +1,4 @@ -# 证书替换 +# 证书替换 ## 操作场景 @@ -56,7 +56,7 @@ openGauss目前只支持X509v3的PEM格式证书。 gs_om -t start ``` + >![](public_sys-resources/icon-note.gif) **说明:** + >证书具有rollback功能,可以把上一次执行证书替换之前的证书,进行回退。可以使用gs\_om -t cert --rollback进行远程调用该接口;使用gs\_om -t cert --rollback -L进行本地调用该接口。以上一次成功执行证书替换后,被替换的证书版本为基础进行回退。 ->![](public_sys-resources/icon-note.gif) **说明:** ->证书具有rollback功能,可以把上一次执行证书替换之前的证书,进行回退。可以使用gs\_om -t cert --rollback进行远程调用该接口;使用gs\_om -t cert --rollback -L进行本地调用该接口。以上一次成功执行证书替换后,被替换的证书版本为基础进行回退。 diff --git "a/content/zh/docs/Developerguide/\350\257\201\344\271\246\347\224\237\346\210\220.md" "b/content/zh/docs/Developerguide/\350\257\201\344\271\246\347\224\237\346\210\220.md" index be9c79eba3130f74c79346b19f517b5883d773c4..71e37e6dbdcdd6f795ae727be43af202ae1721e8 100644 --- "a/content/zh/docs/Developerguide/\350\257\201\344\271\246\347\224\237\346\210\220.md" +++ "b/content/zh/docs/Developerguide/\350\257\201\344\271\246\347\224\237\346\210\220.md" @@ -1,4 +1,4 @@ -# 证书生成 +# 证书生成 ## 操作场景 @@ -16,7 +16,7 @@ Linux环境安装了openssl组件。 --假设用户为omm已存在,搭建CA的路径为test --以root用户身份登录Linux环境,切换到用户omm mkdir test - cd /etc/ssl + cd /etc/pki/tls --copy 配置文件openssl.cnf到test下 cp openssl.cnf ~/test cd ~/test @@ -27,9 +27,9 @@ Linux环境安装了openssl组件。 --创建serial文件,写入01 echo '01'>./demoCA/serial --创建文件index.txt - touch /home/omm/test/demoCA/index.txt + touch ./demoCA/index.txt --修改openssl.cnf配置文件中的参数 - dir = /home/omm/test/demoCA + dir = ./demoCA default_md = sha256 --至此CA环境搭建完成 ``` diff --git "a/content/zh/docs/Developerguide/\350\257\215\345\205\270\346\246\202\350\277\260.md" "b/content/zh/docs/Developerguide/\350\257\215\345\205\270\346\246\202\350\277\260.md" index 4514e863dc732f526fdc92f39175f96c21106569..7ea758a70dbcdddbbeaa80a2a45ea0fc6f76e7a7 100644 --- "a/content/zh/docs/Developerguide/\350\257\215\345\205\270\346\246\202\350\277\260.md" +++ "b/content/zh/docs/Developerguide/\350\257\215\345\205\270\346\246\202\350\277\260.md" @@ -10,7 +10,7 @@ - 如果token在词典中已知,返回对应lexeme数组(注意,一个标记可能对应多个lexeme)。 -- 一个lexeme。(该lexeme为设置了TSL\_FILTER标志的lexeme,TSL\_FILTER标志为过滤词典内部自动设置,用户不感知。)一个新token会代替输入token被传递给后继词典(当前词典可被称为过滤词典)。 +- 一个lexeme。一个新token会代替输入token被传递给后继词典(当前词典可被称为过滤词典)。 - 如果token在词典中已知,但它是一个停用词,返回空数组。 - 如果词典不能识别输入的token,返回NULL。 diff --git "a/content/zh/docs/Developerguide/\350\257\246\350\247\243.md" "b/content/zh/docs/Developerguide/\350\257\246\350\247\243.md" new file mode 100644 index 0000000000000000000000000000000000000000..fe71206febf479fc336199d0dbec3d4a512b98c8 --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\257\246\350\247\243.md" @@ -0,0 +1,99 @@ +# 详解 + +如[SQL执行计划概述](SQL执行计划概述.md)节中所说,EXPLAIN会显示执行计划,但并不会实际执行SQL语句。EXPLAIN ANALYZE和EXPLAIN PERFORMANCE两者都会实际执行SQL语句并返回执行信息。在这一节将详细解释执行计划及执行信息。 + +## 执行计划 + +以如下SQL语句为例: + +``` +SELECT * FROM t1, t2 WHERE t1.c1 = t2.c2; +``` + +执行EXPLAIN的输出为: + +![](figures/zh-cn_image_0252663634.png) + +**执行计划层级解读(纵向):** + +1. 第一层:Seq Scan on t2 + + 表扫描算子,用Seq Scan的方式扫描表t2。这一层的作用是把表t2的数据从buffer或者磁盘上读上来输送给上层节点参与计算。 + +2. 第二层:Hash + + Hash算子,作用是把下层计算输送上来的算子计算hash值,为后续hash join操作做数据准备 + +3. 第三层:Seq Scan on t1 + + 表扫描算子,用Seq Scan的方式扫描表t1。这一层的作用是把表t1的数据从buffer或者磁盘上读上来输送给上层节点参与hash join计算。 + +4. 第四层:Hash Join + + join算子,主要作用是将t1表和t2表的数据通过hash join的方式连接,并输出结果数据 + + +**执行计划中的关键字说明:** + +1. 表访问方式 + - Seq Scan + + 全表顺序扫描。 + + - Index Scan + + 优化器决定使用两步的规划:最底层的规划节点访问一个索引,找出匹配索引条件的行的位置,然后上层规划节点真实地从表中抓取出那些行。独立地抓取数据行比顺序地读取它们的开销高很多,但是因为并非所有表的页面都被访问了,这么做实际上仍然比一次顺序扫描开销要少。使用两层规划的原因是,上层规划节点在读取索引标识出来的行位置之前,会先将它们按照物理位置排序,这样可以最小化独立抓取的开销。 + + 如果在WHERE里面使用的好几个字段上都有索引,那么优化器可能会使用索引的AND或OR的组合。但是这么做要求访问两个索引,因此与只使用一个索引,而把另外一个条件只当作过滤器相比,这个方法未必是更优。 + + 索引扫描可以分为以下几类,他们之间的差异在于索引的排序机制。 + + - Bitmap Index Scan + + 使用位图索引抓取数据页。 + + - Index Scan using index\_name + + 使用简单索引搜索,该方式表的数据行是以索引顺序抓取的,这样就令读取它们的开销更大,但是这里的行少得可怜,因此对行位置的额外排序并不值得。最常见的就是看到这种规划类型只抓取一行,以及那些要求ORDER BY条件匹配索引顺序的查询。因为那时候没有多余的排序步骤是必要的以满足ORDER BY。 + + +2. 表连接方式 + - Nested Loop + + 嵌套循环,适用于被连接的数据子集较小的查询。在嵌套循环中,外表驱动内表,外表返回的每一行都要在内表中检索找到它匹配的行,因此整个查询返回的结果集不能太大(不能大于10000),要把返回子集较小的表作为外表,而且在内表的连接字段上建议要有索引。 + + - \(Sonic\) Hash Join + + 哈希连接,适用于数据量大的表的连接方式。优化器使用两个表中较小的表,利用连接键在内存中建立hash表,然后扫描较大的表并探测散列,找到与散列匹配的行。Sonic和非Sonic的Hash Join的区别在于所使用hash表结构不同,不影响执行的结果集。 + + - Merge Join + + 归并连接,通常情况下执行性能差于哈希连接。如果源数据已经被排序过,在执行融合连接时,并不需要再排序,此时融合连接的性能优于哈希连接。 + +3. 运算符 + - sort + + 对结果集进行排序。 + + - filter + + EXPLAIN输出显示WHERE子句当作一个"filter"条件附属于顺序扫描计划节点。这意味着规划节点为它扫描的每一行检查该条件,并且只输出符合条件的行。预计的输出行数降低了,因为有WHERE子句。不过,扫描仍将必须访问所有 10000 行,因此开销没有降低;实际上它还增加了一些(确切的说,通过10000 \* cpu\_operator\_cost)以反映检查WHERE条件的额外CPU时间。 + + - LIMIT + + LIMIT限定了执行结果的输出记录数。如果增加了LIMIT,那么不是所有的行都会被检索到。 + + + +## 执行信息 + +以如下SQL语句为例: + +``` +select sum(t2.c1) from t1,t2 where t1.c1=t2.c2 group by t1.c2; +``` + +执行EXPLAIN PERFORMANCE输出为: + +![](figures/zh-cn_image_0252660975.png) + diff --git "a/content/zh/docs/Developerguide/\350\257\255\345\217\245\350\241\214\344\270\272.md" "b/content/zh/docs/Developerguide/\350\257\255\345\217\245\350\241\214\344\270\272.md" index 14d07e9d0d7a48050debbe49574f4458915d9d7b..ff3b653317ce1dc8584b8c46a613707fbe26e25c 100644 --- "a/content/zh/docs/Developerguide/\350\257\255\345\217\245\350\241\214\344\270\272.md" +++ "b/content/zh/docs/Developerguide/\350\257\255\345\217\245\350\241\214\344\270\272.md" @@ -99,7 +99,6 @@ **取值范围:**枚举类型 -- read uncommitted表示隔离级别是读未提交。 - read committed表示事务读已提交。 - repeatable read表示事务可重复读。 - serializable,openGauss目前功能上不支持此隔离级别,等价于repeatable read。 @@ -157,7 +156,7 @@ openGauss不支持可串行化的隔离级别,因此,该参数无实际意 该参数属于USERSET类型参数,请参考[表2](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t290c8f15953843db8d8e53d867cd893d)中对应设置方法进行设置。 -**取值范围:**整型,最小值为0,最大值为2147483648,单位为毫秒。 +**取值范围:**整型,最小值为0,最大值为2147483647,单位为毫秒。 **默认值:**0 diff --git "a/content/zh/docs/Developerguide/\350\260\203\344\274\230\346\265\201\347\250\213.md" "b/content/zh/docs/Developerguide/\350\260\203\344\274\230\346\265\201\347\250\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..8ae1d1aa2d3ca87a00d57916013820f74f315902 --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\260\203\344\274\230\346\265\201\347\250\213.md" @@ -0,0 +1,12 @@ +# 调优流程 + +对慢SQL语句进行分析,通常包括以下步骤: + +## 操作步骤 + +1. 收集SQL中涉及到的所有表的统计信息。在数据库中,统计信息是规划器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造成执行计划严重劣化,从而导致性能问题。从经验数据来看,10%左右性能问题是因为没有收集统计信息。具体请参见[更新统计信息](更新统计信息.md)。 +2. 通过查看执行计划来查找原因。如果SQL长时间运行未结束,通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出来,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及实际运行情况,以便更精准地定位问题原因。有关执行计划的详细介绍请参见[SQL执行计划介绍](SQL执行计划介绍.md)。 +3. [审视和修改表定义](审视和修改表定义.md)。 +4. 针对EXPLAIN或EXPLAIN PERFORMANCE信息,定位SQL慢的具体原因以及改进措施,具体参见[典型SQL调优点](典型SQL调优点.md)。 +5. 通常情况下,有些SQL语句可以通过查询重写转换成等价的,或特定场景下等价的语句。重写后的语句比原语句更简单,且可以简化某些执行步骤达到提升性能的目的。查询重写方法在各个数据库中基本是通用的。[经验总结:SQL语句改写规则](经验总结-SQL语句改写规则.md)介绍了几种常用的通过改写SQL进行调优的方法。 + diff --git "a/content/zh/docs/Developerguide/\350\260\203\347\224\250\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\350\260\203\347\224\250\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..802863a22d995c0c31e190043fd98ab1e226295a --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\260\203\347\224\250\350\257\255\345\217\245.md" @@ -0,0 +1,38 @@ +# 调用语句 + +## 语法 + +调用一个语句的语法请参见[图1](#zh-cn_topic_0237122223_zh-cn_topic_0059778001_fa4de2ab1dc7e4c04b4997c6238ee1861)。 + +**图 1** call\_clause::= +![](figures/call_clause.png "call_clause") + +对以上语法格式的解释如下: + +- procedure\_name:存储过程名。 +- parameter:存储过程的参数,可以没有或者有多个参数。 + +## 示例 + +``` +--创建存储过程proc_staffs +postgres=# CREATE OR REPLACE PROCEDURE proc_staffs +( +section NUMBER(6), +salary_sum out NUMBER(8,2), +staffs_count out INTEGER +) +IS +BEGIN +SELECT sum(salary), count(*) INTO salary_sum, staffs_count FROM hr.staffs where section_id = section; +END; +/ + +--调用存储过程proc_return. +postgres=# CALL proc_staffs(2,8,6); + +--清除存储过程 +postgres=# DROP PROCEDURE proc_staffs; + +``` + diff --git "a/content/zh/docs/Developerguide/\350\260\203\350\257\225-20.md" "b/content/zh/docs/Developerguide/\350\260\203\350\257\225-20.md" new file mode 100644 index 0000000000000000000000000000000000000000..c3bbd2d1abe88d9a31b499a2afce75d3fc0de925 --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\260\203\350\257\225-20.md" @@ -0,0 +1,122 @@ +# 调试 + +## 语法 + +RAISE有以下五种语法格式: + +**图 1** raise\_format::= +![](figures/raise_format.png "raise_format") + +**图 2** raise\_condition::= +![](figures/raise_condition.png "raise_condition") + +**图 3** raise\_sqlstate::= +![](figures/raise_sqlstate.png "raise_sqlstate") + +**图 4** raise\_option::= +![](figures/raise_option.png "raise_option") + +**图 5** raise::= +![](figures/raise.png "raise") + +**参数说明:** + +- level选项用于指定错误级别,有DEBUG,LOG,INFO,NOTICE,WARNING以及EXCEPTION(默认值)。EXCEPTION抛出一个正常终止当前事务的异常,其他的仅产生不同异常级别的信息。特殊级别的错误信息是否报告到客户端、写到服务器日志由[log\_min\_messages](记录日志的时间.md#zh-cn_topic_0237124722_zh-cn_topic_0059778452_sc6c47ec8cc1b47e28be98dbb24b1b39a)和[client\_min\_messages](记录日志的时间.md#zh-cn_topic_0237124722_zh-cn_topic_0059778452_s2955da1f1cb24b0aa68ddc77700233e0)这两个配置参数控制。 +- format:格式字符串,指定要报告的错误消息文本。格式字符串后可跟表达式,用于向消息文本中插入。在格式字符串中,%由format后面跟着的参数的值替换,%%用于打印出%。例如: + + ``` + --v_job_id 将替换字符串中的 %: + RAISE NOTICE 'Calling cs_create_job(%)',v_job_id; + ``` + +- option = expression:向错误报告中添加另外的信息。关键字option可以是MESSAGE、DETAIL、HINT以及ERRCODE,并且每一个expression可以是任意的字符串。 + - MESSAGE,指定错误消息文本,这个选项不能用于在USING前包含一个格式字符串的RAISE语句中。 + - DETAIL,说明错误的详细信息。 + - HINT,用于打印出提示信息。 + - ERRCODE,向报告中指定错误码(SQLSTATE)。可以使用条件名称或者直接用五位字符的SQLSTATE错误码。 + +- condition\_name:错误码对应的条件名。 +- sqlstate:错误码。 + +如果在RAISE EXCEPTION命令中既没有指定条件名也没有指定SQLSTATE,默认用RAISE EXCEPTION \(P0001\)。如果没有指定消息文本,默认用条件名或者SQLSTATE作为消息文本。 + +>![](public_sys-resources/icon-notice.gif) **须知:** +>当由SQLSTATE指定了错误码,则不局限于已定义的错误码,可以选择任意包含五个数字或者大写的ASCII字母的错误码,而不是00000。建议避免使用以三个0结尾的错误码,因为这种错误码是类别码,会被整个种类捕获。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>[图5](#zh-cn_topic_0237122256_zh-cn_topic_0059777683_f6b9d7253ecad413e9ee92ba78199a6b4)所示的语法不接任何参数。这种形式仅用于一个BEGIN块中的EXCEPTION语句,它使得错误重新被处理。 + +## 示例 + +终止事务时,给出错误和提示信息: + +``` +CREATE OR REPLACE PROCEDURE proc_raise1(user_id in integer) +AS +BEGIN +RAISE EXCEPTION 'Noexistence ID --> %',user_id USING HINT = 'Please check your user ID'; +END; +/ + +call proc_raise1(300011); + +--执行结果 +ERROR: Noexistence ID --> 300011 +HINT: Please check your user ID +``` + +两种设置SQLSTATE的方式: + +``` +CREATE OR REPLACE PROCEDURE proc_raise2(user_id in integer) +AS +BEGIN +RAISE 'Duplicate user ID: %',user_id USING ERRCODE = 'unique_violation'; +END; +/ + +\set VERBOSITY verbose +call proc_raise2(300011); + +--执行结果 +ERROR: Duplicate user ID: 300011 +SQLSTATE: 23505 +LOCATION: exec_stmt_raise, pl_exec.cpp:3482 +``` + +如果主要的参数是条件名或者是SQLSTATE,可以使用: + +RAISE division\_by\_zero; + +RAISE SQLSTATE '22012'; + +例如: + +``` +CREATE OR REPLACE PROCEDURE division(div in integer, dividend in integer) +AS +DECLARE +res int; + BEGIN + IF dividend=0 THEN + RAISE division_by_zero; + RETURN; + ELSE + res := div/dividend; + RAISE INFO 'division result: %', res; + RETURN; + END IF; + END; +/ +call division(3,0); + +--执行结果 +ERROR: division_by_zero +``` + +或者另一种方式: + +``` +RAISE unique_violation USING MESSAGE = 'Duplicate user ID: ' || user_id; +``` + diff --git "a/content/zh/docs/Developerguide/\350\260\203\350\257\225.md" "b/content/zh/docs/Developerguide/\350\260\203\350\257\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..72eb72cb9229b26d4a398cfab8aebd0050b7dbd7 --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\260\203\350\257\225.md" @@ -0,0 +1,160 @@ +# 调试 + +用户可以根据自己的需要,通过修改实例数据目录下的postgresql.conf文件中特定的配置参数来控制日志的输出,从而更好的了解数据库的运行状态。 + +可调整的配置参数请参见[表1](#zh-cn_topic_0237120444_zh-cn_topic_0059779333_tec23904511dd4695b8b01f8c7c04563a)。 + +**表 1** 配置参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    参数名称

    +

    描述

    +

    取值范围

    +

    备注

    +

    client_min_messages

    +

    配置发送到客户端信息的级别。

    +
    • DEBUG5
    • DEBUG4
    • DEBUG3
    • DEBUG2
    • DEBUG1
    • LOG
    • NOTICE
    • WARNING
    • ERROR
    • FATAL
    • PANIC
    +

    默认值:NOTICE 。

    +

    设置级别后,发送到客户端的信息包含所设级别及以下所有低级别会发送的信息。级别越低,发送的信息越少。

    +

    log_min_messages

    +

    配置写到服务器日志里信息的级别。

    +
    • DEBUG5
    • DEBUG4
    • DEBUG3
    • DEBUG2
    • DEBUG1
    • INFO
    • NOTICE
    • WARNING
    • ERROR
    • LOG
    • FATAL
    • PANIC
    +

    默认值:WARNING。

    +

    指定某一级别后,写到日志的信息包含所有更高级别会输出的信息。级别越高,服务器日志的信息越少。

    +

    log_min_error_statement

    +

    配置写到服务器日志中错误SQL语句的级别。

    +
    • DEBUG5
    • DEBUG4
    • DEBUG3
    • DEBUG2
    • DEBUG1
    • INFO
    • NOTICE
    • WARNING
    • ERROR
    • FATAL
    • PANIC
    +

    缺省值:ERROR。

    +

    所有导致一个特定级别(或者更高级别)错误的SQL语句都将记录在服务器日志中。

    +

    只有系统管理员可以修改该参数。

    +

    log_min_duration_statement

    +

    配置语句执行持续的最短时间。如果某个语句的持续时间大于或者等于设置的毫秒数,则会在日志中记录该语句及其持续时间。打开这个选项可以方便地跟踪需要优化的查询。

    +

    INT类型。

    +

    默认值:-1。

    +

    单位:毫秒。

    +

    设置为-1表示关闭这个功能。

    +

    只有系统管理员可以修改该参数。

    +

    log_connections/log_disconnections

    +

    配置是否在每次会话连接或结束时向服务器日志里打印一条信息。

    +
    • on:每次会话连接或结束时向日志里打印一条信息。
    • off:每次会话连接或结束时不向日志里打印信息。
    +

    默认值:off。

    +

    -

    +

    log_duration

    +

    配置是否记录每个已完成语句的持续时间。

    +
    • on:记录每个已完成语句的持续时间。
    • off:不记录已完成语句的持续时间。
    +

    默认值:off。

    +

    只有系统管理员可以修改该参数。

    +

    log_statement

    +

    配置日志中记录哪些SQL语句。

    +
    • none:不记录任何SQL语句。
    • ddl:记录数据定义语句。
    • mod:记录数据定义语句和数据操作语句。
    • all :记录所有语句。
    +

    默认值: none。

    +

    只有系统管理员可以修改该参数。

    +

    log_hostname

    +

    配置是否记录主机名。

    +
    • on:记录主机名。
    • off:不记录主机名。
    +

    默认值:off。

    +

    缺省时,连接日志只记录所连接主机的IP地址。打开这个选项会同时记录主机名。

    +

    该参数同时影响 查看审计结果GS_WLM_SESSION_HISTORYPG_STAT_ACTIVITYlog_line_prefix参数。

    +
    + +上表有关参数级别的说明请参见[表2](#zh-cn_topic_0237120444_zh-cn_topic_0059779333_t3c729a4a94d145c7bdc4ca788236d8a7)。 + +**表 2** 日志级别参数说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    级别

    +

    说明

    +

    DEBUG[1-5]

    +

    提供开发人员使用的信息。5级为最高级别,依次类推,1级为最低级别。

    +

    INFO

    +

    提供用户隐含要求的信息。如在VACUUM VERBOSE过程中的信息。

    +

    NOTICE

    +

    提供可能对用户有用的信息。如长标识符的截断,作为主键一部分创建的索引。

    +

    WARNING

    +

    提供给用户的警告。如在事务块范围之外的COMMIT。

    +

    ERROR

    +

    报告导致当前命令退出的错误。

    +

    LOG

    +

    报告一些管理员感兴趣的信息。如检查点活跃性。

    +

    FATAL

    +

    报告导致当前会话终止的原因。

    +

    PANIC

    +

    报告导致所有会话退出的原因。

    +
    + diff --git "a/content/zh/docs/Developerguide/\350\264\237\350\275\275\347\256\241\347\220\206.md" "b/content/zh/docs/Developerguide/\350\264\237\350\275\275\347\256\241\347\220\206.md" index 864cb5dc20513b89b790fe9fe2af69025f06edc5..218a295ffa7029e8e906ab844a5ad6aa90a23842 100644 --- "a/content/zh/docs/Developerguide/\350\264\237\350\275\275\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Developerguide/\350\264\237\350\275\275\347\256\241\347\220\206.md" @@ -37,10 +37,7 @@ **取值范围**:字符串 -**默认值:**DefaultClass:Medium - ->![](public_sys-resources/icon-note.gif) **说明:** ->DefaultClass:Medium表示DefaultClass下Timeshare控制组中的Medium控制组。 +**默认值:**InvalidGroup ## cpu\_collect\_timer @@ -97,7 +94,7 @@ ## enable\_resource\_record -**参数说明:**是否开启资源监控记录归档功能。开启时,对于history视图(GS\_WLM\_SESSION\_HISTORY和GS\_WLM\_OPERATOR\_HISTORY)中的记录,每隔3分钟会分别被归档到相应的info视图(GS\_WLM\_SESSION\_INFO和GS\_WLM\_OPERATOR\_INFO),归档后history视图中的记录会被清除。 +**参数说明:**是否开启资源监控记录归档功能。 该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 @@ -139,7 +136,7 @@ 参数说明:设置用户历史资源监控数据的保存天数。该参数仅在 enable\_user\_metric\_persistent为on时有效。 -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 +该参数属于USERSET类型参数,请参考[表2](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t290c8f15953843db8d8e53d867cd893d)中的方法一和方法二进行设置。 取值范围:整型,0 ~ 730,单位为天。 @@ -166,7 +163,7 @@ **参数说明:**设置实例历史资源监控数据的保存天数。该参数仅在enable\_instance\_metric\_persistent为on时有效。 -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 +该参数属于USERSET类型参数,请参考[表2](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t290c8f15953843db8d8e53d867cd893d)中的方法一和方法二进行设置。 **取值范围**:整型,0 ~3650,单位为天。 @@ -220,7 +217,7 @@ **参数说明:**禁止内存保护功能。当系统内存不足时如果需要查询系统视图,可以先将此参数置为on,禁止内存保护功能,保证视图可以正常查询。该参数只适用于在系统内存不足时进行系统诊断和调试,正常运行时请保持该参数配置为off。 -该参数属于USERSET类型参数,且只对当前会话有效。请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中方式三的方法进行设置。 +该参数属于USERSET类型参数,且只对当前会话有效。请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。 **取值范围**:布尔型 @@ -279,7 +276,7 @@ **参数说明**:每秒触发IO的上限。 -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中方式三的方法进行设置。 +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应类型的设置的方法进行设置。 **取值范围**:整型,0~1073741823 @@ -289,7 +286,7 @@ **参数说明**:IO利用率高达50%时,重消耗IO作业进行IO资源管控时关联的优先级等级。 -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中方式三的方法进行设置。 +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应类型的设置的方法进行设置。 **取值范围**:枚举型 @@ -304,7 +301,7 @@ **参数说明**:行存场景下,io管控时用来对io次数进行计数的单位。 -该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中方式三的方法进行设置。 +该参数属于SIGHUP类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应类型的设置方法进行设置。 记多少次io触发为一计数单位,通过此计数单位所记录的次数进行io管控。 @@ -316,7 +313,7 @@ **参数说明**:当前的session关联的resource pool。 -该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中方式三的方法进行设置。 +该参数属于USERSET类型参数,请参考[表1](重设参数.md#zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应类型的设置方法进行设置。 即如果先设置cgroup\_name,再设置session\_respool,那么session\_respool关联的控制组起作用,如果再切换cgroup\_name,那么新切换的cgroup\_name起作用。 diff --git "a/content/zh/docs/Developerguide/\350\265\204\346\272\220\346\266\210\350\200\227.md" "b/content/zh/docs/Developerguide/\350\265\204\346\272\220\346\266\210\350\200\227.md" index 0d2973e1e97ce549be97634ab0b687aea203dffd..6e466c3dba886c57ba79fcc08251d9ad034dfa93 100644 --- "a/content/zh/docs/Developerguide/\350\265\204\346\272\220\346\266\210\350\200\227.md" +++ "b/content/zh/docs/Developerguide/\350\265\204\346\272\220\346\266\210\350\200\227.md" @@ -1,6 +1,6 @@ # 资源消耗 -- **[内存](内存.md)** +- **[内存](内存-21.md)** - **[磁盘空间](磁盘空间.md)** diff --git "a/content/zh/docs/Developerguide/\350\265\213\345\200\274\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\350\265\213\345\200\274\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..e107373dfdccfa54e2b50c2fe31e80eaa94f7e9a --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\265\213\345\200\274\350\257\255\345\217\245.md" @@ -0,0 +1,26 @@ +# 赋值语句 + +## 语法 + +给变量赋值的语法请参见[图1](#zh-cn_topic_0237122222_zh-cn_topic_0059778597_f1087f61f4ec24addbb3b79a2ccf21917)。 + +**图 1** assignment\_value::= +![](figures/assignment_value.png "assignment_value") + +对以上语法格式的解释如下: + +- variable\_name:变量名。 +- value:可以是值或表达式。值value的类型需要和变量variable\_name的类型兼容才能正确赋值。 + +## 示例 + +``` +postgres=# DECLARE + emp_id INTEGER := 7788;--赋值 +BEGIN + emp_id := 5;--赋值 + emp_id := 5*7784; +END; +/ +``` + diff --git "a/content/zh/docs/Developerguide/\350\277\224\345\233\236\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\350\277\224\345\233\236\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..0f692a9546848076681511ecfdd771c3e7479c2e --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\277\224\345\233\236\350\257\255\345\217\245.md" @@ -0,0 +1,9 @@ +# 返回语句 + +openGauss提供两种方式返回数据:RETURN或RETURN NEXT及RETURN QUERY。其中,RETURN NEXT和RETURN QUERY只适用于函数,不适用存储过程。 + +- **[RETURN](RETURN.md)** + +- **[RETURN NEXT及RETURN QUERY](RETURN-NEXT及RETURN-QUERY.md)** + + diff --git "a/content/zh/docs/Developerguide/\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223-0.md" "b/content/zh/docs/Developerguide/\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223-0.md" new file mode 100644 index 0000000000000000000000000000000000000000..43717a5bb80fb04b02b14732702c7184f25f0062 --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223-0.md" @@ -0,0 +1,140 @@ +# 连接数据库 + +在创建数据库连接之后,才能使用它来执行SQL语句操作数据。 + +## 函数原型 + +JDBC提供了三个方法,用于创建数据库连接。 + +- DriverManager.getConnection\(String url\); +- DriverManager.getConnection\(String url, Properties info\); +- DriverManager.getConnection\(String url, String user, String password\); + +## 参数 + +**表 1** 数据库连接参数 + + + + + + + + + + + + + + + + + + + +

    参数

    +

    描述

    +

    url

    +

    postgresql.jar数据库连接描述符。格式如下:

    +
    • jdbc:postgresql:database
    • jdbc:postgresql://host/database
    • jdbc:postgresql://host:port/database
    • jdbc:postgresql://host:port/database?param1=value1&param2=value2
    • jdbc:postgresql://host1:port1,host2:port2/database?param1=value1&param2=value2
    +
    说明:
    • database为要连接的数据库名称。
    • host为数据库服务器名称或IP地址。

      连接openGauss的机器与openGauss不在同一网段时,host指定的IP地址应为Manager界面上所设的coo.cooListenIp2(应用访问IP)的取值。

      +

      由于安全原因,数据库主节点禁止openGauss内部其他节点无认证接入。如果要在openGauss内部访问数据库主节点,请将JDBC程序部署在数据库主节点所在机器,host使用"127.0.0.1"。否则可能会出现“FATAL: Forbid remote connection with trust method!”错误。

      +

      建议业务系统单独部署在openGauss外部,否则可能会影响数据库运行性能。

      +

      缺省情况下,连接服务器为localhost。

      +
    • port为数据库服务器端口。

      缺省情况下,会尝试连接到5431端口的database。

      +
    • param为参数名称,即数据库连接属性。

      参数可以配置在URL中,以"?"开始配置,以"="给参数赋值,以"&"作为不同参数的间隔。也可以采用info对象的属性方式进行配置,详细示例会在本节给出。

      +
    • value为参数值,即数据库连接属性值。
    +
    +

    info

    +

    数据库连接属性。常用的属性如下:

    +
    • PGDBNAME:String类型。表示数据库名称。(URL中无需配置该参数,自动从URL中解析)
    • PGHOST:String类型。主机IP地址。详细示例见下。
    • PGPORT:Integer类型。主机端口号。详细示例见下。
    • user:String类型。表示创建连接的数据库用户。
    • password:String类型。表示数据库用户的密码。
    • loggerLevel:String类型。目前支持3种级别:OFF、DEBUG、TRACE。设置为OFF关闭日志,设置为DEBUG和TRACE记录的日志信息详细程度不同。
    • loggerFile:String类型。Logger输出的文件名。需要显示指定日志文件名,若未指定目录则生成在客户端运行程序目录。
    • allowEncodingChanges:Boolean类型。设置该参数值为“true”进行字符集类型更改,配合characterEncoding=CHARSET设置字符集,二者使用"&"分隔。
    • currentSchema:String类型。在search-path中指定要设置的schema。
    • hostRecheckSeconds:Integer类型。JDBC尝试连接主机后会保存主机状态:连接成功或连接失败。在hostRecheckSeconds时间内保持可信,超过则状态失效。缺省值是10秒。
    • ssl:Boolean类型。以SSL方式连接。

      ssl=true可支持NonValidatingFactory通道和使用证书的方式:

      +

      1、NonValidatingFactory通道需要配置用户名和密码,同时将SSL设置为true。

      +

      2、配置客户端证书、密钥、根证书,将SSL设置为true。

      +
    • sslmode:String类型。SSL认证方式。取值范围为:require、verify-ca、verify-full。
      • require只尝试SSL连接,如果存在CA文件,则应设置成verify-ca的方式验证。
      • verify-ca只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书。
      • verify-full只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书,以及验证服务器主机名是否与证书中的一致。
      +
    • sslcert:String类型。提供证书文件的完整路径。客户端和服务端证书的类型为End Entity。
    • sslkey:String类型。提供密钥文件的完整路径。使用时将客户端证书转换为DER格式:
      openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt
      +
    • sslrootcert:String类型。SSL根证书的文件名。根证书的类型为CA。
    • sslpassword:String类型。提供给ConsoleCallbackHandler使用。
    • sslpasswordcallback:String类型。SSL密码提供者的类名。缺省值:org.postgresql.ssl.jdbc4.LibPQFactory.ConsoleCallbackHandler。
    • sslfactory:String类型。提供的值是SSLSocketFactory在建立SSL连接时用的类名。
    • sslfactoryarg:String类型。此值是上面提供的sslfactory类的构造函数的可选参数(不推荐使用)。
    • sslhostnameverifier:String类型。主机名验证程序的类名。接口实现javax.net.ssl.HostnameVerifier,默认使用org.postgresql.ssl.PGjdbcHostnameVerifier。
    • loginTimeout:Integer类型。指建立数据库连接的等待时间。超时时间单位为秒。
    • connectTimeout:Integer类型。用于连接服务器操作的超时值。如果连接到服务器花费的时间超过此值,则连接断开。超时时间单位为秒,值为0时表示已禁用,timeout不发生。
    • socketTimeout:Integer类型。用于socket读取操作的超时值。如果从服务器读取所花费的时间超过此值,则连接关闭。超时时间单位为秒,值为0时表示已禁用,timeout不发生。
    • cancelSignalTimeout:Integer类型。发送取消消息本身可能会阻塞,此属性控制用于取消命令的“connect超时”和“socket超时”。超时时间单位为秒,默认值为10秒。
    • tcpKeepAlive:Boolean类型。启用或禁用TCP保活探测功能。默认为false。
    • logUnclosedConnections:Boolean类型。客户端可能由于未调用Connection对象的close()方法而泄漏Connection对象。最终这些对象将被垃圾回收,并且调用finalize()方法。如果调用者自己忽略了此操作,该方法将关闭Connection。
    • assumeMinServerVersion:String类型。客户端会发送请求进行float精度设置。该参数设置要连接的服务器版本,如assumeMinServerVersion=9.0,可以在建立时减少相关包的发送。
    • ApplicationName:String类型。设置正在使用连接的JDBC驱动的名称。通过在数据库主节点上查询pg_stat_activity表可以看到正在连接的客户端信息,JDBC驱动名称显示在application_name列。缺省值为PostgreSQL JDBC Driver。
    • connectionExtraInfo:Boolean类型。表示驱动是否上报当前驱动的部署路径、进程属主用户到数据库。

      取值范围:true或false,默认值为false。设置connectionExtraInfo为true,JDBC驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在connection_info参数里;同时可以在PG_STAT_ACTIVITY中查询到。

      +
    • autosave:String类型。共有3种:"always", "never", "conservative"。如果查询失败,指定驱动程序应该执行的操作。在autosave=always模式下,JDBC驱动程序在每次查询之前设置一个保存点,并在失败时回滚到该保存点。在autosave=never模式(默认)下,无保存点。在autosave=conservative模式下,每次查询都会设置保存点,但是只会在“statement XXX无效”等情况下回滚并重试。
    • protocolVersion:Integer类型。连接协议版本号,目前仅支持3。注意:设置该参数时将采用md5加密方式,需要同步修改数据库的加密方式:gs_guc set -N all -I all -c "password_encryption_type=1" ,重启openGauss生效后需要创建用md5方式加密口令的用户。同时修改pg_hba.conf,将客户端连接方式修改为md5。用新建用户进行登录(不推荐)。
    • prepareThreshold:Integer类型。控制parse语句何时发送。默认值是5。第一次parse一个SQL比较慢,后面再parse就会比较快,因为有缓存了。如果一个会话连续多次执行同一个SQL,在达到prepareThreshold次数以上时,JDBC将不再对这个SQL发送parse命令。
    • preparedStatementCacheQueries:Integer类型。确定每个连接中缓存的查询数,默认情况下是256。若在prepareStatement()调用中使用超过256个不同的查询,则最近最少使用的查询缓存将被丢弃。0表示禁用缓存。
    • preparedStatementCacheSizeMiB:Integer类型。确定每个连接可缓存的最大值(以兆字节为单位),默认情况下是5。若缓存了超过5MB的查询,则最近最少使用的查询缓存将被丢弃。0表示禁用缓存。
    • databaseMetadataCacheFields:Integer类型。默认值是65536。指定每个连接可缓存的最大值。“0”表示禁用缓存。
    • databaseMetadataCacheFieldsMiB:Integer类型。默认值是5。每个连接可缓存的最大值,单位是MB。“0”表示禁用缓存。
    • stringtype:String类型,可选字段为:false, "unspecified", "varchar"。设置通过setString()方法使用的PreparedStatement参数的类型,如果stringtype设置为VARCHAR(默认值),则这些参数将作为varchar参数发送给服务器。若stringtype设置为unspecified,则参数将作为untyped值发送到服务器,服务器将尝试推断适当的类型。
    • batchMode:Boolean类型。用于确定是否使用batch模式连接。
    • fetchsize:Integer类型。用于设置数据库连接所创建statement的默认fetchsize。
    • reWriteBatchedInserts:Boolean类型。批量导入时,该参数设置为on,可将N条插入语句合并为一条:insert into TABLE_NAME values(values1, ..., valuesN), ..., (values1, ..., valuesN);使用该参数时,需设置batchMode=off。
    • unknownLength:Integer类型,默认为Integer.MAX_VALUE。某些postgresql类型(例如TEXT)没有明确定义的长度,当通过ResultSetMetaData.getColumnDisplaySize和ResultSetMetaData.getPrecision等函数返回关于这些类型的数据时,此参数指定未知长度类型的长度。
    • defaultRowFetchSize:Integer类型。确定一次fetch在ResultSet中读取的行数。限制每次访问数据库时读取的行数可以避免不必要的内存消耗,从而避免OutOfMemoryException。缺省值是0,这意味着ResultSet中将一次获取所有行。没有负数。
    • binaryTransfer:Boolean类型。使用二进制格式发送和接收数据,默认值为“false”。
    • binaryTransferEnable:String类型。启用二进制传输的类型列表,以逗号分隔。OID编号和名称二选一,例如binaryTransferEnable=Integer4_ARRAY,Integer8_ARRAY。

      比如:OID名称为BLOB,编号为88,可以如下配置:

      +

      binaryTransferEnable=BLOB 或 binaryTransferEnable=88

      +
    • binaryTransferDisEnable:String类型。禁用二进制传输的类型列表,以逗号分隔。OID编号和名称二选一。覆盖binaryTransferEnable的设置。
    • blobMode:String类型。用于设置setBinaryStream方法为不同类型的数据赋值,设置为on时表示为blob类型数据赋值,设置为off时表示为bytea类型数据赋值,默认为on。
    • socketFactory:String类型。用于创建与服务器socket连接的类的名称。该类必须实现了接口“javax.net.SocketFactory”,并定义无参或单String参数的构造函数。
    • socketFactoryArg:String类型。此值是上面提供的socketFactory类的构造函数的可选参数,不推荐使用。
    • receiveBufferSize:Integer类型。该值用于设置连接流上的SO_RCVBUF。
    • sendBufferSize:Integer类型。该值用于设置连接流上的SO_SNDBUF。
    • preferQueryMode:String类型。共有4种:"extended", "extendedForPrepared", "extendedCacheEverything", "simple"。用于指定执行查询的模式,simple模式会excute,不parse和bind;extended模式会bind和excute;extendedForPrepared模式为prepared statement扩展使用;extendedCacheEverything模式会缓存每个statement。
    +

    user

    +

    数据库用户。

    +

    password

    +

    数据库用户的密码。

    +
    + +## 示例 + +``` +//以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。 +public static Connection getConnect(String username, String passwd) + { + //驱动类。 + String driver = "org.postgresql.Driver"; + //数据库连接描述符。 + String sourceURL = "jdbc:postgresql://10.10.0.13:8000/postgres"; + Connection conn = null; + + try + { + //加载驱动。 + Class.forName(driver); + } + catch( Exception e ) + { + e.printStackTrace(); + return null; + } + + try + { + //创建连接。 + conn = DriverManager.getConnection(sourceURL, username, passwd); + System.out.println("Connection succeed!"); + } + catch(Exception e) + { + e.printStackTrace(); + return null; + } + + return conn; + }; +// 以下代码将使用Properties对象作为参数建立连接 +public static Connection getConnectUseProp(String username, String passwd) + { + //驱动类。 + String driver = "org.postgresql.Driver"; + //数据库连接描述符。 + String sourceURL = "jdbc:postgresql://10.10.0.13:8000/postgres?"; + Connection conn = null; + Properties info = new Properties(); + + try + { + //加载驱动。 + Class.forName(driver); + } + catch( Exception e ) + { + e.printStackTrace(); + return null; + } + + try + { + info.setProperty("user", username); + info.setProperty("password", passwd); + //创建连接。 + conn = DriverManager.getConnection(sourceURL, info); + System.out.println("Connection succeed!"); + } + catch(Exception e) + { + e.printStackTrace(); + return null; + } + + return conn; + }; +``` + diff --git "a/content/zh/docs/Developerguide/\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223\357\274\210\344\273\245SSL\346\226\271\345\274\217\357\274\211.md" "b/content/zh/docs/Developerguide/\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223\357\274\210\344\273\245SSL\346\226\271\345\274\217\357\274\211.md" new file mode 100644 index 0000000000000000000000000000000000000000..9128620f83a209209ea75754fb4ddbfda13a6b3f --- /dev/null +++ "b/content/zh/docs/Developerguide/\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223\357\274\210\344\273\245SSL\346\226\271\345\274\217\357\274\211.md" @@ -0,0 +1,136 @@ +# 连接数据库(以SSL方式) + +用户通过JDBC连接openGauss服务器时,可以通过开启SSL加密客户端和服务器之间的通讯,为敏感数据在Internet上的传输提供了一种安全保障手段。本小节主要介绍应用程序通过JDBC如何采用SSL的方式连接openGauss。在使用本小节所描述的方法前,默认用户已经获取了服务端和客户端所需要的证书和私钥文件,关于证书等文件的获取请参考Openssl相关文档和命令 。 + +## 服务端配置 + +当开启SSL模式后,必须提供根证书、服务器证书和私钥。 + +配置步骤(假设用户的证书文件放在数据目录/gaussdb/data/datanode下,且采用默认文件名): + +1. 以操作系统用户omm登录数据库主节点。 +2. 生成并配置证书 + + 生成SSL证书,具体请参见[证书生成](证书生成.md)。将生成出的文件server.crt,server.key,cacert.pem拷贝到服务端数据目录下。 + + 使用如下命令可以查询数据库节点的数据目录,instance列为数据目录。 + + ``` + gs_om -t status --detail + ``` + + 在Unix系统上,server.crt、server.key的权限设置必须禁止任何外部或组的访问,请执行如下命令实现这一点。 + + ``` + chmod 0600 server.key + ``` + +3. 开启SSL认证模式。 + + ``` + gs_guc set -D /gaussdb/data/datanode -c "ssl=on" + ``` + +4. 配置客户端接入认证参数,IP为所要连接的主机IP。 + + ``` + gs_guc reload -D /gaussdb/data/datanode -h "hostssl all all 127.0.0.1/32 cert" + gs_guc reload -D /gaussdb/data/datanode -h "hostssl all all IP/32 cert" + ``` + + 表示允许127.0.0.1/32网段的客户端以ssl认证方式连接到openGauss服务器。 + + >![](public_sys-resources/icon-notice.gif) **须知:** + >如果服务端pg\_hba.conf文件中METHOD配置为cert,则只有客户端使用证书(client.crt)中所设置的用户名(common name)才能够成功连接数据库。如果设置为md5或sha256则对连接数据库的用户没有限制。 + +5. 配置SSL认证相关的数字证书参数。 + + 各命令后所附为设置成功的回显。 + + ``` + gs_guc set -D /gaussdb/data/datanode -c "ssl_cert_file='server.crt'" + gs_guc set: ssl_cert_file='server.crt' + ``` + + ``` + gs_guc set -D /gaussdb/data/datanode -c "ssl_key_file='server.key'" + gs_guc set: ssl_key_file='server.key' + ``` + + ``` + gs_guc set -D /gaussdb/data/datanode -c "ssl_ca_file='cacert.pem'" + gs_guc set: ssl_ca_file='cacert.pem' + ``` + +6. 重启数据库。 + + ``` + gs_om -t stop && gs_om -t start + ``` + +7. 生成并上传证书文件 + +## 客户端配置 + +配置步骤如下: + +上传证书文件,将在服务端配置章节生成出的文件client.key.pk8,client.crt,cacert.pem放置在客户端。 + +## 示例 + +``` +import java.sql.Connection; +import java.util.Properties; +import java.sql.DriverManager; +import java.sql.Statement; +import java.sql.ResultSet; + +public class SSL{ + public static void main(String[] args) { + Properties urlProps = new Properties(); + String urls = "jdbc:postgresql://10.29.37.136:8000/postgres"; + + /** + * ================== 示例1 使用NonValidatingFactory通道,pg_hba.conf文件中MTETHOD不为cert + */ +/* + urlProps.setProperty("sslfactory","org.postgresql.ssl.NonValidatingFactory"); + urlProps.setProperty("user", "world"); + //此处的test@123为创建用户CRETAE USER world WITH PASSWORD 'test123@'时指定的密码 + urlProps.setProperty("password", "test@123"); + urlProps.setProperty("ssl", "true"); +*/ + /** + * ================== 示例2 - 5 使用证书,pg_hba.conf文件中MTETHOD为cert + */ + urlProps.setProperty("sslcert", "client.crt"); + // DER格式的客户端秘钥 + urlProps.setProperty("sslkey", "client.key.pk8"); + urlProps.setProperty("sslrootcert", "cacert.pem"); + urlProps.setProperty("user", "world"); + /* ================== 示例2 设置ssl为true,使用证书认证 */ + urlProps.setProperty("ssl", "true"); + /* ================== 示例3 设置sslmode为require,使用证书 */ +// urlProps.setProperty("sslmode", "require"); + /* ================== 示例4 设置sslmode为verify-ca,使用证书 */ +// urlProps.setProperty("sslmode", "verify-ca"); + /* ================== 示例5 设置sslmode为verify-full,使用证书(Linux下验证) */ +// urls = "jdbc:postgresql://world:8000/postgres"; +// urlProps.setProperty("sslmode", "verify-full"); + + try { + Class.forName("org.postgresql.Driver").newInstance(); + } catch (Exception e) { + e.printStackTrace(); + } + try { + Connection conn; + conn = DriverManager.getConnection(urls,urlProps); + conn.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} +``` + diff --git "a/content/zh/docs/Developerguide/\350\277\236\346\216\245\350\256\276\347\275\256.md" "b/content/zh/docs/Developerguide/\350\277\236\346\216\245\350\256\276\347\275\256.md" index a008f394f559a11fd34f9bc57960d25ca75299f0..6771aeabfc88f58352c69e6219870d2cb08a3b34 100644 --- "a/content/zh/docs/Developerguide/\350\277\236\346\216\245\350\256\276\347\275\256.md" +++ "b/content/zh/docs/Developerguide/\350\277\236\346\216\245\350\256\276\347\275\256.md" @@ -35,7 +35,7 @@ **取值范围:**整型,1~65535 -**默认值:**5432(实际值有安装时的配置文件指定) +**默认值:**5432(实际值由安装时的配置文件指定) ## max\_connections @@ -49,7 +49,7 @@ **设置建议:** -数据库主节点中此参数建议保持默认值。数据库节点中此参数建议设置为数据库主节点的个数乘以数据库主节点中此参数的值。 +数据库主节点中此参数建议保持默认值。 增大这个参数可能导致openGauss要求更多的SystemV共享内存或者信号量,可能超过操作系统缺省配置的最大值。这种情况下,请酌情对数值加以调整。 @@ -135,9 +135,9 @@ Unix域套接字使用普通的Unix文件系统权限集。这个参数的值应 >![](public_sys-resources/icon-note.gif) **说明:** >- 空字符串,表示当前连接数据库的驱动不支持自动设置connection\_info参数或应用程序未设置。 ->- 驱动连接数enable\_resource\_record据库的时候自行拼接的connection\_info参数格式如下: +>- 驱动连接数据库的时候自行拼接的connection\_info参数格式如下: > ``` -> {"driver_name":"ODBC","driver_version": "(openGauss x.x build 62e7353e) compiled at 2019-06-26 14:56:09 commit 5361 last mr 9168 debug","driver_path":"/usr/local/lib/psqlodbcw.so","os_user":"omm"} +> {"driver_name":"ODBC","driver_version": "(GaussDB Kernel V500R001C00 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 debug","driver_path":"/usr/local/lib/psqlodbcw.so","os_user":"omm"} > ``` -> 默认显示driver\_name和driver\_version,driver\_path和os\_user的显示由用户控制。 +> 默认显示driver\_name和driver\_version,driver\_path和os\_user的显示由用户控制(参见[连接数据库](连接数据库-0.md)和[Linux下配置数据源](Linux下配置数据源.md))。 diff --git "a/content/zh/docs/Developerguide/\351\200\211\346\213\251\345\255\230\345\202\250\346\250\241\345\236\213.md" "b/content/zh/docs/Developerguide/\351\200\211\346\213\251\345\255\230\345\202\250\346\250\241\345\236\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..5eb3288b28592ad4bd005404558133bfdbe3c5c5 --- /dev/null +++ "b/content/zh/docs/Developerguide/\351\200\211\346\213\251\345\255\230\345\202\250\346\250\241\345\236\213.md" @@ -0,0 +1,27 @@ +# 选择存储模型 + +进行数据库设计时,表设计上的一些关键项将严重影响后续整库的查询性能。表设计对数据存储也有影响:好的表设计能够减少I/O操作及最小化内存使用,进而提升查询性能。 + +表的存储模型选择是表定义的第一步。客户业务属性是表的存储模型的决定性因素,依据下面表格选择适合当前业务的存储模型。 + + + + + + + + + + + + + +

    存储模型

    +

    适用场景

    +

    行存

    +

    点查询(返回记录少,基于索引的简单查询)。

    +

    增删改比较多的场景。

    +

    列存

    +

    统计分析类查询 (group , join多的场景)。

    +
    + diff --git "a/content/zh/docs/Developerguide/\351\200\211\346\213\251\346\225\260\346\215\256\347\261\273\345\236\213.md" "b/content/zh/docs/Developerguide/\351\200\211\346\213\251\346\225\260\346\215\256\347\261\273\345\236\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..2f4a77b99c6b14d352fca322150c91cfb268debc --- /dev/null +++ "b/content/zh/docs/Developerguide/\351\200\211\346\213\251\346\225\260\346\215\256\347\261\273\345\236\213.md" @@ -0,0 +1,17 @@ +# 选择数据类型 + +高效数据类型,主要包括以下三方面: + +1. **尽量使用执行效率比较高的数据类型** + + 一般来说整型数据运算\(包括=、>、<、≧、≦、≠等常规的比较运算,以及group by\)的效率比字符串、浮点数要高。比如某客户场景中对列存表进行点查询,filter条件在一个numeric列上,执行时间为10+s;修改numeric为int类型之后,执行时间缩短为1.8s左右。 + +2. **尽量使用短字段的数据类型** + + 长度较短的数据类型不仅可以减小数据文件的大小,提升IO性能;同时也可以减小相关计算时的内存消耗,提升计算性能。比如对于整型数据,如果可以用smallint就尽量不用int,如果可以用int就尽量不用bigint。 + +3. **使用一致的数据类型** + + 表关联列尽量使用相同的数据类型。如果表关联列数据类型不同,数据库必须动态地转化为相同的数据类型进行比较,这种转换会带来一定的性能开销。 + + diff --git "a/content/zh/docs/Developerguide/\351\200\232\344\277\241\345\272\223\345\217\202\346\225\260.md" "b/content/zh/docs/Developerguide/\351\200\232\344\277\241\345\272\223\345\217\202\346\225\260.md" index 524fa1b798795ae236fe5dfd12358ebf98241344..9386db59f7d95da830669327ef64dd05b1c9bdd5 100644 --- "a/content/zh/docs/Developerguide/\351\200\232\344\277\241\345\272\223\345\217\202\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\351\200\232\344\277\241\345\272\223\345\217\202\346\225\260.md" @@ -53,7 +53,7 @@ >![](public_sys-resources/icon-notice.gif) **须知:** >SCTP协议的连接不再提供支持,为了保持兼容,提供此参数的接口,但此参数会在设置过程中强制改为on。 -**取值范围:**布尔型,数据库主节点设置为on表示使用TCP模式连接数据库节点。 +**取值范围:**布尔型,设置为on表示使用TCP模式连接数据库节点。 **默认值:**on diff --git "a/content/zh/docs/Developerguide/\351\200\232\347\224\250\346\226\207\344\273\266\350\256\277\351\227\256\345\207\275\346\225\260.md" "b/content/zh/docs/Developerguide/\351\200\232\347\224\250\346\226\207\344\273\266\350\256\277\351\227\256\345\207\275\346\225\260.md" index a8f69bb937f291a4ec8dc1849b7c65b7c4d5e2b9..bd097a76625b74dc2a6a490b5463bef68ac571be 100644 --- "a/content/zh/docs/Developerguide/\351\200\232\347\224\250\346\226\207\344\273\266\350\256\277\351\227\256\345\207\275\346\225\260.md" +++ "b/content/zh/docs/Developerguide/\351\200\232\347\224\250\346\226\207\344\273\266\350\256\277\351\227\256\345\207\275\346\225\260.md" @@ -113,7 +113,7 @@ /srv/BigData/gaussdb/data1/dbnode+ 1496308688 + 25108 + - /opt/huawei/Bigdata/gaussdb/gaussdb_tmp + + /opt/user/Bigdata/gaussdb/gaussdb_tmp + * + 25108001 43352069 + diff --git "a/content/zh/docs/Developerguide/\351\200\232\350\277\207INSERT\350\257\255\345\217\245\347\233\264\346\216\245\345\206\231\345\205\245\346\225\260\346\215\256.md" "b/content/zh/docs/Developerguide/\351\200\232\350\277\207INSERT\350\257\255\345\217\245\347\233\264\346\216\245\345\206\231\345\205\245\346\225\260\346\215\256.md" index e341b6ff93a679197b38e7be522da458245b8e7c..e55c14f585dc3037f75a437a3637811fb5e3f268 100644 --- "a/content/zh/docs/Developerguide/\351\200\232\350\277\207INSERT\350\257\255\345\217\245\347\233\264\346\216\245\345\206\231\345\205\245\346\225\260\346\215\256.md" +++ "b/content/zh/docs/Developerguide/\351\200\232\350\277\207INSERT\350\257\255\345\217\245\347\233\264\346\216\245\345\206\231\345\205\245\346\225\260\346\215\256.md" @@ -1,15 +1,15 @@ # 通过INSERT语句直接写入数据 -用户可以通过以下方式执行[INSERT](INSERT.md)语句直接向openGauss写入数据: +用户可以通过以下方式执行[INSERT](INSERT.md)语句直接向openGauss数据库写入数据: -- 使用openGauss提供的客户端工具向openGauss写入数据。 +- 使用openGauss数据库提供的客户端工具向openGauss数据库写入数据。 请参见[向表中插入数据](向表中插入数据.md)。 -- 通过JDBC/ODBC驱动连接数据库执行INSERT语句向openGauss写入数据。 +- 通过JDBC/ODBC驱动连接数据库执行INSERT语句向openGauss数据库写入数据。 详细内容请参见[连接数据库](连接数据库.md)。 -openGauss支持完整的数据库事务级别的增删改操作。INSERT是最简单的一种数据写入方式,这种方式适合数据写入量不大, 并发度不高的场景。 +openGauss数据库支持完整的数据库事务级别的增删改操作。INSERT是最简单的一种数据写入方式,这种方式适合数据写入量不大, 并发度不高的场景。 diff --git "a/content/zh/docs/Developerguide/\351\200\232\350\277\207\345\210\233\345\273\272\344\270\264\346\227\266\350\241\250\345\271\266\346\210\252\346\226\255\345\216\237\345\247\213\350\241\250\346\235\245\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" "b/content/zh/docs/Developerguide/\351\200\232\350\277\207\345\210\233\345\273\272\344\270\264\346\227\266\350\241\250\345\271\266\346\210\252\346\226\255\345\216\237\345\247\213\350\241\250\346\235\245\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" index 23053ce83bbff730946aa46e8a3b5ee0f9f8f5b7..b9bb681382197cc04b3509c3480dfea9acd94e02 100644 --- "a/content/zh/docs/Developerguide/\351\200\232\350\277\207\345\210\233\345\273\272\344\270\264\346\227\266\350\241\250\345\271\266\346\210\252\346\226\255\345\216\237\345\247\213\350\241\250\346\235\245\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" +++ "b/content/zh/docs/Developerguide/\351\200\232\350\277\207\345\210\233\345\273\272\344\270\264\346\227\266\350\241\250\345\271\266\346\210\252\346\226\255\345\216\237\345\247\213\350\241\250\346\235\245\346\211\247\350\241\214\346\267\261\345\261\202\345\244\215\345\210\266.md" @@ -2,7 +2,7 @@ 该方法使用CREATE TABLE ... AS语句创建原始表的临时表,然后截断原始表并从临时表填充它完成原始表的深层复制。 -在新建表需要保留父表的主键和外键属性,或如果父表具有依赖项的情况下,建议使用此方法。 +在新建表需要保留父表的主键属性,或如果父表具有依赖项的情况下,建议使用此方法。 ## 操作步骤 diff --git "a/content/zh/docs/Developerguide/\351\205\215\347\275\256LLVM.md" "b/content/zh/docs/Developerguide/\351\205\215\347\275\256LLVM.md" new file mode 100644 index 0000000000000000000000000000000000000000..7e138f039a65751228b88f68f6991f42d453e08b --- /dev/null +++ "b/content/zh/docs/Developerguide/\351\205\215\347\275\256LLVM.md" @@ -0,0 +1,13 @@ +# 配置LLVM + +LLVM\(Low Level Virtual Machine\)动态编译技术可以为每个查询生成定制化的机器码用于替换原本的通用函数。通过减少实际查询时冗余的条件逻辑判断、虚函数调用并提高数据局域性,从而达到提升查询整体性能的目的。 + +由于LLVM需要消耗额外的时间预生成IR中间态表示并编译成机器码,因此在小数据量场景或查询本身耗时较少时,可能引起性能的劣化。 + +- **[LLVM适用场景与限制](LLVM适用场景与限制.md)** + +- **[其他因素对LLVM性能的影响](其他因素对LLVM性能的影响.md)** + +- **[LLVM使用建议](LLVM使用建议.md)** + + diff --git "a/content/zh/docs/Developerguide/\351\205\215\347\275\256\345\256\242\346\210\267\347\253\257\346\216\245\345\205\245\350\256\244\350\257\201.md" "b/content/zh/docs/Developerguide/\351\205\215\347\275\256\345\256\242\346\210\267\347\253\257\346\216\245\345\205\245\350\256\244\350\257\201.md" index 77ac7307a16b136873c74df63cfdb64b3f821e6d..31fd4615aff590f2b4a1d8b38913faa0e772f28f 100644 --- "a/content/zh/docs/Developerguide/\351\205\215\347\275\256\345\256\242\346\210\267\347\253\257\346\216\245\345\205\245\350\256\244\350\257\201.md" +++ "b/content/zh/docs/Developerguide/\351\205\215\347\275\256\345\256\242\346\210\267\347\253\257\346\216\245\345\205\245\350\256\244\350\257\201.md" @@ -1,4 +1,4 @@ -# 配置客户端接入认证 +# 配置客户端接入认证 ## 背景信息 @@ -38,7 +38,7 @@ 这条命令在数据库主节点实例对应的“pg\_hba.conf”文件中添加了一条规则,用于对连接数据库主节点的客户端进行鉴定。 - “pg\_hba.conf”文件中的每条记录可以是下面四种格式之一,四种格式的参数说明请参见[配置文件参考](配置文件参考.md#ZH-CN_TOPIC_0242376655)。 + “pg\_hba.conf”文件中的每条记录可以是下面四种格式之一,四种格式的参数说明请参见[配置文件参考](配置文件参考.md)。 ``` local DATABASE USER METHOD [OPTIONS] diff --git "a/content/zh/docs/Developerguide/\351\205\215\347\275\256\346\226\207\344\273\266\345\217\202\350\200\203.md" "b/content/zh/docs/Developerguide/\351\205\215\347\275\256\346\226\207\344\273\266\345\217\202\350\200\203.md" index 6d93c84415662918276bfafb96bc8353caa8ea34..c123dfeef869a97147e4e2f3ba3fffb705129390 100644 --- "a/content/zh/docs/Developerguide/\351\205\215\347\275\256\346\226\207\344\273\266\345\217\202\350\200\203.md" +++ "b/content/zh/docs/Developerguide/\351\205\215\347\275\256\346\226\207\344\273\266\345\217\202\350\200\203.md" @@ -1,4 +1,4 @@ -# 配置文件参考 +# 配置文件参考 **表 1** 参数说明 @@ -73,7 +73,7 @@

    声明连接时使用的认证方法。

    本产品支持如下几种认证方式,详细解释请参见表2

    -
    • trust
    • reject
    • md5(不推荐使用,默认不支持,可通过password_encryption_type参数配置)
    • sha256
    • cert
    • gss(仅用于openGauss内部节点间认证)
    +
    • trust
    • reject
    • md5(不推荐使用,默认不支持,可通过password_encryption_type参数配置)
    • sha256
    • cert
    • gss(仅用于openGauss内部节点间认证)

    采用这种认证模式时,本产品只完全信任从服务器本机使用gsql且不指定-U参数的连接,此时不需要口令。

    trust认证对于单用户工作站的本地连接是非常合适和方便的,通常不适用于多用户环境。如果想使用这种认证方法,可利用文件系统权限限制对服务器的Unix域套接字文件的访问。要使用这种限制有两个方法:

    -
    须知:

    设置文件系统权限只能Unix域套接字连接,它不会限制本地TCP/IP连接。为保证本地TCP/IP安全,openGauss不允许远程连接使用trust认证方法。

    +
    须知:

    设置文件系统权限只能Unix域套接字连接,它不会限制本地TCP/IP连接。为保证本地TCP/IP安全,openGauss不允许远程连接使用trust认证方法。

    md5

    要求客户端提供一个md5加密的口令进行认证。

    -
    须知:

    不推荐使用md5认证,因为md5为不安全的加密算法,存在网络安全风险。openGauss保留md5认证和密码存储,是为了便于第三方工具的使用(比如TPCC评测工具)。

    +
    须知:

    不推荐使用md5认证,因为md5为不安全的加密算法,存在网络安全风险。openGauss保留md5认证和密码存储,是为了便于第三方工具的使用(比如TPCC评测工具)。

    gss

    使用基于gssapi的kerberos认证。

    -
    须知:
    • 该认证方式依赖kerberos server等组件,仅支持openGauss内部通信认证。当前版本暂不支持外部客户端通过kerberos认证连接。
    • 开启openGauss内部kerberos认证会使增加内部节点建连时间,即影响首次涉及内部建连的SQL操作性能,内部连接建立好后, 后续操作不受影响。
    +
    须知:
    • 该认证方式依赖kerberos server等组件,仅支持openGauss内部通信认证。当前版本暂不支持外部客户端通过kerberos认证连接。
    • 开启openGauss内部kerberos认证会使增加内部节点建连时间,即影响首次涉及内部建连的SQL操作性能,内部连接建立好后, 后续操作不受影响。
    1. 使用如下命令修改参数。
      gs_guc set -D datadir -c "paraname=value"
      说明:

      如果参数是一个字符串变量,则使用-c parameter="'value'"或者使用-c "parameter = 'value'"。

      -

      使用以下命令在数据库节点上同时设置某个参数。

      +

      使用以下命令在数据库节点上同时设置某个参数。

      gs_guc set -N all -I all -c "paraname=value"
    2. 重启数据库使参数生效。
      说明:

      重启openGauss操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。

      @@ -106,7 +106,7 @@ openGauss提供了三种方式来修改GUC参数,具体操作请参考[表2](#

    方式二

    gs_guc reload -D datadir -c "paraname=value"
    -
    说明:

    使用以下命令在数据库节点上同时设置某个参数。

    +
    说明:

    使用以下命令在数据库节点上同时设置某个参数。

    gs_guc reload -N all -I all -c "paraname=value"

    要链接的用户名,缺省是与运行该应用的用户操作系统名同名的用户。

    dbname

    +

    数据库名,缺省和用户名相同。

    +

    password

    如果服务器要求口令认证,所用的口令。

    @@ -40,7 +45,7 @@

    connect_timeout

    链接的最大等待时间,以秒计(用十进制整数字串书写),0或者不声明表示无穷。不建议把链接超时的值设置得小于2秒。

    +

    链接的最大等待时间,以秒计(用十进制整数字符串书写),0或者不声明表示无穷。不建议把链接超时的值设置得小于2秒。

    client_encoding

    @@ -50,7 +55,7 @@

    options

    添加命令行选项以在运行时发送到服务器。例如,设置为-c comm_debug_mode=off设置guc参数comm_debug_mode参数的会话的值为off。

    +

    添加命令行选项以在运行时发送到服务器。

    application_name

    diff --git "a/content/zh/docs/Developerguide/\351\224\201\346\223\215\344\275\234.md" "b/content/zh/docs/Developerguide/\351\224\201\346\223\215\344\275\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..8e82b1560a9ac2e6089b3e3852ea936776c7d308 --- /dev/null +++ "b/content/zh/docs/Developerguide/\351\224\201\346\223\215\344\275\234.md" @@ -0,0 +1,4 @@ +# 锁操作 + +openGauss提供了多种锁模式用于控制对表中数据的并发访问。这些模式可以用在MVCC(多版本并发控制)无法给出期望行为的场合。同样,大多数openGauss命令自动施加恰当的锁,以保证被引用的表在命令的执行过程中不会以一种不兼容的方式被删除或者修改。比如,在存在其他并发操作的时候,ALTER TABLE是不能在同一个表上执行的。 + diff --git "a/content/zh/docs/Developerguide/\351\224\231\350\257\257\346\215\225\350\216\267\350\257\255\345\217\245.md" "b/content/zh/docs/Developerguide/\351\224\231\350\257\257\346\215\225\350\216\267\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..cb070d9d4a552a942e672618d20cbe38a42b54e4 --- /dev/null +++ "b/content/zh/docs/Developerguide/\351\224\231\350\257\257\346\215\225\350\216\267\350\257\255\345\217\245.md" @@ -0,0 +1,112 @@ +# 错误捕获语句 + +缺省时,当PL/SQL函数执行过程中发生错误时退出函数执行,并且周围的事务也会回滚。可以用一个带有EXCEPTION子句的BEGIN块捕获错误并且从中恢复。其语法是正常的BEGIN块语法的一个扩展: + +``` +[<