From 54c8df888052ff51323f9f5293d718cd291816de Mon Sep 17 00:00:00 2001 From: Wlovever Date: Fri, 9 Sep 2022 14:52:12 +0800 Subject: [PATCH 1/7] add blog --- content/zh/post/wllove/gsql.md | 80 ++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 content/zh/post/wllove/gsql.md diff --git a/content/zh/post/wllove/gsql.md b/content/zh/post/wllove/gsql.md new file mode 100644 index 00000000..387a8cbf --- /dev/null +++ b/content/zh/post/wllove/gsql.md @@ -0,0 +1,80 @@ ++++ +title = "使用gsql元命令导入数据" +date = "2022-08-19" +tags = ["OpenGauss3.0.0"] +archives = "2020-08" +author = "wllovever" +summary = "OpenGauss3.0.0" +img = "" +times = "18:10" ++++ + +## 使用gsql元命令导入数据 +gsql工具提供了元命令\copy进行数据导入。 +copy元命令说明
语法: +copy { table [ ( column_list ) ] |( query ) } { from | to } { filename |stdin | stdout | pstdin | pstdout }[ with ] [ binary ] [ delimiter[ as ] 'character' ] [ null [ as ] 'string' ][ csv [ header ] [ quote [ as ] +'character' ] [ escape [ as ] 'character' ][ force quote column_list | * ] [ force not null column_list ] ] +说明: +在任何gsql客户端登录数据库成功后,可以使用该命令进行数据的导入/导出。但是与SQL的COPY命令不同,该命令读取/写入的文件是本地文件,而非数据库服务器端文件;所以,要操作的文件的可访问性、权限等,都是受限于本地用户的权限。 +说明: +COPY只适合小批量、格式良好的数据导入,不会对非法字符做预处理,也无容错能力,无法适用于含有异常数据的场景。导入数据应优先选择COPY。 + +## 参数说明 + +- table表的名称(可以有模式修饰)。取值范围:已存在的表名。 +- column_list可选的待拷贝字段列表。取值范围:任意字段。如果没有声明字段列表,将使用所有字段。 +- query其结果将被拷贝。取值范围:一个必须用圆括弧包围的SELECT或VALUES命令。 +- filename文件的绝对路径。执行copy命令的用户必须有此路径的写权限。 +- stdin声明输入是来自标准输入。 +- stdout声明输出打印到标准输出。 +- pstdin声明输入是来自gsql的标准输入。 +- pstout +- 声明输出打印到gsql的标准输出。 +- binary使用二进制格式存储和读取,而不是以文本的方式。在二进制模式下,不能声明DELIMITER、NULL、CSV选项。指定binary类型后,不能再通过option或copy_option指定CSV、FIXED、TEXT等类型。 +- delimiter [ as ] 'character'指定数据文件行数据的字段分隔符。 + +注意事项: + +- 分隔符不能是\r和\n。 +- 分隔符不能和null参数相同,CSV格式数据的分隔符不能和quote参数相同。 +- TEXT格式数据的分隔符不能包含: .abcdefghijklmnopqrstuvwxyz0123456789。 +- 数据文件中单行数据长度需<1GB,如果分隔符较长且数据列较多的情况下,会影响导出有效数据的长度。 +- 分隔符推荐使用多字符和不可见字符。多字符例如'$^&';不可见字符例如0x07、0x08、0x1b等。 + +- 取值范围:支持多字符分隔符,但分隔符不能超过10个字节。默认值: + - TEXT格式的默认分隔符是水平制表符(tab)。 + - CSV格式的默认分隔符为“,”。 + - FIXED格式没有分隔符。 +- null [ as ] 'string'用来指定数据文件中空值的表示。取值范围:默认值: + - null值不能是\r和\n,最大为100个字符。 + - null值不能和分隔符、quote参数相同。 + - CSV格式下默认值是一个没有引号的空字符串。 + - 在TEXT格式下默认值是\N。 +- header指定导出数据文件是否包含标题行,标题行一般用来描述表中每个字段的信息。header只能用于CSV,FIXED格式的文件中。在导入数据时,如果header选项为on,则数据文本第一行会被识别为标题行,会忽略此行。如果header为off,而数据文件中第一行会被识别为数据。在导出数据时,如果header选项为on,则需要指定fileheader。fileheader是指定导出数据包含标题行的定义文件。如果header为off,则导出数据文件不包含标题行。取值范围:true/on,false/off。默认值:false +- quote [ as ] 'character'CSV格式文件下的引号字符。默认值:双引号。 + +(- quote参数不能和分隔符、null参数相同。 +- quote参数只能是单字节的字符。 +- 推荐不可见字符作为quote,例如0x07、0x08、0x1b等。) + +- escape [ as ] 'character'CSV格式下,用来指定逃逸字符,逃逸字符只能指定为单字节字符。默认值:双引号。当与quote值相同时,会被替换为'\0'。 +- force quote column_list | *在CSV COPY TO模式下,强制在每个声明的字段周围对所有非NULL值都使用引号包围。NULL输出不会被引号包围。取值范围:已存在的字段。 +- force not null column_list在CSV COPY FROM模式下,指定的字段输入不能为空。取值范围:已存在的字段。 + + +## 命令示例 +创建目标表a。 +CREATE TABLE a(a int);
导入数据。 +从stdin拷贝数据到目标表a。
\copy a from stdin; +出现>>符号提示时,输入数据,输入.时结束。 + Enter data to be copied followed by a newline. +End with a backslash and a period on a line by itself. + >> 1 +>> 2 +>> +查询导入目标表a的数据。 +  openGauss=# SELECT * FROM a; +从本地文件拷贝数据到目标表a。假设存在本地文件/home/omm/2.csv。 +分隔符为“,”。
在导入过程中,若数据源文件比外表定义的列数多,则忽略行尾多出来的列。 +copy a FROM '/home/omm/2.csv' WITH (delimiter',',IGNORE_EXTRA_DATA 'on'); + -- Gitee From 552bab5616e695ea86fecbe293a016545beaee99 Mon Sep 17 00:00:00 2001 From: Wlovever Date: Sun, 18 Sep 2022 23:21:38 +0800 Subject: [PATCH 2/7] add blog --- content/zh/post/wllove/gs_dumpall.md | 55 -------- content/zh/post/wllove/gsql.md | 80 ----------- ...06\345\233\276\347\256\200\350\277\260.md" | 63 +++++++++ ...76\347\232\204\344\275\277\347\224\250.md" | 132 ------------------ 4 files changed, 63 insertions(+), 267 deletions(-) delete mode 100644 content/zh/post/wllove/gs_dumpall.md delete mode 100644 content/zh/post/wllove/gsql.md create mode 100644 "content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" delete mode 100644 "content/zh/post/wllove/\345\242\236\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\232\204\344\275\277\347\224\250.md" diff --git a/content/zh/post/wllove/gs_dumpall.md b/content/zh/post/wllove/gs_dumpall.md deleted file mode 100644 index df7a04f8..00000000 --- a/content/zh/post/wllove/gs_dumpall.md +++ /dev/null @@ -1,55 +0,0 @@ -+++ -title = "使用gs_dumpall导出所有数据库" -date = "2022-09-01" -tags = ["OpenGauss3.0.0"] -archives = "2020-09" -author = "wllovever" -summary = "OpenGauss3.0.0" -img = "" -times = "15:10" -+++ - -1.gs_dumpall命令介绍: -penGauss支持使用gs_dumpall工具导出所有数据库的全量信息,包含openGauss中每个数据库信息和公共的全局对象信息。可根据需要自定义导出如下信息: -导出所有数据库全量信息,包含openGauss中每个数据库信息和公共的全局对象信息(包含角色和表空间信息)。 -使用导出的全量信息可以创建与当前主机相同的一个主机环境,拥有相同数据库和公共全局对象,且库中数据也与当前各库相同。 -仅导出数据,即导出每个数据库中的数据,且不包含所有对象定义和公共的全局对象信息。 -仅导出所有对象定义,包括:表空间、库定义、函数定义、模式定义、表定义、索引定义和存储过程定义等。 -使用导出的对象定义,可以快速创建与当前主机相同的一个主机环境,拥有相同的数据库和表空间,但是库中并无原数据库的数据。 - -2.gs_dumpall命令详解: -gs_dumpall -U omm -f /home/omm/backup/MPPDB_backup.sql -p 8000 -参数说明: --U -连接数据库的用户名,需要是openGauss管理员用户。 --W -指定用户连接的密码。 -如果主机的认证策略是trust,则不会对数据库管理员进行密码验证,即无需输入-W选项; -如果没有-W选项,并且不是数据库管理员,会提示用户输入密码。 --f -将导出文件发送至指定目录文件夹。如果这里省略,则使用标准输出 --p -指定服务器所监听的TCP端口或本地Unix域套接字后缀,以确保连接。 - -3.具体示例 -示例一:执行gs_dumpall,导出所有数据库全量信息(omm用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 -gs_dumpall -U omm -f /home/omm/backup/MPPDB_backup.sql -p 8000 -Password: -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 -U omm -f /home/omm/backup/MPPDB_backup.sql -p 8000 -s -Password: -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 abcdefg_?1234567 -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/post/wllove/gsql.md b/content/zh/post/wllove/gsql.md deleted file mode 100644 index 387a8cbf..00000000 --- a/content/zh/post/wllove/gsql.md +++ /dev/null @@ -1,80 +0,0 @@ -+++ -title = "使用gsql元命令导入数据" -date = "2022-08-19" -tags = ["OpenGauss3.0.0"] -archives = "2020-08" -author = "wllovever" -summary = "OpenGauss3.0.0" -img = "" -times = "18:10" -+++ - -## 使用gsql元命令导入数据 -gsql工具提供了元命令\copy进行数据导入。 -copy元命令说明
语法: -copy { table [ ( column_list ) ] |( query ) } { from | to } { filename |stdin | stdout | pstdin | pstdout }[ with ] [ binary ] [ delimiter[ as ] 'character' ] [ null [ as ] 'string' ][ csv [ header ] [ quote [ as ] -'character' ] [ escape [ as ] 'character' ][ force quote column_list | * ] [ force not null column_list ] ] -说明: -在任何gsql客户端登录数据库成功后,可以使用该命令进行数据的导入/导出。但是与SQL的COPY命令不同,该命令读取/写入的文件是本地文件,而非数据库服务器端文件;所以,要操作的文件的可访问性、权限等,都是受限于本地用户的权限。 -说明: -COPY只适合小批量、格式良好的数据导入,不会对非法字符做预处理,也无容错能力,无法适用于含有异常数据的场景。导入数据应优先选择COPY。 - -## 参数说明 - -- table表的名称(可以有模式修饰)。取值范围:已存在的表名。 -- column_list可选的待拷贝字段列表。取值范围:任意字段。如果没有声明字段列表,将使用所有字段。 -- query其结果将被拷贝。取值范围:一个必须用圆括弧包围的SELECT或VALUES命令。 -- filename文件的绝对路径。执行copy命令的用户必须有此路径的写权限。 -- stdin声明输入是来自标准输入。 -- stdout声明输出打印到标准输出。 -- pstdin声明输入是来自gsql的标准输入。 -- pstout -- 声明输出打印到gsql的标准输出。 -- binary使用二进制格式存储和读取,而不是以文本的方式。在二进制模式下,不能声明DELIMITER、NULL、CSV选项。指定binary类型后,不能再通过option或copy_option指定CSV、FIXED、TEXT等类型。 -- delimiter [ as ] 'character'指定数据文件行数据的字段分隔符。 - -注意事项: - -- 分隔符不能是\r和\n。 -- 分隔符不能和null参数相同,CSV格式数据的分隔符不能和quote参数相同。 -- TEXT格式数据的分隔符不能包含: .abcdefghijklmnopqrstuvwxyz0123456789。 -- 数据文件中单行数据长度需<1GB,如果分隔符较长且数据列较多的情况下,会影响导出有效数据的长度。 -- 分隔符推荐使用多字符和不可见字符。多字符例如'$^&';不可见字符例如0x07、0x08、0x1b等。 - -- 取值范围:支持多字符分隔符,但分隔符不能超过10个字节。默认值: - - TEXT格式的默认分隔符是水平制表符(tab)。 - - CSV格式的默认分隔符为“,”。 - - FIXED格式没有分隔符。 -- null [ as ] 'string'用来指定数据文件中空值的表示。取值范围:默认值: - - null值不能是\r和\n,最大为100个字符。 - - null值不能和分隔符、quote参数相同。 - - CSV格式下默认值是一个没有引号的空字符串。 - - 在TEXT格式下默认值是\N。 -- header指定导出数据文件是否包含标题行,标题行一般用来描述表中每个字段的信息。header只能用于CSV,FIXED格式的文件中。在导入数据时,如果header选项为on,则数据文本第一行会被识别为标题行,会忽略此行。如果header为off,而数据文件中第一行会被识别为数据。在导出数据时,如果header选项为on,则需要指定fileheader。fileheader是指定导出数据包含标题行的定义文件。如果header为off,则导出数据文件不包含标题行。取值范围:true/on,false/off。默认值:false -- quote [ as ] 'character'CSV格式文件下的引号字符。默认值:双引号。 - -(- quote参数不能和分隔符、null参数相同。 -- quote参数只能是单字节的字符。 -- 推荐不可见字符作为quote,例如0x07、0x08、0x1b等。) - -- escape [ as ] 'character'CSV格式下,用来指定逃逸字符,逃逸字符只能指定为单字节字符。默认值:双引号。当与quote值相同时,会被替换为'\0'。 -- force quote column_list | *在CSV COPY TO模式下,强制在每个声明的字段周围对所有非NULL值都使用引号包围。NULL输出不会被引号包围。取值范围:已存在的字段。 -- force not null column_list在CSV COPY FROM模式下,指定的字段输入不能为空。取值范围:已存在的字段。 - - -## 命令示例 -创建目标表a。 -CREATE TABLE a(a int);
导入数据。 -从stdin拷贝数据到目标表a。
\copy a from stdin; -出现>>符号提示时,输入数据,输入.时结束。 - Enter data to be copied followed by a newline. -End with a backslash and a period on a line by itself. - >> 1 ->> 2 ->> -查询导入目标表a的数据。 -  openGauss=# SELECT * FROM a; -从本地文件拷贝数据到目标表a。假设存在本地文件/home/omm/2.csv。 -分隔符为“,”。
在导入过程中,若数据源文件比外表定义的列数多,则忽略行尾多出来的列。 -copy a FROM '/home/omm/2.csv' WITH (delimiter',',IGNORE_EXTRA_DATA 'on'); - diff --git "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" new file mode 100644 index 00000000..018423fe --- /dev/null +++ "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" @@ -0,0 +1,63 @@ ++++
title = "全量物化视图简述"
date = "2022-09-16"
tags = ["OpenGauss3.0.0"]
archives = "2020-09"
author = "wllove"
summary = "OpenGauss3.0.0"
img = ""
times = "18:10"
+++ + +# 概述 +全量物化视图仅支持对已创建的物化视图进行全量更新,而不支持进行增量更新。创建全量物化视图语法和CREATE TABLE AS语法类似。 +## 语法格式 +创建全量物化视图 + +```
CREATE MATERIALIZED VIEW [ view_name ] AS { query_block };
``` + +全量刷新物化视图 + +```
REFRESH MATERIALIZED VIEW [ view_name ];
``` + +删除物化视图 + +```
DROP MATERIALIZED VIEW [ view_name ];
``` + +查询物化视图 + +```
SELECT * FROM [ view_name ];
``` + +--准备数据。 + + + openGauss=# CREATE TABLE t1(c1 int, c2 int); openGauss=# INSERT INTO t1 VALUES(1, 1);
openGauss=# INSERT INTO t1 VALUES(2, 2); + + + --创建全量物化视图。 + +```
openGauss=# CREATE MATERIALIZED VIEW mv AS select count(*) from t1;
CREATE MATERIALIZED VIEW
``` + +--查询物化视图结果。 + +```
openGauss=# SELECT * FROM mv;
count ------- 2 (1 row)
``` + + --向物化视图中基表插入数据。 + +```
openGauss=# INSERT INTO t1 VALUES(3, 3);
``` + +--对全量物化视图做全量刷新。 + +```
openGauss=# REFRESH MATERIALIZED VIEW mv;
REFRESH MATERIALIZED VIEW
``` + +--查询物化视图结果。 + +```
openGauss=# SELECT * FROM mv;
count ------- 3 (1 row)
``` + +--删除物化视图。 + +```
openGauss=# DROP MATERIALIZED VIEW mv;
DROP MATERIALIZED VIEW
``` + +## 支持场景 + +- 通常全量物化视图所支持的查询范围与CREATE TABLE AS语句一致。 +- 全量物化视图上支持创建索引。 +- 支持analyze、explain。 +## 不支持场景 +物化视图不支持增删改操作,只支持查询语句。 +## 约束 +全量物化视图的刷新、删除过程中会给基表加高级别锁,若物化视图的定义涉及多张表,需要注意业务逻辑,避免死锁产生。 + + + diff --git "a/content/zh/post/wllove/\345\242\236\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\232\204\344\275\277\347\224\250.md" "b/content/zh/post/wllove/\345\242\236\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\232\204\344\275\277\347\224\250.md" deleted file mode 100644 index 0cfbff74..00000000 --- "a/content/zh/post/wllove/\345\242\236\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\232\204\344\275\277\347\224\250.md" +++ /dev/null @@ -1,132 +0,0 @@ -+++ -title = "增量物化视图的使用" -date = "2022-09-09" -tags = ["OpenGauss3.0.0"] -archives = "2020-09" -author = "wllovever" -summary = "OpenGauss3.0.0" -img = "/zh/post/wllove/tilte/title.jpg" -times = "15:10" -+++ - - -##增量物化视图介绍 - -增量物化视图可以对物化视图增量刷新,需要用户手动执行语句完成对物化视图在一段时间内的增量数据刷新。与全量创建物化视图的不同在于目前增量物化视图所支持场景较小。 - -目前物化视图创建语句仅支持基表扫描语句或者UNION ALL语句。 - -##增量物化视图使用场景介绍 - -1.支持场景: - -单表查询语句。 - -多个单表查询的UNION ALL。 - -物化视图上支持创建索引。 - -物化视图支持Analyze操作。 - -2.不支持场景 - -物化视图中不支持多表Join连接计划以及subquery计划。 - -除少部分ALTER操作外,不支持对物化视图中基表执行绝大多数DDL操作。 - -物化视图不支持增删改操作,只支持查询语句。 - -不支持用临时表/hashbucket/unlog/分区表创建物化视图。 - -不支持物化视图嵌套创建(即物化视图上创建物化视图)。 - -仅支持行存表,不支持列存表。 - -不支持UNLOGGED类型的物化视图,不支持WITH语法。 - -3.约束 - -物化视图定义如果为UNION ALL,则其中每个子查询需使用不同的基表。 - -增量物化视图的创建、全量刷新、删除过程中会给基表加高级别锁,若物化视图的定义为UNION ALL,需要注意业务逻辑,避免死锁产生。 - -##增量物化视图的使用 - -创建增量物化视图 - -CREATE INCREMENTAL MATERIALIZED VIEW [ view_name ] AS { query_block }; - -全量刷新物化视图 - -REFRESH MATERIALIZED VIEW [ view_name ]; - -增量刷新物化视图 - -REFRESH INCREMENTAL MATERIALIZED VIEW [ view_name ]; - -删除物化视图 - -DROP MATERIALIZED VIEW [ view_name ]; - -查询物化视图 - -SELECT * FROM [ view_name ]; - -##增量物化视图示例 - ---准备数据。 - -openGauss=# CREATE TABLE t1(c1 int, c2 int); -openGauss=# INSERT INTO t1 VALUES(1, 1); -openGauss=# INSERT INTO t1 VALUES(2, 2); - ---创建增量物化视图。 - -openGauss=# CREATE INCREMENTAL MATERIALIZED VIEW mv AS SELECT * FROM t1; -CREATE MATERIALIZED VIEW - ---插入数据。 - -openGauss=# INSERT INTO t1 VALUES(3, 3); -INSERT 0 1 - ---增量刷新物化视图。 - -openGauss=# REFRESH INCREMENTAL MATERIALIZED VIEW mv; -REFRESH MATERIALIZED VIEW - ---查询物化视图结果。 - -openGauss=# SELECT * FROM mv; - c1 | c2 -----+---- - 1 | 1 - 2 | 2 - 3 | 3 -(3 rows) - ---插入数据。 - -openGauss=# INSERT INTO t1 VALUES(4, 4); -INSERT 0 1 - ---全量刷新物化视图。 - -openGauss=# REFRESH MATERIALIZED VIEW mv; -REFRESH MATERIALIZED VIEW - ---查询物化视图结果。 - -openGauss=# select * from mv; - c1 | c2 -----+---- - 1 | 1 - 2 | 2 - 3 | 3 - 4 | 4 -(4 rows) - ---删除物化视图。 - -openGauss=# DROP MATERIALIZED VIEW mv; -DROP MATERIALIZED VIEW \ No newline at end of file -- Gitee From d8b9af86a29ae526bbee13b190f647f741eac09f Mon Sep 17 00:00:00 2001 From: wllove Date: Sun, 18 Sep 2022 15:26:31 +0000 Subject: [PATCH 3/7] =?UTF-8?q?update=20content/zh/post/wllove/=E5=85=A8?= =?UTF-8?q?=E9=87=8F=E7=89=A9=E5=8C=96=E8=A7=86=E5=9B=BE=E7=AE=80=E8=BF=B0?= =?UTF-8?q?.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wllove --- ...06\345\233\276\347\256\200\350\277\260.md" | 53 ++++++++++++++----- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" index 018423fe..e92139a3 100644 --- "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" +++ "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" @@ -5,58 +5,87 @@ ## 语法格式 创建全量物化视图 -```
CREATE MATERIALIZED VIEW [ view_name ] AS { query_block };
``` +``` +CREATE MATERIALIZED VIEW [ view_name ] AS { query_block }; +``` 全量刷新物化视图 -```
REFRESH MATERIALIZED VIEW [ view_name ];
``` +``` +REFRESH MATERIALIZED VIEW [ view_name ]; +``` 删除物化视图 -```
DROP MATERIALIZED VIEW [ view_name ];
``` +``` +DROP MATERIALIZED VIEW [ view_name ]; +``` 查询物化视图 -```
SELECT * FROM [ view_name ];
``` +``` +SELECT * FROM [ view_name ]; +``` --准备数据。 - +``` openGauss=# CREATE TABLE t1(c1 int, c2 int); openGauss=# INSERT INTO t1 VALUES(1, 1);
openGauss=# INSERT INTO t1 VALUES(2, 2); - +``` --创建全量物化视图。 -```
openGauss=# CREATE MATERIALIZED VIEW mv AS select count(*) from t1;
CREATE MATERIALIZED VIEW
``` +``` +openGauss=# CREATE MATERIALIZED VIEW mv AS select count(*) from t1;
CREATE MATERIALIZED VIEW +``` --查询物化视图结果。 -```
openGauss=# SELECT * FROM mv;
count ------- 2 (1 row)
``` +``` +openGauss=# SELECT * FROM mv; + count ------- 2 (1 row) +``` --向物化视图中基表插入数据。 -```
openGauss=# INSERT INTO t1 VALUES(3, 3);
``` +``` + openGauss=# INSERT INTO t1 VALUES(3, 3); +``` --对全量物化视图做全量刷新。 -```
openGauss=# REFRESH MATERIALIZED VIEW mv;
REFRESH MATERIALIZED VIEW
``` +``` +openGauss=# REFRESH MATERIALIZED VIEW mv; +REFRESH MATERIALIZED VIEW +``` --查询物化视图结果。 -```
openGauss=# SELECT * FROM mv;
count ------- 3 (1 row)
``` +``` +openGauss=# SELECT * FROM mv;
count ------- 3 (1 row) +``` --删除物化视图。 -```
openGauss=# DROP MATERIALIZED VIEW mv;
DROP MATERIALIZED VIEW
``` +``` +openGauss=# DROP MATERIALIZED VIEW mv; +DROP MATERIALIZED VIEW +``` ## 支持场景 - 通常全量物化视图所支持的查询范围与CREATE TABLE AS语句一致。 + - 全量物化视图上支持创建索引。 + - 支持analyze、explain。 + ## 不支持场景 + 物化视图不支持增删改操作,只支持查询语句。 + ## 约束 + 全量物化视图的刷新、删除过程中会给基表加高级别锁,若物化视图的定义涉及多张表,需要注意业务逻辑,避免死锁产生。 -- Gitee From 7b9f978bca3ad88233f0525764e1006b1995bbb5 Mon Sep 17 00:00:00 2001 From: wllove Date: Fri, 23 Sep 2022 07:08:05 +0000 Subject: [PATCH 4/7] =?UTF-8?q?update=20content/zh/post/wllove/=E5=85=A8?= =?UTF-8?q?=E9=87=8F=E7=89=A9=E5=8C=96=E8=A7=86=E5=9B=BE=E7=AE=80=E8=BF=B0?= =?UTF-8?q?.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wllove --- ...\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" index e92139a3..5ceba764 100644 --- "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" +++ "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" @@ -1,4 +1,4 @@ -+++
title = "全量物化视图简述"
date = "2022-09-16"
tags = ["OpenGauss3.0.0"]
archives = "2020-09"
author = "wllove"
summary = "OpenGauss3.0.0"
img = ""
times = "18:10"
+++ ++++
title = "全量物化视图简述"
date = "2022-09-16"
tags = ["openGauss3.0.0"]
archives = "2020-09"
author = "wllove"
summary = "OpenGauss3.0.0"
img = "/zh/post/wllove/title/title.jpg"
times = "18:10"
+++ # 概述 全量物化视图仅支持对已创建的物化视图进行全量更新,而不支持进行增量更新。创建全量物化视图语法和CREATE TABLE AS语法类似。 -- Gitee From 2d82d257e956d6f07ea21e9a5c6053927b3d8ad0 Mon Sep 17 00:00:00 2001 From: wllove Date: Fri, 23 Sep 2022 07:08:21 +0000 Subject: [PATCH 5/7] =?UTF-8?q?update=20content/zh/post/wllove/=E5=85=A8?= =?UTF-8?q?=E9=87=8F=E7=89=A9=E5=8C=96=E8=A7=86=E5=9B=BE=E7=AE=80=E8=BF=B0?= =?UTF-8?q?.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wllove --- ...\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" index 5ceba764..f567ad8d 100644 --- "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" +++ "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" @@ -1,4 +1,4 @@ -+++
title = "全量物化视图简述"
date = "2022-09-16"
tags = ["openGauss3.0.0"]
archives = "2020-09"
author = "wllove"
summary = "OpenGauss3.0.0"
img = "/zh/post/wllove/title/title.jpg"
times = "18:10"
+++ ++++
title = "全量物化视图简述"
date = "2022-09-16"
tags = ["openGauss3.0.0"]
archives = "2020-09"
author = "wllove"
summary = "openGauss3.0.0"
img = "/zh/post/wllove/title/title.jpg"
times = "18:10"
+++ # 概述 全量物化视图仅支持对已创建的物化视图进行全量更新,而不支持进行增量更新。创建全量物化视图语法和CREATE TABLE AS语法类似。 -- Gitee From 2865b0e1e3efe246ee1a0daadd4311b60e29e643 Mon Sep 17 00:00:00 2001 From: wllove Date: Fri, 23 Sep 2022 10:03:13 +0000 Subject: [PATCH 6/7] =?UTF-8?q?update=20content/zh/post/wllove/=E5=85=A8?= =?UTF-8?q?=E9=87=8F=E7=89=A9=E5=8C=96=E8=A7=86=E5=9B=BE=E7=AE=80=E8=BF=B0?= =?UTF-8?q?.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wllove --- ...\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" index f567ad8d..101408c7 100644 --- "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" +++ "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" @@ -1,4 +1,4 @@ -+++
title = "全量物化视图简述"
date = "2022-09-16"
tags = ["openGauss3.0.0"]
archives = "2020-09"
author = "wllove"
summary = "openGauss3.0.0"
img = "/zh/post/wllove/title/title.jpg"
times = "18:10"
+++ ++++
title = "全量物化视图简述"
date = "2022-09-16"
tags = ["openGauss3.0.0"]
archives = "2020-09"
author = "wllove"
summary = "openGauss3.0.0"
img = "/zh/post/wllove/title/title.png"
times = "18:10"
+++ # 概述 全量物化视图仅支持对已创建的物化视图进行全量更新,而不支持进行增量更新。创建全量物化视图语法和CREATE TABLE AS语法类似。 -- Gitee From ea0731323214ad0c23dd68f9797ec3917a96086f Mon Sep 17 00:00:00 2001 From: wllove Date: Fri, 30 Sep 2022 06:59:58 +0000 Subject: [PATCH 7/7] =?UTF-8?q?update=20content/zh/post/wllove/=E5=85=A8?= =?UTF-8?q?=E9=87=8F=E7=89=A9=E5=8C=96=E8=A7=86=E5=9B=BE=E7=AE=80=E8=BF=B0?= =?UTF-8?q?.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wllove --- ...\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" index 101408c7..b147ba3f 100644 --- "a/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" +++ "b/content/zh/post/wllove/\345\205\250\351\207\217\347\211\251\345\214\226\350\247\206\345\233\276\347\256\200\350\277\260.md" @@ -1,6 +1,6 @@ +++
title = "全量物化视图简述"
date = "2022-09-16"
tags = ["openGauss3.0.0"]
archives = "2020-09"
author = "wllove"
summary = "openGauss3.0.0"
img = "/zh/post/wllove/title/title.png"
times = "18:10"
+++ -# 概述 +## 概述 全量物化视图仅支持对已创建的物化视图进行全量更新,而不支持进行增量更新。创建全量物化视图语法和CREATE TABLE AS语法类似。 ## 语法格式 创建全量物化视图 -- Gitee