PostgreSQL数据库管理 第五章表空间管理
PostgreSQL数据库管理 第五章表空间管理
概述
PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统(RDBMS)。支持丰富的数据类型(如JSON和JSONB类型,数组类型)和自定义类型。PostgreSQL内存页面的默认大小是8kB。
PostgreSQL的层级结构
1.逻辑层次关系
Database Cluster(instance)--》Database--》Schema--》Objects(Table)-->Tuples
2.物理层次关系
Database Cluster --》Tablespaces --》Files --》 Blocks
5.1 表空间概念与数据库关系
在 PostgreSQL 中,表空间(tablespace)表示数据文件的存放目录,这些数据文件代表了数据库的对象,例如表或索引。当我们访问表时,系统通过它所在的表空间定位到对应数据文件所在的位置。
在PostgreSQL中表空间实际上就是给表或者索引指定一个存储目录。
在Oracle,db2数据库中;一个表空间只属于一个数据库使用;而一个数据库可以拥有多个表空间。属于"一对多"的关系
在PostgreSQL集群中;一个表空间可以让多个数据库使用;而一个数据库可以使用多个表空间。属于"多对多"的关系。
5.2 表空间作用
通过使用表空间,管理员可以控制一个PostgreSQL安装的磁盘布局。这么做至少有两个用处。
1 如果初始化集簇所在的分区或者卷用光了空间,而又不能在逻辑上扩展或者做别的什么操作,那么表空间可以被创建在一个不同的分区上,直到系统可以被重新配置。
2 表空间允许管理员根据数据库对象的使用模式来优化性能。例如,一个很频繁使用的索引可以被放在非常快并且非常可靠的磁盘上,如一种非常贵的固态设备。同时,一个很少使用的或者对性能要求不高的存储归档数据的表可以存储在一个便宜但比较慢的磁盘系统上。
5.3 系统自带表空间
1表空间pg_default是用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。对应存储目录$PADATA/base/
2 表空间pg_global用来存放系统字典表;对应存储目录$PADATA/global/
5.4 表空间查看
postgres=# \db
postgres=# \db+ 详细信息
5.4.1 表空间和数据库关系
select oid, datname, datlastsysoid, dattablespace from pg_catalog.pg_database order by 1,2;
postgres=# select oid,* from pg_catalog.pg_tablespace;
5.4.2 表空间和对象的关系
5.4.3 查看表的存储路径与大小
查看单表大小
select pg_size_pretty(pg_relation_size('test1'));
查看所有表的大小
SELECT
table_name,
pg_size_pretty(table_size) AS table_size,
pg_size_pretty(indexes_size) AS indexes_size,
pg_size_pretty(total_size) AS total_size
FROM (
SELECT
table_name,
pg_table_size(table_name) AS table_size,
pg_indexes_size(table_name) AS indexes_size,
pg_total_relation_size(table_name) AS total_size
FROM (
SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
FROM information_schema.tables
) AS all_tables
ORDER BY total_size DESC
) AS pretty_sizes;
查看表的物理存储路径
select pg_relation_filepath('test1');
5.5 创建表空间
目录表空间目录必须是一个已有的空目录,并且属于PostgreSQL操作系统用户
[postgres@Redhat7 ~]$ mkdir /pgdb/jsdb
CREATE TABLESPACE tablespace_name [ OWNER { new_owner | CURRENT_USER | SESSION_USER } ] LOCATION 'directory'
atlasdb=# create tablespace jsdb owner postgres location '/pgdb/jsdb';
atlasdb=# create tablespace jkdb owner postgres location '/pgdb/jkdb';
atlasdb=# CREATE TABLE t2(id int) tablespace jsdb;
insert into t2 valuse (1);
atlasdb=# CREATE TABLE t3(id int) tablespace jkdb;
atlasdb=# insert into t2 values (1);
INSERT 0 1
Time: 0.670 ms
atlasdb=# insert into t3 values (1);
INSERT 0 1
Time: 0.602 ms
5.6 为数据库指定默认表空间
查看数据库默认表空间参照5.4.1
操作失败不能对修改数据库有连接
atlasdb=# alter database atlasdb set tablespace jsdb;
ERROR: cannot change the tablespace of the currently open database
Time: 0.239 ms
成功
postgres=# alter database atlasdb set tablespace jsdb;
ERROR: some relations of database "atlasdb" are already in tablespace "jsdb"
HINT: You must move them back to the database's default tablespace before using this command.
Time: 101.146 ms
错误:数据库“ATLASDB”的一些关系已经在表空间“JSDB”中
提示:在使用此命令之前,必须将它们移回数据库的默认表空间。
atlasdb=# ALTER TABLE t2 SET TABLESPACE pg_default;
ALTER TABLE
postgres=# alter database atlasdb set tablespace jsdb;
ALTER DATABASE
5.7 移动对象到新表空间
atlasdb=# ALTER TABLE t2 SET TABLESPACE jsdb;
ALTER TABLE
atlasdb=# ALTER TABLE t3 SET TABLESPACE jsdb;
ALTER TABLE
atlasdb=# ALTER TABLE test1 SET TABLESPACE jsdb;
ALTER TABLE
5.8 删除表空间
atlasdb=# DROP TABLESPACE jkdb;
DROP TABLESPACE
atlasdb=# DROP TABLESPACE jsdb;
ERROR: tablespace "jsdb" is not empty
5.X 疑问
表空间和对象的关系如何查询
PostgreSQL数据库管理 第五章表空间管理相关推荐
- 《C++应用程序性能优化::第五章动态内存管理》学习和理解
<C++应用程序性能优化::第五章动态内存管理>学习和理解 说明:<C++应用程序性能优化> 作者:冯宏华等 2007年版. 2010.8.29 cs_wuyg@126.com ...
- SYSTEM 表空间管理及备份恢复
标签: systemoraclesqldatabasefile数据库 2010-11-28 18:14 12689人阅读 评论(0) 收藏 举报 分类: -----Oracle备份恢复(16) 版权声 ...
- MySQL的表空间管理
表空间: MySQL没有真正意义上的表空间管理. MySQL的Innodb包含两种表空间文件模式,默认的共享表空间和每个表分离的独立表空间. 一般来说,当数据量很小的时候建议使用共享表空间的管理方式. ...
- Oracle undo 表空间管理
Oracle 的Undo有两种方式: 一是使用undo 表空间,二是使用回滚段. 我们通过 undo_management 参数来控制使用哪种方式,如果设为auto,就使用UNDO 表空间,这时必须要 ...
- ORACLE表空间管理维护
1:表空间概念 在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示, ...
- IT项目管理总结:第五章 项目范围管理
第五章 项目范围管理 什么是项目范围管理 –范围(scope):指开发项目产品所涉及的所有工作和用来开展工作的所有过程 –可交付成果(deliverable):指作为项目的一部分而生产的产品 –项目范 ...
- 本地区间管理 oracle,Oracle:本地表空间管理,字典表空间管理
本地管理表空间 一.概述 1.理解本地管理表空间的由来 2.理解什么是字典管理表空间及工作原理 3.理解本地管理表空间的优势(为什么要使用本地管理表空间) 4.理解本地管理表空间的内部结构 5.理解字 ...
- UNDO 表空间管理
UNDO 表空间管理 一.管理UNDO数据的两种方式 自动(9i新特性)和手动(在9i之前唯一的管理方式). 二.Undo段 在一个进程修改数据库过程中存放旧的数据,包括数据没有修改之前的位置和值.U ...
- oracle表空间管理图形界面,Oracle表空间管理和优化
Oracle 表空间管理和优化 1. TOM大神的表查询和授权语句create or replace procedure SHOW_SPACE(P_SEGNAME IN VARCHAR2, Oracl ...
最新文章
- WMI问题全解(Windows管理规范)
- 团队项目-北航MOOC系统Android客户端 NABC
- Dynamic Web Module 3.0 requires Java 1.6 or newer
- split命令用法(shell)
- Gartner:基础设施和运营领域10大技术趋势
- linux安装系统配置环境变量,Linux系统安装jdk及配置环境变量的方法
- Standard C++ Episode 7
- 点工转自动化速成指南
- 四川大学计算机软件技术基础,四川大学《计算机软件技术基础》复习题2及答案#.doc...
- 架构师学习笔记(持续更新)
- netcore之Http请求
- Xcode 9: An error occurred uploading to the iTunes Store. iTunes Store Operation Failed
- Python数据分析与挖掘实战总结
- 系统集成项目管理工程师
- JavaScript批量定义对象
- n−皇后问题 (dfs)
- Android程序员简历
- 人工智能进化史:从麦卡锡到“索菲亚” | 精选
- 2013年12月甘肃省广播电台网络影响力排名
- python创建窗体_python生成窗口