1.创建表空间newtbs1、 ds_location1,查看表空间;
注:我们可以看到location下,newtbs1与ds_location1分别对应我们所指定的tablespace_1与tablespace_2,这里不能一致,每个表空间必须拥有自己的实际路径,否则会报错
ERROR: find conflict linkpath in pg_tblspc, try a different path
2.创建一个数据库newdb1,默认表空间为newtbs1;
3.创建用户user5,并授予SYSADMIN权限,访问数据库newdb1,在表空间ds_location1上,创建一个表newt1(表结构自定义);
4.查看表所在的表空间;
注:\x是为了更改显示格式便于查看,通过结果我们可以看到tablespace为ds_location1
5.查看表空间newtbs1、 ds_location1上的对象;
由于我们只在表空间ds_location1上创建一个表newt1,因此只有ds_location1表空间上存在对象表newt1,但当我们创建一张新表newt2时未指定表空间,它会在默认表空间,且不显示,如下图所示。
可以通过如下命令查找到默认表空间的对象,我们可以找出我们创建的newt2;
select relname, relkind, relpages,pg_size_pretty(pg_relation_size(a.oid)),reltablespace,relowner
from pg_class a
where a.relkind in ('r', 'i')
and reltablespace='0' and relname='newt2' order by a.relpages desc;
由于默认表空间对象太多,因此添加了一个条件relname='newt2',进行对应查询。