DWS的表空间布局介绍

举报
携剑笑红尘 发表于 2021/05/06 15:50:09 2021/05/06
【摘要】 一、DWS表空间介绍          DWS中的表空间实际上就是数据文件系统位置上的一个目录而已,目录中存放了所有的其他对象,例如:表、索引等等;                                                                    DWS的表空间又分为:默认表空间:pg_default(base)、全局共享系统表表空间pg_global(g...

一、DWS表空间介绍

          DWS中的表空间实际上就是数据文件系统位置上的一个目录而已,目录中存放了所有的其他对象,例如:表、索引等等;                                                                    DWS的表空间又分为:默认表空间:pg_default(base)、全局共享系统表表空间pg_global(global)、用户自定义表空间。                                                                        DWS的集群中,每个数据库都会在数据目录的base目录下生成一个子目录,文件目录的名称与数据库的OID一一对应,一个表空间可以让多个数据库使用;数据库的目录也可以分布在多个表空间上,也就是说同一个数据库oid可以存在于不同表空间,属于“多对多”关系。(在Oracle中,一个表空间只属于一个数据库使用,而一个数据库可以使用多个表空间,属于一对多的关系)。

二、DWS默认表空间--pg_default

        pg_default 表空间用来存储系统目录对象、用户表、用户表index等等,对应的目录是数据目录下的base目录;                                                                                      1) :目录名称是"1"的表示是系统数据库template1的数据库对象存储目录;                                                                                                                                                  2) :目录数字倒数第二的是系统数据库template0的数据库对象存储目录;                                                                                                                                                  3) :目录数字倒数第三的是系统数据库postgres的数据库对象存储目录;                                                                                                                                                    4) :其他数字目录是用户建立的数据库目录;                                                                                                                                                                                              5) :目录的命名方法就是数据库的oid值;                                                                                                                                                                                                    6) :目录中_fsm的文件记录的是每个数据块的空闲空间;                                                                                                                                                                              7) :目录中_vm文件让vacuum操作高效工作,被标记为无效的记录需要用vacuum/vacuum full 来进行清理操作,需要一个文件来标识哪些数据块中存在无效的记录来达到高效的清理。

三、DWS系统表空间--pg_global空间

        pg_global空间是存放共享的全局系统表的位置,文件种类也类似base目录,一般在数据目录下的global目录;大多数的系统目录都是在数据库创建过程中从模板数据库中拷贝过来的,因此都是与数据库相关的。少数的目录在物理上是在一个集簇的所有数据库间中共享的。常见的使用的全局系统表如下:

      系统表名 用途
pg_pltemplate 存储过程语言的“模板”信息
pg_tablespace 存储表空间的信息
pg_shdepend 记录数据库对象和共享对象(比如角色)之间的依赖关系
pg_authid 存储有关数据库认证标识符(角色)的信息
pg_auth_members 存储显示角色之间的成员关系
pg_database 存储关于可用数据库的信息
pg_resource_pool 提供了数据库资源池的信息
pg_user_status 提供了访问数据库用户的状态。需要有系统管理员权限才可
以访问此系统表
pg_workload_action 存储query_band的信息
pgxc_group 存储节点组信息
pgxc_node 存储集群节点信息
pg_jobs 存储用户创建的定时任务的任务详细信息

       

四、DWS表空间管理相关命令

      1、查看表空间                                                                                                                                                                                                                                                         select * from pg_tablespace;  

      2、创建表空间                                                                                                                                                                                                                                                         CREATE TABLESPACE tablespace_name [ OWNER user_name ] RELATIVE LOCATION 'directory' [ MAXSIZE 'space_size' ] [with_option_clause];                         其中:  RELATIVE

                           使用相对路径,LOCATION目录是相对于各个CN/DN数据目录下的。

                           目录层次:CN和DN的数据目录/pg_location/相对路径

                           相对路径最多指定两层

      3、删除表空间                                                                                                                                                                                                                                                           drop tablespace tablespace_name;            

       4、给数据库指定默认表空间

                 ALTER DATABASE name SET TABLESPACE new_tablespace;

        5、将表从一个表空间移到另一个表空间

                ALTER TABLE name SET TABLESPACE new_tablespace;

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。