华为云用户手册

  • 阅读指引 对于首次接触 GaussDB (DWS)的用户,建议先阅读以下部分: 介绍GaussDB(DWS)服务的特点、功能和适用场景。 GaussDB(DWS)入门包含一个示例,引导您完成创建 数据仓库 集群、创建数据库表、上传数据和测试查询这一过程。 如果计划或正在将应用程序从其他数据仓库向GaussDB(DWS)迁移,您可能想了解GaussDB(DWS)在实施方式上有什么区别。 GaussDB(DWS)进行数据库应用程序开发过程中,下表将帮您找到对应的信息。 如果要.. 查阅建议 快速开始使用GaussDB(DWS)。 首先,按照《数据仓库服务快速入门》中的步骤快速部署集群、连接到数据库并尝试进行一些查询。 准备好构建数据库后,将数据加载到表中并编写查询内容以操作数据仓库中的数据后,可以回到《数据仓库服务数据库开发指南》。 了解GaussDB(DWS)数据仓库的内部架构。 如果您想要更全面地了解GaussDB(DWS)服务,请转到GaussDB(DWS)产品首页。 了解如何设计表以实现良好性能。 GaussDB(DWS)开发设计规范介绍数据库应用程序开发过程中,应当遵守的设计规范。依据这些规范进行建模,能够更好的契合GaussDB(DWS)的分布式处理架构,输出更高效的业务SQL代码。 对业务的执行效率不满意,期望通过调优加快业务执行的情况下,可以参考优化查询性能进行调优。性能调优是一项复杂的工程,有些时候无法系统性地说明和解释,而是依赖于DBA的经验判断。尽管如此,优化查询性能章节还是期望能尽量系统性的对性能调优方法加以说明,方便应用开发人员和刚接触GaussDB(DWS)的DBA参考。 加载数据。 导入数据介绍数据入库GaussDB(DWS)的方法和途径。 导入最佳实践提供有关快速高效数据导入的经验提示。 管理用户、组和数据库安全。 GaussDB(DWS)数据库安全管理涵盖数据库安全主题。 监控和优化系统性能。 GaussDB(DWS)系统表和系统视图详细介绍您可以从中查询数据库状态并监控查询内容与流程的系统表和视图。 您还应该查阅管理指南了解如何使用GaussDB(DWS)管理控制台检查系统运行状况、监控指标。
  • 声明 GaussDB(DWS)的作者们在进行文档写作时努力基于商用角度,从使用场景和任务完成角度给出内容指引。即使这样,文档中依然可能存在对Postgres内容的引用和参考。对于这类内容,遵从如下的Postgres Copyright: Postgres-XC is Copyright © 1996-2013 by the PostgreSQL Global Development Group. PostgreSQL is Copyright © 1996-2013 by the PostgreSQL Global Development Group. Postgres95 is Copyright © 1994-5 by the Regents of the University of California. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS-IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  • SQL语法文本格式约定 为了方便对语法使用的理解,在文档中对SQL语法文本按如下格式进行表述。 格式 意义 大写 语法关键字(语句中保持不变、必须照输的部分)采用大写表示。 小写 参数(语句中必须由实际值进行替代的部分)采用小写表示。 [ ] 表示用“[ ]”括起来的部分是可选的。 ... 表示前面的元素可重复出现。 [ x | y | ... ] 表示从两个或多个选项中选取一个或者不选。 { x | y | ... } 表示从两个或多个选项中选取一个。 [x | y | ... ] [ ... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用空格分隔。 [ x | y | ... ] [ ,... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用逗号分隔。 { x | y | ... } [ ... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间以空格分隔。 { x | y | ... } [ ,... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间用逗号分隔。
  • 阅读指引 对于首次接触 GaussDB(DWS)的用户,建议先阅读以下部分: 介绍GaussDB(DWS)服务的特点、功能和适用场景。 GaussDB(DWS)入门包含一个示例,引导您完成创建数据仓库集群、创建数据库表、上传数据和测试查询这一过程。 如果计划或正在将应用程序从其他数据仓库向GaussDB(DWS)迁移,您可能想了解GaussDB(DWS)在实施方式上有什么区别。 GaussDB(DWS)进行数据库应用程序开发过程中,下表将帮您找到对应的信息。 如果要.. 查阅建议 快速开始使用GaussDB(DWS)。 首先,按照《数据仓库服务快速入门》中的步骤快速部署集群、连接到数据库并尝试进行一些查询。 准备好构建数据库后,将数据加载到表中并编写查询内容以操作数据仓库中的数据后,可以回到《数据仓库服务数据库开发指南》。 了解GaussDB(DWS)数据仓库的内部架构。 如果您想要更全面地了解GaussDB(DWS)服务,请转到GaussDB(DWS)产品首页。 了解如何设计表以实现良好性能。 GaussDB(DWS)开发设计规范介绍数据库应用程序开发过程中,应当遵守的设计规范。依据这些规范进行建模,能够更好的契合GaussDB(DWS)的分布式处理架构,输出更高效的业务SQL代码。 对业务的执行效率不满意,期望通过调优加快业务执行的情况下,可以参考优化查询性能进行调优。性能调优是一项复杂的工程,有些时候无法系统性地说明和解释,而是依赖于DBA的经验判断。尽管如此,优化查询性能章节还是期望能尽量系统性的对性能调优方法加以说明,方便应用开发人员和刚接触GaussDB(DWS)的DBA参考。 加载数据。 导入数据介绍数据入库GaussDB(DWS)的方法和途径。 导入最佳实践提供有关快速高效数据导入的经验提示。 管理用户、组和数据库安全。 GaussDB(DWS)数据库安全管理涵盖数据库安全主题。 监控和优化系统性能。 GaussDB(DWS)系统表和系统视图详细介绍您可以从中查询数据库状态并监控查询内容与流程的系统表和视图。 您还应该查阅管理指南了解如何使用GaussDB(DWS)管理控制台检查系统运行状况、监控指标。
  • 声明 GaussDB(DWS)的作者们在进行文档写作时努力基于商用角度,从使用场景和任务完成角度给出内容指引。即使这样,文档中依然可能存在对Postgres内容的引用和参考。对于这类内容,遵从如下的Postgres Copyright: Postgres-XC is Copyright © 1996-2013 by the PostgreSQL Global Development Group. PostgreSQL is Copyright © 1996-2013 by the PostgreSQL Global Development Group. Postgres95 is Copyright © 1994-5 by the Regents of the University of California. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS-IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  • SQL语法文本格式约定 为了方便对语法使用的理解,在文档中对SQL语法文本按如下格式进行表述。 格式 意义 大写 语法关键字(语句中保持不变、必须照输的部分)采用大写表示。 小写 参数(语句中必须由实际值进行替代的部分)采用小写表示。 [ ] 表示用“[ ]”括起来的部分是可选的。 ... 表示前面的元素可重复出现。 [ x | y | ... ] 表示从两个或多个选项中选取一个或者不选。 { x | y | ... } 表示从两个或多个选项中选取一个。 [x | y | ... ] [ ... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用空格分隔。 [ x | y | ... ] [ ,... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用逗号分隔。 { x | y | ... } [ ... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间以空格分隔。 { x | y | ... } [ ,... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间用逗号分隔。
  • 阅读指引 对于首次接触 GaussDB(DWS)的用户,建议先阅读以下部分: 介绍GaussDB(DWS)服务的特点、功能和适用场景。 GaussDB(DWS)入门包含一个示例,引导您完成创建数据仓库集群、创建数据库表、上传数据和测试查询这一过程。 如果计划或正在将应用程序从其他数据仓库向GaussDB(DWS)迁移,您可能想了解GaussDB(DWS)在实施方式上有什么区别。 GaussDB(DWS)进行数据库应用程序开发过程中,下表将帮您找到对应的信息。 如果要.. 查阅建议 快速开始使用GaussDB(DWS)。 首先,按照《数据仓库服务快速入门》中的步骤快速部署集群、连接到数据库并尝试进行一些查询。 准备好构建数据库后,将数据加载到表中并编写查询内容以操作数据仓库中的数据后,可以回到《数据仓库服务数据库开发指南》。 了解GaussDB(DWS)数据仓库的内部架构。 如果您想要更全面地了解GaussDB(DWS)服务,请转到GaussDB(DWS)产品首页。 了解如何设计表以实现良好性能。 GaussDB(DWS)开发设计规范介绍数据库应用程序开发过程中,应当遵守的设计规范。依据这些规范进行建模,能够更好的契合GaussDB(DWS)的分布式处理架构,输出更高效的业务SQL代码。 对业务的执行效率不满意,期望通过调优加快业务执行的情况下,可以参考优化查询性能进行调优。性能调优是一项复杂的工程,有些时候无法系统性地说明和解释,而是依赖于DBA的经验判断。尽管如此,优化查询性能章节还是期望能尽量系统性的对性能调优方法加以说明,方便应用开发人员和刚接触GaussDB(DWS)的DBA参考。 加载数据。 导入数据介绍数据入库GaussDB(DWS)的方法和途径。 导入最佳实践提供有关快速高效数据导入的经验提示。 管理用户、组和数据库安全。 GaussDB(DWS)数据库安全管理涵盖数据库安全主题。 监控和优化系统性能。 GaussDB(DWS)系统表和系统视图详细介绍您可以从中查询数据库状态并监控查询内容与流程的系统表和视图。 您还应该查阅管理指南了解如何使用GaussDB(DWS)管理控制台检查系统运行状况、监控指标。
  • PG_RELFILENODE_SIZE PG_RELFILENODE_SIZE系统表存储文件级空间统计信息,表中的每一条记录对应磁盘上相应的物理文件和该文件的文件大小。 表1 PG_RELFILENODE_SIZE字段 名称 类型 描述 databaseid oid 物理文件所属database对应的OID。如果是跨库共享系统表,该值为0。 tablespaceid oid 物理文件所属表空间对应的OID。 relfilenode oid 物理文件的物理文件编号。 backendid integer 创建物理文件的后台线程号,通常为-1。 type integer 物理文件的文件类型。 0为数据类型。 1为FSM文件类型。 2为VM文件类型。 3为BCM文件类型。 大于4为列存表对应列的数据文件和BCM文件大小之和。 filesize bigint 物理文件的文件大小,单位为Byte。 父主题: 系统表
  • 注意事项 禁止一条SQL语句中,出现重复子查询语句。 尽量少用标量子查询(标量子查询指结果为1个值,并且条件表达式为等值的子查询)。 避免在SELECT目标列中使用子查询,可能导致计划无法下推影响执行性能。 子查询嵌套深度建议不超过2层。由于子查询会带来临时表开销,过于复杂的查询应考虑从业务逻辑上进行优化。 子查询可以在 SELECT 语句中嵌套其他查询,从而实现更复杂的查询。子查询还可以在WHERE子句中使用其他查询的结果,从而更好地过滤数据。但是子查询可能会导致查询性能问题和代码难阅读和理解。 所以在GaussDB等数据库中使用SQL子查询时,请结合实际业务情况进行操作。
  • 示例 创建学生信息表student(ID、姓名、性别、学校)。 1 2 3 4 5 6 7 SET current_schema=public; DROP TABLE IF EXISTS student; CREATE table student( sId VARCHAR(10) NOT NULL, sname VARCHAR(10) NOT NULL, sgender VARCHAR(10) NOT NULL, sschool VARCHAR(10) NOT NULL); 给表student插入数据。 1 2 3 4 5 6 7 8 INSERT INTO student VALUES('s01' , 'ZhaoLei' , 'male', 'NENU'); INSERT INTO student VALUES('s02' , 'QianDian' , 'male', 'SJTU'); INSERT INTO student VALUES('s03' , 'SunFenng' , 'male', 'Tongji'); INSERT INTO student VALUES('s04' , 'LIYun' , 'male', 'CCOM'); INSERT INTO student VALUES('s05' , 'ZhouMei' , 'female', 'FuDan'); INSERT INTO student VALUES('s06' , 'WuLan' , 'female', 'WHU'); INSERT INTO student VALUES('s07' , 'ZhengZhu' , 'female', 'NWAFU'); INSERT INTO student VALUES('s08' , 'ZhangShan' , 'female', 'Tongji'); 查看表student。 1 SELECT * FROM student; 回显如下: 创建教师信息表teacher(ID、姓名、性别、学校)。 1 2 3 4 5 6 DROP TABLE IF EXISTS teacher; CREATE table teacher( tid VARCHAR(10) NOT NULL, tname VARCHAR(10) NOT NULL, tgender VARCHAR(10) NOT NULL, tschool VARCHAR(10) NOT NULL); 给表teacher插入数据。 1 2 3 INSERT INTO teacher VALUES('t01' , 'ZhangLei', 'male', 'FuDan'); INSERT INTO teacher VALUES('t02' , 'LiLiang', 'male', 'WHU'); INSERT INTO teacher VALUES('t03' , 'WangGang', 'male', 'Tongji'); 查询表teacher。 1 SELECT * FROM teacher; 使用UNION(合并且去重)获取学生和教师所在学校,并按学校名称首字母升序排序。 1 2 3 4 5 6 7 8 SELECT t.school FROM ( SELECT sschool AS school FROM student UNION SELECT tschool AS school FROM teacher ) t ORDER BY t.school ASC; 回显如下: 使用UNION ALL(合并不去重)获取所有学生和教师所在学校,并按学校名称首字母升序排序。 1 2 3 4 5 6 7 8 SELECT t.school FROM ( SELECT sschool AS school FROM student UNION ALL SELECT tschool AS school FROM teacher ) t ORDER BY t.school ASC; 使用UNION ALL(合并带有WHERE子句SQL结果集)获取来自“Tongji”的学生和教师的所有信息,并按学生和教师的编号升序排序。 1 2 3 4 5 6 7 8 9 10 SELECT t.* FROM ( SELECT Sid AS id,Sname AS name,Sgender AS gender,Sschool AS school FROM student WHERE Sschool='Tongji' UNION ALL SELECT Tid AS id,Tname AS name,Tgender AS gender,Tschool AS school FROM teacher WHERE Tschool='Tongji' ) t ORDER BY t.id ASC;
  • 使用场景 查询全库所有用户表的整体脏页率: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 select t1.schema, t1.tablename, t1.total_ins, t1.total_upd, t1.total_del, t1. total_tup_hot_upd, t1.total_change, t1.total_live, t1.total_dead, t1.total_dirty_rate, t1.max_dirty, t2.max_node, t1.min_dirty, t2.min_node from (select a.schema, a.tablename, sum(a.n_tup_ins) as total_ins, sum(a.n_tup_upd) as total_upd, sum(a.n_tup_del) as total_del, sum(a.n_tup_hot_upd) as total_tup_hot_upd, sum(a.n_tup_change) as total_change, sum(a.n_live_tup) as total_live, sum(a.n_dead_tup) as total_dead, Round((total_dead / (total_dead + total_live + 0.0001) * 100),2) AS total_dirty_rate, max(a.dirty_rate) as max_dirty, min(a.dirty_rate) as min_dirty from pg_catalog.pgxc_stat_table_dirty a where a.partname is null and a.schema not in ('pg_toast','cstore','gs_logical_cluster','sys','dbms_om','information_schema','pg_catalog','dbms_output','dbms_random','utl_raw','utl_raw dbms_sql','dbms_lob') group by a.tablename, a.schema ) t1, (select distinct tablename, schema, first_value(nodename) over(partition by tablename, schema order by dirty_rate) as min_node, first_value(nodename) over(partition by tablename, schema order by dirty_rate desc) as max_node from (select * from pg_catalog.pgxc_stat_table_dirty)) t2 where t1.tablename = t2.tablename and t1.schema = t2.schema; 查询全库所有表(用户表+系统表)的整体脏页率: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 select t1.schema, t1.tablename, t1.total_ins, t1.total_upd, t1.total_del, t1. total_tup_hot_upd, t1.total_change, t1.total_live, t1.total_dead, t1.total_dirty_rate, t1.max_dirty, t2.max_node, t1.min_dirty, t2.min_node from (select a.schema, a.tablename, sum(a.n_tup_ins) as total_ins, sum(a.n_tup_upd) as total_upd, sum(a.n_tup_del) as total_del, sum(a.n_tup_hot_upd) as total_tup_hot_upd, sum(a.n_tup_change) as total_change, sum(a.n_live_tup) as total_live, sum(a.n_dead_tup) as total_dead, Round((total_dead / (total_dead + total_live + 0.0001) * 100),2) AS total_dirty_rate, max(a.dirty_rate) as max_dirty, min(a.dirty_rate) as min_dirty from pg_catalog.pgxc_stat_table_dirty a where a.partname is null group by a.tablename, a.schema ) t1, (select distinct tablename, schema, first_value(nodename) over(partition by tablename, schema order by dirty_rate) as min_node, first_value(nodename) over(partition by tablename, schema order by dirty_rate desc) as max_node from (select * from pg_catalog.pgxc_stat_table_dirty)) t2 where t1.tablename = t2.tablename and t1.schema = t2.schema; 查询全库系统表信息: 1 select * from pgxc_stat_table_dirty where schema in ('pg_toast','cstore','gs_logical_cluster','sys','dbms_om','information_schema','pg_catalog','dbms_output','dbms_random','utl_raw','utl_raw dbms_sql','dbms_lob');
  • 限制结果查询数量 如果需要查询只返回部分结果,可以使用LIMIT语句限制查询结果返回的记录数。 1 2 3 4 5 6 7 8 9 SELECT product_id,product_name,category,quantity FROM newproducts ORDER BY quantity DESC limit 5; product_id | product_name | category | quantity ------------+--------------+-------------+---------- 3577 | dumbbell | sports | 550 2344 | milklotion | skin care | 320 1666 | Frisbee | toys | 244 1210 | necklace | jewels | 200 1502 | earphones | electronics | 150 (5 rows)
  • 聚合查询 可以通过使用GROUP BY语句配合聚合函数,构建一个聚合查询来关注数据的整体情况。 1 2 3 4 5 6 7 8 9 SELECT category, string_agg(quantity,',') FROM newproducts group by category; category | string_agg -------------+------------ toys | 80,244 books | 100 sports | 550 jewels | 200 skin care | 320 electronics | 150
  • 对结果进行筛选 通过WHERE语句对查询的结果进行过滤,找到想要查询的部分。 1 2 3 4 5 6 SELECT * FROM newproducts WHERE category='toys'; product_id | product_name | category | quantity ------------+--------------+----------+---------- 1601 | telescope | toys | 80 1666 | Frisbee | toys | 244 (2 rows)
  • 对结果进行排序 使用ORDER BY语句可以让查询结果按照期望的方式进行排序。 1 2 3 4 5 6 7 8 9 10 11 SELECT product_id,product_name,category,quantity FROM newproducts ORDER BY quantity DESC; product_id | product_name | category | quantity ------------+--------------+-------------+---------- 3577 | dumbbell | sports | 550 2344 | milklotion | skin care | 320 1666 | Frisbee | toys | 244 1210 | necklace | jewels | 200 1502 | earphones | electronics | 150 1700 | interface | books | 100 1601 | telescope | toys | 80 (7 rows)
  • 连接类型介绍 通过SQL完成各种复杂的查询,多表之间的连接是必不可少的。连接分为:内连接和外连接两大类,每大类中还可进行细分。 内连接:标准内连接(INNER JOIN),交叉连接(CROSS JOIN)和自然连接(NATURAL JOIN)。 外连接:左外连接(LEFT OUTER JOIN),右外连接(RIGHT OUTER JOIN)和全外连接(FULL JOIN)。 为了能更好的说明各种连接之间的区别,下面通过具体示例进行详细的阐述。 创建示例表student和math_score,并插入数据,设置enable_fast_query_shipping为off(默认为on)即查询优化器使用分布式框架;参数explain_perf_mode为pretty(默认值为pretty)指定explain的显示格式。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE TABLE student( id INTEGER, name varchar(50) ); CREATE TABLE math_score( id INTEGER, score INTEGER ); INSERT INTO student VALUES(1, 'Tom'); INSERT INTO student VALUES(2, 'Lily'); INSERT INTO student VALUES(3, 'Tina'); INSERT INTO student VALUES(4, 'Perry'); INSERT INTO math_score VALUES(1, 80); INSERT INTO math_score VALUES(2, 75); INSERT INTO math_score VALUES(4, 95); INSERT INTO math_score VALUES(6, NULL); SET enable_fast_query_shipping = off; SET explain_perf_mode = pretty;
  • 多表查询中on条件和where条件的区别 从上面各种连接语法中可见,除自然连接和交叉连接外,其他都需要有on条件(using在查询解析过程中会被转为on条件)来限制两表连接的结果。通常在查询的语句中也都会有where条件限制查询结果。这里说的on连接条件和where过滤条件是指不含可以下推到表上的过滤条件。on和where的区别是: on条件是两表连接的约束条件。 where是对两表连接后产生的结果集再次进行过滤。 简单总结就是:on条件优先于where条件,在两表进行连接时被应用;生成两表连接结果集后,再应用where条件。
  • WITH中的数据修改语句 在WITH子句中使用数据修改命令INSERT、UPDATE、DELETE。这允许用户在同一个查询中执行多个不同操作。示例如下所示: 1 2 3 4 5 6 WITH moved_tree AS ( DELETE FROM tree WHERE parentid = 4 RETURNING * ) INSERT INTO tree_log SELECT * FROM moved_tree; 上述查询示例实际上从tree把行移动到tree_log。WITH中的DELETE删除来自tree的指定行,以它的RETURNING子句返回它们的内容,并且接着主查询读该输出并将它插入到tree_log。 WITH子句中的数据修改语句必须有RETURNING子句,用来返回RETURNING子句的输出,而不是数据修改语句的目标表,RETURNING子句形成了可以被查询的其余部分引用的临时表。如果一个WITH中的数据修改语句缺少一个RETURNING子句,则它形不成临时表并且不能在剩余的查询中被引用。 如果声明了RECURSIVE关键字,则不允许在数据修改语句中进行递归自引用。在某些情况中可以通过引用递归WITH的输出来绕过这个限制,例如: 1 2 3 4 5 6 7 8 9 WITH RECURSIVE included_parts(sub_part, part) AS ( SELECT sub_part, part FROM parts WHERE part = 'our_product' UNION ALL SELECT p.sub_part, p.part FROM included_parts pr, parts p WHERE p.part = pr.sub_part ) DELETE FROM parts WHERE part IN (SELECT part FROM included_parts); 这个查询将会移除一个产品的所有直接或间接子部件。 WITH子句中的子语句与主查询同时执行。因此,在使用WITH中的数据修改语句时,指定更新的顺序实际是以不可预测的方式发生的。所有的语句都使用同一个快照中执行,语句的效果在目标表上不可见。这减轻了行更新的实际顺序的不可预见性的影响,并且意味着RETURNING数据是在不同WITH子语句和主查询之间传达改变的唯一方法。 本示例中外层SELECT可以返回更新之前的数据: 1 2 3 4 WITH t AS ( UPDATE tree SET id = id + 1 RETURNING * ) SELECT * FROM tree; 本示例中外部SELECT将返回更新过的数据: 1 2 3 4 WITH t AS ( UPDATE tree SET id = id + 1 RETURNING * ) SELECT * FROM t; 不支持在单个语句中更新同一行两次。这种语句的效果是不可预测的。如果只有一个修改发生了,但却不容易(有时也不可能)预测哪一个发生了修改。
  • WITH递归查询 通过声明RECURSIVE关键字,一个WITH查询可以引用它自己的输出。 递归WITH查询的通常形式如下: 1 non_recursive_term UNION [ALL] recursive_term 其中:UNION在合并集合时会执行去重操作,而UNION ALLL则直接将结果集合并、不执行去重;只有递归项能够包含对于查询自身输出的引用。 使用递归WITH时,必须确保查询的递归项最终不会返回元组,否则查询将无限循环。 使用表tree来存储下图中的所有节点信息: 表定义语句如下: 1 CREATE TABLE tree(id INT, parentid INT); 表中数据如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 INSERT INTO tree VALUES(1,0),(2,1),(3,1),(4,2),(5,2),(6,3),(7,3),(8,4),(9,4),(10,6),(11,6),(12,10); SELECT * FROM tree; id | parentid ----+---------- 1 | 0 2 | 1 3 | 1 4 | 2 5 | 2 6 | 3 7 | 3 8 | 4 9 | 4 10 | 6 11 | 6 12 | 10 (12 rows) 通过以下WITH RECURSIVE语句,我们可以返回从顶层1号节点开始,整个树的节点,以及层次信息: 1 2 3 4 5 6 7 8 9 10 11 WITH RECURSIVE nodeset AS ( -- recursive initializing query SELECT id, parentid, 1 AS level FROM tree WHERE id = 1 UNION ALL -- recursive join query SELECT tree.id, tree.parentid, level + 1 FROM tree, nodeset WHERE tree.parentid = nodeset.id ) SELECT * FROM nodeset ORDER BY id; 上述查询中,我们可以看出,一个典型的WITH RECURSIVE表达式包含至少一个递归查询的CTE,该CTE中的定义为一个UNION ALL集合操作,第一个分支为递归起始查询,第二个分支为递归关联查询,需要自引用第一部分进行不断递归关联。该语句执行时,递归起始查询执行一次,关联查询执行若干次并将结果叠加到起始查询结果集中,直到某一些关联查询结果为空,则返回。 上述查询的执行结果如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 id | parentid | level ----+----------+------- 1 | 0 | 1 2 | 1 | 2 3 | 1 | 2 4 | 2 | 3 5 | 2 | 3 6 | 3 | 3 7 | 3 | 3 8 | 4 | 4 9 | 4 | 4 10 | 6 | 4 11 | 6 | 4 12 | 10 | 5 (12 rows) 从返回结果可以看出,起始查询结果包含level=1的结果集,关联查询执行了五次,前四次分别输出level=2,3,4,5的结果集,在第五次执行时,由于没有parentid和输出结果集id相等的记录,也就是再没有多余的孩子节点,因此查询结束。 对于WITH RECURSIVE表达式,GaussDB(DWS)支持其分布式执行。由于WITH RECURSIVE涉及到循环运算,GaussDB(DWS)引入了参数max_recursive_times,用于控制WITH RECURSIVE的最大循环次数,默认值为200,超过该次数则报错。
  • 优化后 可将查询可以修改为: 1 SELECT * FROM t1 WHERE NOT EXISTS (SELECT * FROM t2 WHERE t2.c = t1.c); 执行下列语句,查询NOT EXISTS的执行计划: 1 EXPLAIN VERBOSE SELECT * FROM t1 WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE t2.c = t1.c);
  • MPP_TABLES MPP_TABLES视图显示PGXC_CLASS中的表信息。 表1 MPP_TABLES字段 名称 类型 描述 schemaname name 包含表的模式名。 tablename name 表名。 tableowner name 表的所有者。 tablespace name 表所在的表空间。 pgroup name 节点群的名称。 nodeoids oidvector_extend 表分布的节点OID列表。 父主题: 系统视图
  • GaussDB(DWS)字符串加解密 GaussDB(DWS)支持使用以下函数对字符串进行加解密。 gs_encrypt(encryptstr, keystr, cryptotype, cryptomode, hashmethod) 描述:采用cryptotype和cryptomode组成的加密算法以及hashmethod指定的HMAC算法,以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。支持的cryptotype:aes128, aes192, aes256, sm4。支持的cryptomode:cbc。支持的hashmethod:sha256, sha384, sha512, sm3。支持的加密数据类型:目前数据库支持的数值类型,字符类型,二进制类型中的RAW,日期/时间类型中的DATE、TIMESTAMP、SMALLDATETIME。keystr的长度范围与加密算法相关,为1~KeyLen字节。当cryptotype为aes128和sm4时,KeyLen为16,aes192时KeyLen为24,aes256时KeyLen为32。 返回值类型:text 返回值长度:至少为 4*[(maclen + 56)/3] 字节,不超过 4*[(Len + maclen + 56)/3] 字节,其中Len为加密前数据长度(单位为字节),maclen为HMAC值的长度,当hashmethod为sha256和sm3时maclen为32,sha384时maclen为48,sha512时maclen为64。即当hashmethod为sha256和sm3时,返回值长度至少为120字节,不超过4*[(Len + 88)/3] 字节;当hashmethod为sha384时,返回值长度至少为140字节,不超过4*[(Len + 104)/3] 字节;当hashmethod为sha512时,返回值长度至少为160字节,不超过4*[(Len + 120)/3] 字节; 示例: 1 2 3 4 5 SELECT gs_encrypt('GaussDB(DWS)', '1234', 'aes128', 'cbc', 'sha256'); gs_encrypt -------------------------------------------------------------------------------------------------------------------------- AAAAAAAAAACcFjDc CS bop7D87sOa2nxTFrkE9RJQGK34ypgrOPsFJIqggI8tl+eMDcQYT3po98wPCC7VBfhv7mdBy7IVnzdrp0rdMrD6/zTl8w0v9/s2OA== (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。 在同一张数据表中,加密函数ge_encrypt与gs_encrypt_aes128不要混合使用。 gs_decrypt(decryptstr, keystr,cryptotype, cryptomode, hashmethod) 描述:采用cryptotype和cryptomode组成的加密算法以及hashmethod指定的HMAC算法,以keystr为密钥对decryptstr字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。keystr不得为空。 返回值类型:text 示例: 1 2 3 4 5 SELECT gs_decrypt('AAAAAAAAAACcFjDcCSbop7D87sOa2nxTFrkE9RJQGK34ypgrOPsFJIqggI8tl+eMDcQYT3po98wPCC7VBfhv7mdBy7IVnzdrp0rdMrD6/zTl8w0v9/s2OA==', '1234', 'aes128', 'cbc', 'sha256'); gs_decrypt -------------- GaussDB(DWS) (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。 此函数需要结合gs_encrypt加密函数共同使用,且加密算法和HMAC算法要保证一致。 gs_encrypt_aes128(encryptstr,keystr) 描述:以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为1~16字节。支持的加密数据类型:目前数据库支持的数值类型,字符类型,二进制类型中的RAW,日期/时间类型中的DATE、TIMESTAMP、SMALLDATETIME。 返回值类型:text 返回值长度:至少为92字节,不超过 4*[(Len+68)/3] 字节,其中Len为加密前数据长度(单位为字节)。 示例: 1 2 3 4 5 SELECT gs_encrypt_aes128('DWS','1234'); gs_encrypt_aes128 ---------------------------------------------------------------------------------------------- MGFX/AvA69PvS6wgZMtEAwNdjf/lMM6b7pIY5miAAkS0cf3m5mKl8iNe1BKDVqTvgZEEoMTycVVE+tHF69uHYznXyhs= (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。 在同一张数据表中,加密函数gs_encrypt_aes128与ge_encrypt不要混合使用。 gs_decrypt_aes128(decryptstr,keystr) 描述:以keystr为密钥对decryptstr字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。keystr不得为空。 返回值类型:text 示例: 1 2 3 4 5 SELECT gs_decrypt_aes128('MGFX/AvA69PvS6wgZMtEAwNdjf/lMM6b7pIY5miAAkS0cf3m5mKl8iNe1BKDVqTvgZEEoMTycVVE+tHF69uHYznXyhs=','1234'); gs_decrypt_aes128 ------------------- DWS (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。 此函数需要结合gs_encrypt_aes128加密函数共同使用。 gs_hash(hashstr, hashmethod) 描述:以hashmethod算法对hashstr字符串进行信息摘要,返回信息摘要字符串。支持的hashmethod:sha256, sha384, sha512, sm3。 返回值类型:text 返回值长度:sha256和sm3返回64字节,sha384返回96字节,sha512返回128字节。 示例: 1 2 3 4 5 SELECT gs_hash('GaussDB(DWS)', 'sha256'); gs_hash -------------------------------------------------------------------------------------------------- e59069daa6541ae20af7c747662702c731b26b8abd7a788f4d15611aa0db608efdbb5587ba90789a983f85dd51766609 (1 row) md5(string) 描述:将string使用MD5加密,并以16进制数作为返回值。 MD5的安全性较低,不建议使用。 返回值类型:text 示例: 1 2 3 4 5 SELECT md5('ABC'); md5 ---------------------------------- 902fbdd2b1df0c4f70b4a5d23525e932 (1 row) 父主题: GaussDB(DWS)敏感数据管理
  • 大小写不敏感排序规则支持 从集群8.1.3版本开始,GaussDB(DWS)增加内置排序规则case_insensitive,即对字符类型的大小写不敏感行为(如排序、比较、哈希)。 约束条件: 支持字符类型:char/character/nchar、varchar/character varying/varchar2/nvarchar2/clob/text。 不支持字符类型:“char”和name。 不支持的编码:PG_EUC_JIS_2004、PG_MULE_INTERNAL、PG_LATIN10、PG_WIN874。 不支持CREATE DATABASE时指定到LC_COLLATE。 不支持正则表达式。 不支持字符类型的record比较(如record_eq)。 不支持时序表。 不支持倾斜优化。 不支持RoughCheck优化。
  • 示例 语句中显示指定COLLATE子句。 1 2 3 4 5 SELECT 'a' = 'A', 'a' = 'A' COLLATE case_insensitive; ?column? | ?column? ----------+---------- f | t (1 row) 建表时指定列属性为case_insensitive。 1 2 3 4 5 6 7 8 9 10 11 12 CREATE TABLE t1 (a text collate case_insensitive); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using round-robin as the distribution mode by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE \d t1 Table "public.t1" Column | Type | Modifiers --------+------+-------------------------- a | text | collate case_insensitive INSERT INTO t1 values('a'),('A'),('b'),('B'); INSERT 0 4 建表时指定,查询时无需指定。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT a, a='a' FROM t1; a | ?column? ---+---------- A | t B | f a | t b | f (4 rows) SELECT a, count(1) FROM t1 GROUP BY a; a | count ---+------- a | 2 B | 2 (2 rows) CASE表达式,以WHEN子句中的COLLATE设置为准。 1 2 3 4 5 6 7 8 SELECT a,case a when 'a' collate case_insensitive then 'case1' when 'b' collate "C" then 'case2' else 'case3' end FROM t1; a | case ---+------- A | case1 B | case3 a | case1 b | case2 (4 rows) 跨子查询隐式派生。 1 2 3 4 5 6 7 8 9 SELECT * FROM (SELECT a collate "C" from t1) WHERE a in ('a','b'); a --- a b (2 rows) SELECT * FROM t1,(SELECT a collate "C" from t1) t2 WHERE t1.a=t2.a; ERROR: could not determine which collation to use for string hashing HINT: Use the COLLATE clause to set the collation explicitly. 由于collate case_insensitive为不敏感排序,结果集不确定,再使用敏感排序筛选,会有结果集不稳定的问题,因此语句中避免出现敏感排序和不敏感排序混用。 使用collate case_insensitive指定字符类型为大小写不敏感后,性能较使用前会有所下降,因此性能敏感场景需谨慎评估后使用。
  • 排序规则组合原则 当表达式的collation未指定时,则认为是默认的排序规则default,它表示数据库的区域设置。表达式的collation也可能是不确定的,此时,排序操作和其他不确定的排序规则的操作就会失败。 对于函数或操作符调用,其排序规则将通过检查所有参数的collation来决定。如果该函数或操作符调用的结果是一种可排序的数据类型,若有外层表达式要用到排序规则,那么该外层的表达式将继承对应函数和操作符所调用结果集的排序规则。 表达式的排序规则派生可以是显式或隐式。该区别会影响多个不同的排序规则出现在同一个表达式中时如何对collation进行组合。当执行语句使用COLLATE子句时,将发生显式派生,否则为隐式派生。当多个排序规则组合时,规则如下: 如果输入表达式中存在显式COLLATE派生,则在输入表达式之间的所有显式派生的COLLATE必须相同,否则将产生冲突错误。如果存在显式COLLATE,那它就是排序规则组合的结果。 如果不存在显式COLLATE,那所有输入表达式必须具有相同的隐式COLLATE或默认COLLATE。如果存在非默认COLLATE,那它就是排序规则组合的结果。否则,结果是默认COLLATE。 如果在输入表达式之间存在多个冲突的非默认COLLATE,则组合被认为是具有不确定排序规则,这并非一种错误。如果被调用的函数或表达式需要用到排序规则,运行时将产生排序规则未知的错误。 CASE表达式中,比较行为使用的规则以WHEN子句中的COLLATE设置为准。 显示COLLATE的派生仅在当前查询(CTE或SUBQUERY)中生效,查询外则降为隐式派生。
  • 概述 一种可排序数据类型的每一种表达式都有一个排序规则(系统内部的可排序数据类型可以是text、varchar和char等字符类型。用户定义的基础类型也可以被标记为可排序的,并且在一种可排序数据类型上的域也是可排序的)。如果该表达式是一个列引用,该表达式的排序规则就是列所定义的排序规则。如果该表达式是一个常量,排序规则就是该常量数据类型的默认排序规则。更复杂表达式的排序规则根据其输入的排序规则得来。
  • PGXC_SESSION_WLMSTAT PGXC_SESSION_WLMSTAT视图显示当前集群中各CN节点用户执行作业正在运行时的负载管理相关信息。 表1 PGXC_SESSION_WLMSTAT字段 名称 类型 描述 nodename name 节点名称 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的时间,单位为秒。 elapsed_time bigint 语句当前为止的实际执行时间,单位为秒。 total_cpu_time bigint 语句在上一时间周期内的DN上CPU使用的总时间,单位为秒。 cpu_skew_percent integer 语句在上一时间周期内的DN上CPU使用的倾斜率。 statement_mem integer 语句执行所需要的估算内存。 active_points integer 语句占用的资源池并发点数。 dop_value integer 从资源池中获取语句的dop值。 control_group text 语句当前所使用的Cgroups。 status text 语句当前的状态,包括: pending:执行前状态。 running:执行进行状态。 finished:执行正常结束。(当enqueue字段为StoredProc或Transaction时,仅代表语句中的部分作业已经执行完毕,该状态会持续到该语句完全执行完毕。) aborted:执行异常终止。 active:非以上四种状态外的正常状态。 unknown:未知状态。 enqueue text 语句当前的排队情况,包括: Global:全局排队。 Respool:资源池排队。 CentralQueue:在中心协调节点(CCN)中排队。 Transaction:语句处于一个事务块中。 StoredProc:语句处于一个存储过程中。 None:未在排队。 Forced None:事务块语句或存储过程语句由于超出设定的等待时间而强制执行。 resource_pool name 语句当前所在的资源池。 query text 该后端的最新查询。如果state状态是active,此字段显示当前正在执行的查询。所有其他情况表示上一个查询。 isplana bool 逻辑集群模式下,语句当前是否占用其他逻辑集群的资源执行。该值默认为f,表示不占用其他逻辑集群的资源执行。 node_group text 语句所属用户对应的逻辑集群。 lane text 表示语句查询的快慢车道。 fast:快车道。 slow:慢车道。 none:未管控。 父主题: 系统视图
  • PGXC_RESPOOL_RESOURCE_HISTORY PGXC_RESPOOL_RESOURCE_HISTORY用于查询所有实例上资源池监控历史信息。 表1 PGXC_RESPOOL_RESOURCE_HISTORY字段 名称 类型 描述 nodename name 实例名称,包含CN和DN。 timestamp timestamp 资源池监控信息持久化时间。 nodegroup name 资源池所属逻辑集群名称,默认集群显示“installation”。 rpname name 资源池名称。 cgroup name 资源池关联控制组名称。 ref_count int 资源池引用作业数,作业经过资源池不管是否管控都会计数,仅CN上有效。 fast_run int 资源池快车道运行作业数,只在CN上有效。 fast_wait int 资源池快车道排队作业数,只在CN上有效。 fast_limit int 资源池快车道作业并发限制,只在CN上有效。 slow_run int 资源池慢车道运行作业数,只在CN上有效。 slow_wait int 资源池慢车道排队作业数,只在CN上有效。 slow_limit int 资源池慢车道作业并发限制,只在CN上有效。 used_cpu double 资源池5s监控周期内使用CPU个数平均值,保留小数点后2位。 DN:显示当前DN上资源池使用的CPU个数。 CN:显示所有DN上资源池使用CPU的累积和。 cpu_limit int 资源池可用CPU的上限,CPU配额管控情况下为GaussDB可用CPU,CPU限额管控情况下为关联控制组CPU可用CPU。 DN:显示当前DN上资源池可用CPU上限。 CN:显示所有DN上资源池可用CPU上限的累积和。 used_mem int 资源池使用的内存大小,单位为MB。 DN:显示当前DN上资源池使用的内存大小。 CN:显示所有DN上资源池使用内存的累积和。 estimate_mem int 当前CN上,资源池运行作业的估算内存之和,只在CN上有效。 mem_limit int 资源池可用内存上限,单位为MB。 DN:显示当前DN上资源池可用内存上限。 CN:显示所有DN上资源池可用内存上限的累积和。 read_kbytes bigint 资源池5s监控周期内逻辑读字节数,单位为KB。 DN:显示当前DN上资源池逻辑读字节数。 CN:显示所有DN上资源池逻辑读字节的累积和。 write_kbytes bigint 资源池5s监控周期内逻辑写字节数,单位为KB。 DN:显示当前DN上资源池逻辑写字节数。 CN:显示所有DN上资源池逻辑写字节的累积和。 read_counts bigint 资源池5s监控周期内逻辑读次数。 DN:显示当前DN上资源池逻辑读次数。 CN:显示所有DN上资源池逻辑读次数的累积和。 write_counts bigint 资源池5s监控周期内逻辑写次数。 DN:显示当前DN上资源池逻辑写次数。 CN:显示所有DN上资源池逻辑写次数的累积和。 read_speed double 资源池5s监控周期内逻辑读速率的平均值。 DN:显示当前DN上资源池逻辑读速率。 CN:显示所有DN上资源池逻辑读速率的累积和。 write_speed double 资源池5s监控周期内逻辑写速率平均值。 DN:显示当前DN上资源池逻辑写速率。 CN:显示所有DN上资源池逻辑写速率的累积和。 父主题: 系统视图
  • PGXC_RESPOOL_RESOURCE_INFO PGXC_RESPOOL_RESOURCE_INFO视图显示所有实例上资源池实时监控信息。 DN上仅显示当前DN所属逻辑集群的资源池监控信息。 表1 PGXC_RESPOOL_RESOURCE_INFO字段 名称 类型 描述 nodename name 实例名称,包含CN和DN。 nodegroup name 资源池所属逻辑集群名称,默认集群显示“installation”。 rpname name 资源池名称。 cgroup name 资源池关联控制组名称。 ref_count int 资源池引用作业数,作业经过资源池不管是否管控都会计数,仅CN上有效。 fast_run int 资源池快车道运行作业数,只在CN上有效。 fast_wait int 资源池快车道排队作业数,只在CN上有效。 fast_limit int 资源池快车道作业并发限制,只在CN上有效。 slow_run int 资源池慢车道运行作业数,只在CN上有效。 slow_wait int 资源池慢车道排队作业数,只在CN上有效。 slow_limit int 资源池慢车道作业并发限制,只在CN上有效。 used_cpu double 资源池5s监控周期内使用CPU个数平均值,保留小数点后2位。 DN:显示当前DN上资源池使用的CPU个数。 CN:显示所有DN上资源池使用CPU的累积和。 cpu_limit int 资源池可用CPU的上限,CPU配额管控情况下为GaussDB(DWS)可用CPU,CPU限额管控情况下为关联控制组CPU可用CPU。 DN:显示当前DN上资源池可用CPU上限。 CN:显示所有DN上资源池可用CPU上限的累积和。 used_mem int 资源池当前使用的内存大小,单位为MB。 DN:显示当前DN上资源池使用的内存大小。 CN:显示所有DN上资源池使用内存的累积和。 estimate_mem int 当前CN上,资源池运行作业的估算内存之和,只在CN上有效。 mem_limit int 资源池可用内存上限,单位为MB。 DN:显示当前DN上资源池可用内存上限。 CN:显示所有DN上资源池可用内存上限的累积和。 read_kbytes bigint 资源池5s监控周期内逻辑读字节数,单位为KB。 DN:显示当前DN上资源池逻辑读字节数。 CN:显示所有DN上资源池逻辑读字节的累积和。 write_kbytes bigint 资源池5s监控周期内逻辑写字节数,单位为KB。 DN:显示当前DN上资源池逻辑写字节数。 CN:显示所有DN上资源池逻辑写字节的累积和。 read_counts bigint 资源池5s监控周期内逻辑读次数。 DN:显示当前DN上资源池逻辑读次数。 CN:显示所有DN上资源池逻辑读次数的累积和。 write_counts bigint 资源池5s监控周期内逻辑写次数。 DN:显示当前DN上资源池逻辑写次数。 CN:显示所有DN上资源池逻辑写次数的累积和。 read_speed double 资源池5s监控周期内逻辑读速率的平均值。 DN:显示当前DN上资源池逻辑读速率。 CN:显示所有DN上资源池逻辑读速率的累积和。 write_speed double 资源池5s监控周期内逻辑写速率平均值。 DN:显示当前DN上资源池逻辑写速率。 CN:显示所有DN上资源池逻辑写速率的累积和。 父主题: 系统视图
  • PGXC_RESPOOL_RUNTIME_INFO PGXC_RESPOOL_RUNTIME_INFO视图显示所有CN上所有资源池作业运行信息。 表1 PGXC_RESPOOL_RUNTIME_INFO字段 名称 类型 描述 nodename name CN名称 nodegroup name 资源池所属逻辑集群名称,默认集群显示"installation" rpname name 资源池名称 ref_count int 资源池引用作业数,作业经过资源池不管是否管控都会计数 fast_run int 资源池快车道运行作业数 fast_wait int 资源池快车道排队作业数 slow_run int 资源池慢车道运行作业数 slow_wait int 资源池慢车道排队作业数 父主题: 系统视图
共100000条