华为云用户手册

  • Schema的权限控制 默认情况下,用户只能访问属于自己的Schema中的数据库对象。如需要访问其他Schema的对象,则需赋予对应Schema的usage权限。 通过将模式的CREATE权限授予某用户,被授权用户就可以在此模式中创建对象。 将myschema的usage权限赋给用户jack。 1 GRANT USAGE ON schema myschema TO jack; 将用户jack对于myschema的usage权限收回。 1 REVOKE USAGE ON schema myschema FROM jack;
  • 使用Schema 在特定Schema下创建对象或者访问特定Schema下的对象,需要使用有Schema修饰的对象名。名称包含Schema名以及对象名,之间用“.”号分开。 在myschema下创建mytable表。以schema_name.table_name格式创建表。 1 CREATE TABLE myschema.mytable(id int, name varchar(20)); 查询myschema下mytable表的所有数据。 1 2 3 4 SELECT * FROM myschema.mytable; id | name ----+------ (0 rows)
  • 系统Schema 每个数据库都包含一个pg_catalog schema,它包含系统表和所有内置数据类型、函数、操作符。pg_catalog是搜索路径中的一部分,始终在临时表所属的模式后面,并在search_path中所有模式的前面,即具有第二搜索优先级。这样确保可以搜索到数据库内置对象。如果用户需要使用和系统内置对象重名的自定义对象时,可以在操作自定义对象时带上自己的模式。 information_schema由一个包含数据库中对象信息的视图集合组成。 这些视图以一种标准化的方式从系统目录表中得到系统信息。
  • 创建Schema 使用CREATE SCHEMA命令来创建一个新的Schema。 1 CREATE SCHEMA myschema; 如果需要在模式中创建或者访问对象,其完整的对象名称由模式名称和具体的对象名称组成。中间由符号“.”隔开。例如:myschema.table。 用户可以创建一个由他人拥有的schema。例如,创建名为myschema的Schema,并指定Schema的所有者为用户jack。 1 CREATE SCHEMA myschema AUTHORIZATION jack; 若不指定authorization username,则其所有者为执行该命令的用户。
  • 设置Schema搜索路径 GUC参数search_path设置Schema的搜索顺序,参数取值形式为采用逗号分隔的Schema名称列表。如果创建对象时未指定目标Schema,则该对象会被添加到搜索路径中列出的第一个Schema中。当不同Schema中存在同名的对象时,查询对象未指定Schema的情况下,将从搜索路径中包含该对象的第一个Schema中返回对象。 使用SHOW命令查看当前搜索路径。 1 2 3 4 5 SHOW SEARCH_PATH; search_path ---------------- "$user",public (1 row) search_path参数的默认值为:"$user",public。$user表示与当前会话用户名同名的Schema名,如果这样的模式不存在,$user将被忽略。所以默认情况下,用户连接数据库后,如果数据库下存在同名Schema,则对象会添加到同名Schema下,否则对象被添加到Public Schema下。 使用SET命令修改当前会话的默认Schema。例如,将搜索路径设置为myschema、public,首先搜索myschema。 1 SET SEARCH_PATH TO myschema, public; 也可以使用ALTER ROLE命令为特定的角色(用户)设置search_path。例如: 1 ALTER ROLE jack SET search_path TO myschema, public;
  • 查看和停止正在运行的查询语句 通过视图PG_STAT_ACTIVITY可以查看正在运行的查询语句。方法如下: 设置参数track_activities为on。 1 SET track_activities = on; 当此参数为on时,数据库系统才会收集当前活动查询的运行信息。 查看正在运行的查询语句。以查看正在运行的查询语句所连接的数据库名、执行查询的用户、查询状态及查询对应的PID为例: 1 SELECT datname, usename, state,pid FROM pg_stat_activity; 如果state字段显示为idle,则表明此连接处于空闲,等待用户输入命令。 如果仅需要查看非空闲的查询语句,则使用如下命令查看: 1 SELECT datname, usename, state FROM pg_stat_activity WHERE state != 'idle'; 若需要取消运行时间过长的查询,通过PG_TERMINATE_BACKEND函数,根据线程ID结束会话。 1 SELECT PG_TERMINATE_BACKEND(139834759993104); 显示类似如下信息,表示结束会话成功。 1 2 3 4 PG_TERMINATE_BACKEND ---------------------- t (1 row) 显示类似如下信息,表示用户执行了结束当前会话的操作。 1 2 FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command gsql客户端使用PG_TERMINATE_BACKEND函数结束当前会话后台线程时,客户端不会退出而是自动重连。即还会返回“The connection to the server was lost. Attempting reset: Succeeded.” 1 2 3 FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command The connection to the server was lost. Attempting reset: Succeeded.
  • 查看数据库中包含的表 例如,在PG_TABLES系统表中查看public schema中包含的所有表。 1 SELECT distinct(tablename) FROM pg_tables WHERE SCHEMANAME = 'public'; 结果类似如下这样: 1 2 3 4 5 6 7 8 9 tablename ------------------- err_hr_staffs test err_hr_staffs_ft3 web_returns_p1 mig_seq_table films4 (6 rows)
  • 删除表数据 请谨慎执行DROP TABLE和TRUNCATE TABLE命令,删除表后,数据将无法恢复。 从数据库中删除表customer_t1。 1 DROP TABLE customer_t1; 清空一个表的行但不移除该表的定义,可使用DELETE或者TRUNCATE。 删除表customer_t1中所有的行。 1 TRUNCATE TABLE customer_t1; 删除表customer_t1中所有的行。 1 DELETE FROM customer_t1; 删除表customer_t1中所有c_customer_sk为3869的记录: 1 DELETE FROM customer_t1 WHERE c_customer_sk = 3869;
  • 查看表数据 使用系统表pg_tables查询数据库所有表的信息。 1 SELECT * FROM pg_tables; 使用gsql的\d+命令查询表的属性。 1 \d+ customer_t1; 执行如下命令查询表customer_t1的数据量。 1 SELECT count(*) FROM customer_t1; 执行如下命令查询表customer_t1的所有数据。 1 SELECT * FROM customer_t1; 执行如下命令只查询字段c_customer_sk的数据。 1 SELECT c_customer_sk FROM customer_t1; 执行如下命令过滤字段c_customer_sk的重复数据。 1 SELECT DISTINCT( c_customer_sk ) FROM customer_t1; 执行如下命令查询字段c_customer_sk为3869的所有数据。 1 SELECT * FROM customer_t1 WHERE c_customer_sk = 3869; 执行如下命令按照字段c_customer_sk进行排序。 1 SELECT * FROM customer_t1 ORDER BY c_customer_sk;
  • 表分布的定义 GaussDB (DWS)支持的分布方式:复制表(Replication)、哈希表(Hash)和轮询表(Roundrobin)。 轮询表(Roundrobin)分布方式仅8.1.2及以上集群版支持。 策略 描述 适用场景 优势与劣势 复制表(Replication) 集群中每一个DN实例上都有一份全量表数据。 小表、维度表。 Replication优点是每个DN上都有此表的全量数据,在join操作中可以避免数据重分布操作,从而减小网络开销,同时减少了plan segment(每个plan segment都会起对应的线程) Replication缺点是每个DN都保留了表的完整数据,造成数据的冗余。一般情况下只有较小的维度表才会定义为Replication表。 哈希表(Hash) 表数据通过hash方式散列到集群中的所有DN实例上。 数据量较大的事实表。 在读/写数据时可以利用各个节点的IO资源,大幅度提升表的读/写速度。 一般情况下大表(1000000条记录以上)定义为Hash表。 轮询表(Roundrobin) 表的每一行被轮番地发送给各个DN,数据会被均匀地分布在各个DN中。 数据量较大的事实表,且使用Hash分布时找不到合适的分布列。 Roundrobin优点是保证了数据不会发生倾斜,从而提高了集群的空间利用率。 Roundrobin缺点是无法像Hash表一样进行DN本地化优化,查询性能通常不如Hash表。 一般在大表无法找到合适的分布列时,定义为Roundrobin表,若大表能够找到合适的分布列,优先选择性能更好的Hash分布。
  • 创建表 CREATE TABLE命令创建一个表,创建表时可以定义以下内容: 表的列及数据类型。 表约束的定义,即任何用于限制列或者表中数据的表约束或者列约束。参见表约束的定义。 表分布的定义,即表的分布策略,它决定GaussDB(DWS)数据库如何在片(Segment)之间划分数据。 参见表分布的定义。 表存储格式。参见选择GaussDB(DWS)表存储模型。 分区表定义。参见创建和管理GaussDB(DWS)分区表。
  • 使用压缩 表压缩可以在创建表时开启,压缩表能够使表中的数据以压缩格式存储,意味着占用相对少的内存。 对于I/O读写量大,CPU富足(计算相对小)的场景,选择高压缩比;反之选择低压缩比。建议依据此原则进行不同压缩下的测试和对比,以选择符合自身业务情况的最优压缩比。压缩比通过COMPRESSION参数指定,其支持的取值如下: 列存表为:YES/NO/LOW/MIDDLE/HIGH,默认值为LOW。 行存表为:YES/NO,默认值为NO。(行存表压缩功能暂未商用,如需使用请联系技术支持工程师) 各压缩级别所适用的业务场景说明如下: 压缩级别 所适用的业务场景 低级别压缩 系统CPU使用率高,存储磁盘空间充足。 中度压缩 系统CPU使用率适中,但存储磁盘空间不是特别充足。 高级别压缩 系统CPU使用率低,磁盘空间不充裕。 例如,创建一个名为customer_t3的列存压缩表: 1 2 3 4 5 6 7 CREATE TABLE customer_t3 ( state_ID CHAR(2), state_NAME VARCHAR2(40), area_ID NUMBER ) WITH (ORIENTATION = COLUMN,COMPRESSION=middle);
  • 创建数据库 使用CREATE DATABASE语句创建一个新的数据库。 1 CREATE DATABASE mydatabase; 创建数据库时,若数据库名称长度超过63字节,server端会对数据库名称进行截断,保留前63个字节,因此建议数据库名称长度不要超过63个字节,不要使用多字节字符作为对象名。(如果出现因为误操作导致在多字节字符的中间截断进而无法删除数据库对象的现象,请使用截断前的数据库对象名进行删除操作,或将该对象从各个数据库节点的相应系统表中依次删掉。) 数据库名称遵循SQL标识符的一般规则。当前用户自动成为此新数据库的所有者。 如果一个数据库系统用于承载相互独立的用户和项目,建议把它们放在不同的数据库里。 如果项目或者用户是相互关联的,并且可以相互使用对方的资源,则应该把它们放在同一个数据库里,但可以规划在不同的Schema中。 GaussDB(DWS)允许创建的数据库总数目上限为128个。 用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库。
  • 模板和默认数据 GaussDB(DWS)提供了两个模板数据库template0、template1,以及一个默认的数据库gaussdb。 默认情况下,每个新创建的数据库都是基于一个模板数据库。GaussDB(DWS)数据库默认使用template1作为模板,编码格式为SQL_ASCII,且不允许自定义字符编码。若创建数据库时需指定字符编码,请使用template0创建数据库。 请避免使用客户端或其他手段连接及操作两个模板数据库。 通过“show server_encoding”命令可以查看当前数据库存储编码。
  • 声明 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代码。 对业务的执行效率不满意,期望通过调优加快业务执行的情况下,可以参考GaussDB(DWS)性能调优进行调优。性能调优是一项复杂的工程,有些时候无法系统性地说明和解释,而是依赖于DBA的经验判断。尽管如此,GaussDB(DWS)性能调优章节还是期望能尽量系统性的对性能调优方法加以说明,方便应用开发人员和刚接触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.
  • 阅读指引 对于首次接触 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代码。 对业务的执行效率不满意,期望通过调优加快业务执行的情况下,可以参考GaussDB(DWS)性能调优进行调优。性能调优是一项复杂的工程,有些时候无法系统性地说明和解释,而是依赖于DBA的经验判断。尽管如此,GaussDB(DWS)性能调优章节还是期望能尽量系统性的对性能调优方法加以说明,方便应用开发人员和刚接触GaussDB(DWS)的DBA参考。 加载数据。 导入数据介绍数据入库GaussDB(DWS)的方法和途径。 导入最佳实践提供有关快速高效数据导入的经验提示。 管理用户、组和数据库安全。 GaussDB(DWS)数据库安全管理涵盖数据库安全主题。 监控和优化系统性能。 GaussDB(DWS)系统表和系统视图详细介绍您可以从中查询数据库状态并监控查询内容与流程的系统表和视图。 您还应该查阅管理指南了解如何使用GaussDB(DWS)管理控制台检查系统运行状况、监控指标。
  • SQL语法文本格式约定 为了方便对语法使用的理解,在文档中对SQL语法文本按如下格式进行表述。 格式 意义 大写 语法关键字(语句中保持不变、必须照输的部分)采用大写表示。 小写 参数(语句中必须由实际值进行替代的部分)采用小写表示。 [ ] 表示用“[ ]”括起来的部分是可选的。 ... 表示前面的元素可重复出现。 [ x | y | ... ] 表示从两个或多个选项中选取一个或者不选。 { x | y | ... } 表示从两个或多个选项中选取一个。 [x | y | ... ] [ ... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用空格分隔。 [ x | y | ... ] [ ,... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用逗号分隔。 { x | y | ... } [ ... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间以空格分隔。 { x | y | ... } [ ,... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间用逗号分隔。
  • 声明 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.
  • 阅读指引 对于首次接触 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代码。 对业务的执行效率不满意,期望通过调优加快业务执行的情况下,可以参考GaussDB(DWS)性能调优进行调优。性能调优是一项复杂的工程,有些时候无法系统性地说明和解释,而是依赖于DBA的经验判断。尽管如此,GaussDB(DWS)性能调优章节还是期望能尽量系统性的对性能调优方法加以说明,方便应用开发人员和刚接触GaussDB(DWS)的DBA参考。 加载数据。 导入数据介绍数据入库GaussDB(DWS)的方法和途径。 导入最佳实践提供有关快速高效数据导入的经验提示。 管理用户、组和数据库安全。 GaussDB(DWS)数据库安全管理涵盖数据库安全主题。 监控和优化系统性能。 GaussDB(DWS)系统表和系统视图详细介绍您可以从中查询数据库状态并监控查询内容与流程的系统表和视图。 您还应该查阅管理指南了解如何使用GaussDB(DWS)管理控制台检查系统运行状况、监控指标。
  • SQL语法文本格式约定 为了方便对语法使用的理解,在文档中对SQL语法文本按如下格式进行表述。 格式 意义 大写 语法关键字(语句中保持不变、必须照输的部分)采用大写表示。 小写 参数(语句中必须由实际值进行替代的部分)采用小写表示。 [ ] 表示用“[ ]”括起来的部分是可选的。 ... 表示前面的元素可重复出现。 [ x | y | ... ] 表示从两个或多个选项中选取一个或者不选。 { x | y | ... } 表示从两个或多个选项中选取一个。 [x | y | ... ] [ ... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用空格分隔。 [ x | y | ... ] [ ,... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用逗号分隔。 { x | y | ... } [ ... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间以空格分隔。 { x | y | ... } [ ,... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间用逗号分隔。
  • SQL语法文本格式约定 为了方便对语法使用的理解,在文档中对SQL语法文本按如下格式进行表述。 格式 意义 大写 语法关键字(语句中保持不变、必须照输的部分)采用大写表示。 小写 参数(语句中必须由实际值进行替代的部分)采用小写表示。 [ ] 表示用“[ ]”括起来的部分是可选的。 ... 表示前面的元素可重复出现。 [ x | y | ... ] 表示从两个或多个选项中选取一个或者不选。 { x | y | ... } 表示从两个或多个选项中选取一个。 [x | y | ... ] [ ... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用空格分隔。 [ x | y | ... ] [ ,... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用逗号分隔。 { x | y | ... } [ ... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间以空格分隔。 { x | y | ... } [ ,... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间用逗号分隔。
  • 声明 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.
  • 阅读指引 对于首次接触 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代码。 对业务的执行效率不满意,期望通过调优加快业务执行的情况下,可以参考GaussDB(DWS)性能调优进行调优。性能调优是一项复杂的工程,有些时候无法系统性地说明和解释,而是依赖于DBA的经验判断。尽管如此,GaussDB(DWS)性能调优章节还是期望能尽量系统性的对性能调优方法加以说明,方便应用开发人员和刚接触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');
共100000条