[经验分享]Greenplum 数据库指定表空间问题

ronpris
ronpris
ronpris
253
文章
1
评论
2020年5月6日21:12:32 评论 103 1631字阅读5分26秒

在创建数据库并且指定表空间时候,有两种方式,对这两种方式进行了对比,发现了一些问题,分享给大家。

前提:文件空间以及相关表空间都创建完了, 文件空间为ccdb_fs,表空间为ts_ccdb_01,关于文件空间和表空间的创建可参考[新手教程]GP数据库创建文件空间及表空间

情景一:

(1)创建数据库:

create database ccdb;

(2)对创建的数据库进行指定默认表空间:

alter database ccdb set defalut_tablespace=ts_ccdb_01;

(3)查看数据库的默认表空间:

select d.datname,p.spcname from pg_database d, pg_tablespace p where d.datname='ccdb' and p.oid = d.dattablespace;

(4)按照以上进行创建数据库,指定的默认表空间应该还是pg_default

(5)插入表数据函数:

insert into tb01(id) select generate_series(1, 10000000) as id;

(6)查看文件空间对应的目录:

SELECT spcname as tblspc, fsname as filespc,fsedbid as seg_dbid, fselocation as datadir FROM pg_tablespace pgts, pg_filespace pgfs,pg_filespace_entry pgfse WHERE pgts.spcfsoid=pgfse.fsefsoid AND pgfse.fsefsoid=pgfs.oid ORDER BY tblspc, seg_dbid;

(7)会发现pg_system和ccdb_fs都会存在变化

(8)通过pg_tables查看所创建的表的tablespace列为其指定的表空间,即ts_ccdb_01

(9)由此得出按照以上建库并指定表空间,个人认为不妥。

情景二:

(1)创建数据库:

CREATE DATABASE ccdb WITH OWNER = gpadmin ENCODING = 'UTF8' TABLESPACE = ts_ccdb_01 CONNECTION LIMIT = -1;

(2)查看数据库对应的默认表空间

select d.datname,p.spcname from pg_database d, pg_tablespace p where d.datname='ccdb' and p.oid = d.dattablespace;

(3)按照上述进行建库得出的默认表空间应为指定的ts_ccdb_01

(4)查看文件空间目录:

SELECT spcname as tblspc, fsname as filespc,fsedbid as seg_dbid, fselocation as datadir FROM pg_tablespace pgts, pg_filespace pgfs,pg_filespace_entry pgfse WHERE pgts.spcfsoid=pgfse.fsefsoid AND pgfse.fsefsoid=pgfs.oid ORDER BY tblspc, seg_dbid;

(5)进行insert数据观察文件大小变换,发现pg_system无变化,而cmcc_fs一直存在变化

insert into tb01(id) select generate_series(1, 10000000) as id;

(6)通过pg_tables查看所创建的表的tablespace列为空,而不是ts_ccdb_01

(7)按照以上建库,数据存储没有问题,但是pg_tables无显示。

以上两种指定表空间的方式,情景一是通过pg_tables能看到对应的表所在的表空间,但是对应的数据文件变化有问题,而情景二方式指定的表空间是对应的文件空间会变化,也就是数据存储正常,但是在pg_tables里面却看不到所指定的表空间,个人理解感觉还是按照情景二方式指定表空间更好一些,都是个人观点,仅供参考。

继续阅读
[基础教程]Mysql单表查询优先级实例讲解 原创推荐

[基础教程]Mysql单表查询优先级实例讲解

这篇文章主要介绍了MySQL单表查询操作,结合实例形式详细分析了mysql单表查询的语法、约束、分组、聚合、过滤、排序等相关原理、操作技巧与注意事项,需要的朋友可以参考下 本文实例讲述了MySQL单表...
[基础教程]Linux系统常用文件管理命令 原创推荐

[基础教程]Linux系统常用文件管理命令

这篇文章主要介绍了linux文件管理命令,结合实例形式分析Linux文件管理的显示、查看、统计等相关操作命令使用技巧,需要的朋友可以参考下 本文实例讲述了linux文件管理命令。分享给大家供大家参考,...