PostgreSQL 里的表空间允许数据库管理员在文件系统里定义那些代表数据库对象的文件存放的位置。 一旦创建了表空间,那么就可以在创建数据库对象的时候引用它。
通过使用表空间,管理员可以控制一个 PostgreSQL 安装的磁盘布局。 这么做至少有两个用处。首先,如果初始化集群所在的分区或者卷用光了空间,而又不能逻辑上扩展或者别的什么操作, 那么表空间可以在一个不同的分区上创建和使用,直到系统可以重新配置。
第二,表空间允许管理员根据数据库对象的使用模式安排数据位置,从而优化性能。比如,一个很频繁使用的索引可以放在非常快的,并且非常可靠的磁盘上,比如一种非常贵的固态设备。而同时,一个存储归档的数据,很少使用的,或者对性能要求不高的表可以存储在一个没那么昂贵,比较慢的磁盘系统上。
要定义一个表空间,使用 CREATE TABLESPACE 命令, 比如:
CREATE TABLESPACE fastspace LOCATION '/mnt/sda1/postgresql/data';
这个位置必须是一个现有的空目录,并且属于 PostgreSQL 系统用户。 所有随后在该表空间创建的对象都将被存放在这个目录下的文件里。
注意: 通常在一个逻辑文件系统上建立多个表空间没有什么意义,因为你无法控制一个逻辑文件系统里的不同文件的位置。不过,PostgreSQL 并不做这方面的任何强制,并且它实际上并不知道你的系统上的文件系统边界。 它只是在你告诉它使用的目录里存储文件。
创建表空间本身必须用数据库超级用户身份进行,但是在那之后,你就可以允许普通数据库用户利用它了。 要做这件事情,在表空间上给这些用户授予 CREATE 权限。
表,索引和整个数据库都可以放在特定的表空间里。想要这么做的话, 在给定表空间上有 CREATE 权限的用户必须把表空间的名字以一个参数的形式传递给相关的命令。 比如,下面的命令在表空间 space1 上创建一个表:
CREATE TABLE foo(i int) TABLESPACE space1;
另外,还可以使用 default_tablespace 参数:
SET default_tablespace = space1;
CREATE TABLE foo(i int);
只要 default_tablespace 设置为不是空字串的任何其他东西, 那么它就为没有明确使用 TABLESPACE 子句的 CREATE TABLE 和 CREATE INDEX 命令提供一个隐含的 TABLESPACE 子句。
与一个数据库相关联的表空间用于存储该数据库的系统表,以及任何使用该数据库的服务器进程创建的临时文件。 另外,如果在创建数据库对象是没有给出 TABLESPACE 子句(不管是明确的还是通过 default_tablespace),那么这是在该数据库里创建这些任何对象使用的缺省表空间。 如果创建数据库时没有给它声明一个表空间,那么它使用与它拷贝的模版数据库相同的表空间。
initdb 自动创建两个表空间。pg_global 表空间用于共享的系统表。 pg_default 是 template1 和 template0 数据库的缺省表空间 (因此,这个表空间也将是任何其它数据库的缺省表空间,除非在 CREATE DATABASE 的时候使用了明确的 TABLESPACE 子句。)
创建了表空间之后,它就可以用于任何数据库,只要请求的用户有足够权限。 这意味着除非我们把使用这个表空间的所有数据库里的所有对象抖删除掉,否则我们不能删除该表空间。
要删除一个空的表空间,使用 DROP TABLESPACE 命令。
要判断一套现有的表空间,检查系统表 pg_tablespace,比如
SELECT spcname FROM pg_tablespace;
psql 程序的 \db 元命令也可以用于列出现有表空间。
为了简化表空间的实现,PostgreSQL 使用了大量符号连接。 这就意味着表空间只能在支持符号连接的系统上使用。
目录 $PGDATA/pg_tblspc 包含指向集群里定义的每个非内置的表空间的符号连接。尽管我们不建议,但是我们还是可能通过手工重定义这些连接来调整表空间的布局。 两个警告:在 postmaster 运行的时候不要这么干;并且,在你重启 postmaster 之后, 更新 pg_tablespace 表以显示新的位置。(如果你不这么做,pg_dump 将继续显示旧的表空间位置。)
在使用postgresql数据库之前通常先创建一个表空间,当然我们也可以使用默认的表空间。
表空间的概念和Oracle的表空间的概念相同,作用就是在磁盘里面划分出一个区域来存储数据,在创建Oracle表空间的时候我们通常会指定表空间的大小。毕竟Postgresql的目的就是做Oracle的开源替代产品。
在cuist项目中创建表空间的SQL脚本如下,在Linux平台下面创建表空间的SQL脚本基本一直,主要是文件存储的位置不同。
-- Tablespace: "cuist"
-- DROP TABLESPACE cuist
CREATE TABLESPACE cuist
OWNER yuchenghu
LOCATION 'D:/Dkits/pgsql/data/cuist';
COMMENT ON TABLESPACE cuist IS 'CUIST project tablespace';
分享到:
相关推荐
PostgreSql+PostGis 创建空间数据库 PostgreSql 是一个功能强大且开源的关系数据库管理系统,它提供了一个强大的平台来存储和管理数据。PostGis 是一个基于PostgreSql 的空间数据库扩展,它提供了对空间数据的支持...
分区表的出现是为了解决大型表带来的性能问题,例如历史数据归档、空间问题和查询性能问题。 分区表的定义包括主表和分区表两部分。主表是创建分区表的模板,是一个正常的普通表,但正常情况下,主表并不存在任何...
项目中有需求要垂直分表,即按照时间区间将数据拆分到n个表中,PostgreSQL提供了分区表的功能。分区表实际上是把逻辑上的一个大表分割成物理上的几小块,提供了很多好处,比如: 1、查询性能大幅提升 2、删除历史...
本篇文章将深入探讨如何在Oracle中创建表空间、用户以及授权,并讲解如何进行数据导入,同时也会简要介绍在PostgreSQL中导入数据的过程。 首先,我们来看Oracle数据库中的操作: 1. **创建表空间**:在Oracle中,...
PostgreSQL与PostGIS的安装和空间数据导入 PostgreSQL是一个功能强大且开源的关系数据库管理系统,而PostGIS则是一个基于PostgreSQL的空间数据库扩展,提供了对空间数据的支持。在本文中,我们将介绍如何安装...
PostGIS是PostgreSQL数据库的一个扩展,它为存储空间对象以及进行空间查询提供了支持。本操作手册主要涉及PostgreSQL 8.4版本的安装流程以及如何在PostgreSQL 8.4数据库中导入空间数据。 首先,进行PostgreSQL 8.4...
PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (表的继承和分区 表的继承和分区 表的继承和分区 表的继承和分区 ) 10 一、表的继承: 一、表的继承: 一、表的继承: .10 PostgreSQL PostgreSQL ...
在描述中提到的`public.sql`文件,很可能是包含了一系列创建和操作数据库对象的SQL语句,例如创建空间表、导入数据或者进行其他结构修改。 "直接运行"这部分意味着,用户可以通过pgAdmin打开这个`public.sql`文件,...
标题中的“postgresql和oracle创建空间索引”涉及的是在两种主流的关系型数据库管理系统(RDBMS)中,如何为地理空间数据创建索引的技术。在处理包含地理信息的数据时,如地图坐标、地理位置等,空间索引能显著提高...
成功连接后,可以在QGIS的图层面板中看到PostgreSQL数据库中的空间表,并像操作本地数据一样进行显示、编辑和分析。 知识点五:shp文件导入PostgreSQL空间数据库 通过QGIS可以方便地将Shapefile格式的空间数据导出...
3. **临时表空间**:PostgreSQL 10 支持为每个会话创建临时表空间,增强了对临时对象的管理,提高了并发性能。 4. **自动 Vacuum 优化**:自动 Vacuum 过程进行了改进,能更好地处理大量删除和更新操作,减少存储...
在本文中,我们将探讨如何在PostgreSQL中进行数据库、表空间、角色和用户的创建。 首先,我们来看创建数据库的过程。在PostgreSQL中,可以通过图形界面工具如pgAdmin或者命令行工具psql创建数据库。例如,创建一个...
【PostgreSQL在铁路空间数据管理中的应用】 文章摘要提到,PostgreSQL是一种开源数据库管理系统,特别适合处理铁路空间地理数据。本文探讨了利用PostgreSQL管理铁路空间数据的优势,并设计了铁路地理空间数据服务...
5. 高级特性:包括但不限于表分区、异步复制、流复制、写前日志(WAL)机制、表空间、物化视图等,这些特性使Postgresql能够应对大规模数据操作和保证数据的安全性与一致性。 6. Postgresql与编程语言的结合:...
7. **安全与权限**:PostgreSQL提供了精细的权限控制机制,允许管理员设置用户访问权限、角色、表和函数的权限,以保证数据的安全。 8. **备份与恢复**:定期备份是数据库管理的重要环节。PostgreSQL支持多种备份...
在PostgreSQL中,表分区是一种优化数据库性能的技术,它允许将大表的数据分割成更小、更易管理的部分,每个部分称为一个分区。这有助于提高查询速度,减少维护成本,并优化存储空间。以下是对创建表分区的详细说明:...
- 表空间加密:支持对表和索引的数据进行透明加密,增强数据安全性。 在使用PostgreSQL 9.6时,你可以利用其丰富的功能,如窗口函数、递归公共表表达式、JSONB数据类型和多版本并发控制(MVCC),以构建高效、可靠...
PostgreSQL 是一款强大的对象关系型数据库管理系统,而 PostGIS 是在其基础上扩展的,提供了空间数据类型和相关的操作功能,使得 PostgreSQL 能够处理地理空间信息。 PostgreSQL 14 的主要特性包括: 1. 性能提升...
本文档介绍了如何基于PostgreSQL数据库,安装PostGIS插件后,创建空间数据表,并使用Node.js + Express服务空间数据表,在前端采用Cesium加载空间数据,实现空间数据可视化。 一、创建空间数据库 1. 安装PostGIS...