postgresql 表空间创建、删除

表空间:字面上理解就是表存储的物理空间,其实包括数据库的表、索引、序列等。

可以将表空间创建在服务器的不同分区,这样做的好处有:

一、如果初始化集群所在分区已经用光,可以方便的其他分区上创建表空间已达到扩容的目的。

二、对于频繁访问的数据可以存储在性能较高、较快的磁盘分区上,而不常用的数据存储在便宜的较慢的磁盘分区上。

语法:

postgres=# \h create tablespace
Command:     CREATE TABLESPACE
Description: define a new tablespace
Syntax:
CREATE TABLESPACE tablespace_name
    [ OWNER user_name ]
    LOCATION ‘directory‘
    [ WITH ( tablespace_option = value [, ... ] ) ]

用户必须有表空间所在目录访问权限,所以在创建表空间之前需要在对应分区下创建相应的目录,并为其分配权限。

[[email protected] ~]# mkdir /usr/local/pgdata
[[email protected] ~]# chown postgres:postgres /usr/local/pgdata/

创建表空间示例:

postgres=# create tablespace tbs_test owner postgres location ‘/usr/local/pgdata‘;
CREATE TABLESPACE

创建表空间成功后,可在数据库集群目录下看到一个新增的目录pg_tblspc下有一个连接文件51276,指向到/usr/local/pgdata下

[[email protected] ~]# ll /mnt/syncdata/pgsql941/data/pg_tblspc/
total 0
lrwxrwxrwx. 1 postgres postgres 17 Aug 30 02:06 51276 -> /usr/local/pgdata
[[email protected] ~]# ll /usr/local/pgdata/
total 4
drwx------. 2 postgres postgres 4096 Aug 30 02:06 PG_9.4_201409291

在此表空间内创建表:

postgres=# create table test(a int) tablespace tbs_test;
CREATE TABLE

现在在表空间目录下就会新增一个test表对应的文件:

[[email protected] ~]# ll /usr/local/pgdata/PG_9.4_201409291/13003/51277
-rw-------. 1 postgres postgres 0 Aug 30 02:15 /usr/local/pgdata/PG_9.4_201409291/13003/51277

其中51277对应的是test表的relfilenode,13003是数据库postgres的oid。

postgres=# select oid,datname from pg_database where datname = ‘postgres‘;
  oid  | datname
-------+----------
 13003 | postgres
(1 row)

postgres=# select relname,relfilenode from pg_class where relname=‘test‘;
 relname | relfilenode
---------+-------------
 test    |       51277
(1 row)

删除表空间:

postgres=# \h drop tablespace
Command:     DROP TABLESPACE
Description: remove a tablespace
Syntax:
DROP TABLESPACE [ IF EXISTS ] name

删除表空间前必须要删除该表空间下的所有数据库对象,否则无法删除。

如:

postgres=# drop tablespace if exists tbs_test;
ERROR:  tablespace "tbs_test" is not empty

删除刚才在此表空间创建的表test,然后再删除表空间。

postgres=# drop table if exists test;
DROP TABLE
postgres=# drop tablespace if exists tbs_test;
DROP TABLESPACE
时间: 2024-10-12 23:14:41

postgresql 表空间创建、删除的相关文章

oracle数据库表空间创建&导入&导出

1.表空间创建 --删除表空间 drop tablespace EVPBDMGIS including contents and datafiles; --删除用户 drop user EVPBDMGIS cascade; --创建表空间 create tablespace EVPBDMGIS datafile 'D:\app\Administrator\oradata\orcl\EVPBDMGIS.DBF' size 500m reuse autoextend on next 16m maxs

PostgreSQL表空间、模式、表、用户/角色之间的关系

PostgreSQL表空间.模式.表.用户/角色之间的关系是本文我们主要要介绍的内容,表空间,数据库,模式,表,用户,角色之间的关系到底是怎样的呢?接下来我们就开始介绍这一过程. 实验出角色与用户的关系 在PostgreSQL中,存在两个容易混淆的概念:角色/用户.之所以说这两个概念容易混淆,是因为对于PostgreSQL来说,这是完全相同的两个对象.唯一的区别是在创建的时候: 1.我用下面的psql创建了角色kanon:CREATE ROLE kanon PASSWORD 'kanon';接着

oracle表空间创建及管理

一.数据文件和数据库逻辑存储结构: 一个表空间包含一个或多个数据文件,一个表空间包含一个或多个段,一个段包含一个或多个区,一个区包含一个或多个连续的数据库块,一个数据库块包含一个或多个操作系统块.段是对象存储基本单元,段中的区总是在同一个表空间中,可以跨数据文件.区是空间分配的基本单元,连续的数据块,不能跨数据文件.块是I/O 的基本单元,不能跨数据文件. 表空间的分类永久表空间 存放永久性数据,如表,索引等.临时表空间 不能存放永久性对象,用于保存数据库排序,分组时产生的临时数据.UNDO表空

Oracle tablespace 表空间创建和管理

1.表空间的概述 1. 表空间是数据库的逻辑组成部分. 2. 从物理上讲,数据库数据存放在数据文件中: 3. 从逻辑上讲,数据库是存放在表空间中,表空间由一个或者多个数据文件组成. 2.oracle的逻辑组成 1.oracle 的逻辑结构包含 表 空间 段 区 块 2.数据库是由表空间构成,表空间又是有段构成,段是由区构成,区是由 oracle的块构成,这样做是为了提高数据库的效率 3.作用 A.控制数据库占用的磁盘空间 B dba 可以将不同数据类型部署到不同的位置,这样 有利于i/0的性能,

ORACLE-用户及表空间创建命令总结

博文说明[前言]: 本文将通过个人口吻介绍记录用户及表空间创建相关命令,在目前时间点[2017年5月16号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 正文: 一:创建表空间 此空间用用于数据存储[存储表.function.存储过程等,即存储数据结构以及真实数据,使用实际物理存储区域] 示例1:创建表空间和表空间初始数据文件 create tablespace xxxx_db d

c# 注册表操作,创建,删除,修改,判断节点是否存在

用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除.键值的创建(设置值.修改),读取和 删除.判断注册表项是否存在.判断键值是否存在. 准备工作: 1:要操作注册表,我们必须要引入必要的命名空间: C#代码    using Microsoft.Win32; 在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~~ 2:命名空间里面提供了一个类:RegistryKey 利用它我们可以定位到注册表最开头的分支: ClassesRoot,CurrentUser,Use

oracle创建表空间 创建用户指定表空间并授权

1.创建表空间 例如: (1)表空间名为myplace: (2)数据文件路径为E:\oracle\oracle_home\oradata\myspace (3)文件名为mydbf.dbf,空间大小为32M (4)设置表空间自动扩展,每次扩展32M,最大空间为2048M (5)本地管理表空间 create tablespace myspace     logging       datafile 'E:\oracle\oracle_home\oradata\myspace\mydbf.dbf' 

PostgreSQL表空间、数据库、模式、表、用户/角色之间的关系

看PostgreSQL9的官方文档,我越看越迷糊,这表空间,数据库,模式,表,用户,角色之间的关系怎么在PostgreSQL里这么混乱呢?经过中午的一个小实验,我逐渐理清了个中来龙去脉.下面我来还原我的试验,并循序讲清其中关系. 首先,实验出角色与用户的关系    在PostgreSQL中,存在两个容易混淆的概念:角色/用户.之所以说这两个概念容易混淆,是因为对于PostgreSQL来说,这是完全相同的两个对象.唯一的区别是在创建的时候: 1.我用下面的psql创建了角色kanon:   CRE

oracle 建表空间->创建用户并把表空间分配给用户->给用户授权->导库

首先注意:我参考网上使用的sysdba模式(normal)登陆的,其他的模式建不了用户(个人没有进行其他模式的表空间尝试,如有人尝试欢迎补充,感激不尽) 表空间相当于表的容器(一下所有的操作都适用于oracle10g): --建表空间 create tablespace SOA                        --soa是表空间的名字 datafile 'D:\ a.dbf' size 50m                     --  'D:\ a.dbf' 表空间的存储路径