postgresql-管理表空间

postgresql-管理表空间

  • 基本概念
  • 创建表空间
    • 用户授权
    • 移动表空间
  • 修改表空间
    • 移动表空间位置
  • 删除表空间

基本概念

PostgreSQL 中,表空间(tablespace)表示数据文件的存放目录,这些数据文件代表了数
据库的对象,例如表或索引。当我们访问表时,系统通过它所在的表空间定位到对应数据文件所
在的位置
在这里插入图片描述
PostgreSQL 中的表空间与其他数据库系统不太一样,它更偏向于一个物理上的概念
表空间的引入为 PostgreSQL 的管理带来了以下好处:

  • 如果数据库集群所在的初始磁盘分区或磁盘卷的空间不足,又无法进行扩展,可以在其
    他分区上创建一个新的表空间以供使用
  • 管理员可以根据数据库对象的使用统计优化系统的性能。例如,可以将访问频繁的索引
    存放到一个快速且可靠的磁盘上,比如昂贵的固态硬盘。与此同时,将很少使用或者对
    性能要求不高的归档数据表存储到廉价的低速磁盘上

PostgreSQL 在集群初始化时将所有的数据文件和配置文件存储到它的数据目录中,通常是
环境变量 PGDATA 的值。默认创建了两个表空间:

  • pg_defaulttemplate1template0 默认的表空间,也是创建其他数据库时的默认表空间;
    对应目录为安装目录下data文件下的base文件夹
    在这里插入图片描述
  • pg_global,用于存储一些集群级别的共享系统表(system catalogs),例如 pg_database、
    pg_control; 对应目录为安装目录下data文件下的global文件夹
    在这里插入图片描述
    官网关于文件和目录的介绍

创建表空间

创建新的表空间使用create tablespace

CREATE TABLESPACE 表空间名称
OWNER 用户名称
LOCATION 目录;

表空间的名称不能以 pg_开头,它们是系统表空间的保留名称;LOCATION 参数必须指定
绝对路径名,指定的目录必须是一个已经存在的空目录,PostgreSQL 操作系统用户(postgres)
必须是该目录的拥有者,以便能够进行文件的读写

-- 创建表空间
create tablespace app_tbs location 'D:\tools\postgresql\data\app_tbs';

在这里插入图片描述
在表空间对应的目录中,创建一个特定版本的子目录(PG_版本_创建时间)
在这里插入图片描述

用户授权

--对于普通用户,需要授予表空间上的对象创建权限才能使用该表空间。我们为用户 tony 授予表空间 app_tbs 上的使用权限:
grant create on tablespace app_tbs to tony;

移动表空间

PostgreSQL 支持在 CREATE DATABASE、CREATE TABLE、CREATE INDEX 以及 ADD
CONSTRAINT 语句中指定 tablespace_name 选项,覆盖默认的表空间(pg_default)。也可以使
用相应的 ALTER …语句将对象从一个表空间移到另一个表空间

-- alter table if exists 表空间名.表名  set tablespace 新的表空间
alter table if exists public.products set tablespace app_tbs;

对于临时表和索引,使用配置参数 temp_tablespaces 进行控制,参考官方文档

修改表空间

如果需要修改表空间的定义,可以使用 alter tablespace 语句:

ALTER TABLESPACE name RENAME TO new_name
ALTER TABLESPACE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER TABLESPACE name SET ( tablespace_option = value [, ... ] )
ALTER TABLESPACE name RESET ( tablespace_option [, ... ] )

第一个语句用于表空间的重命名;第二个语句用于修改表空间的拥有者;最后两个语句用于
设置表空间的参数。
只有表空间的拥有者或超级用户才能修改表空间的定义。

--将表空间 app_tbs 重命名为 hr_tbs
alter tablespace app_tbs rename to hr_tbs;

表空间名称变了,存储的位置没有变
在这里插入图片描述
PostgreSQL 支 持 设 置 的 表 空 间 参 数 包 括seq_page_cost
random_page_cost
effective_io_concurrency

移动表空间位置

目前,PostgreSQL 还不支持使用语句修改表空间的存储路径。但是,可以通过手动的方式移动表空间的位置:

  • 停止 PostgreSQL 服务器进程;
    在这里插入图片描述

  • 移动文件系统中的数据文件位置;

  • 修改 安装目录下data文件夹下表空间的链接,指向新的目录
    在这里插入图片描述

  • 启动 PostgreSQL 服务器进程
    在这里插入图片描述

删除表空间

对于不再需要的表空间,可以使用drop tablespace语句进行删除

DROP TABLESPACE [ IF EXISTS ] name

IF EXISTS 可以避免删除不存在的表空间时产生错误信息。
只有表空间的拥有者或超级用户能够删除表空间。删除表空间之前需要确保其中不存在任何
数据库对象,否则无法删除
其他数据库中也可能存在依赖于被删除表空间的对象,同样需要先进行处理,才能删除表空
间。
删除表空间时,同时会删除文件系统中对应的表空间子目录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/93458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle SQL Developer 中查看表的数据和字段属性、录入数据

在Oracle SQL Developer中,选中一个表时,右侧会列出表的情况;第一个tab是字段的名称、数据类型等属性; 切换到第二个tab,显示表的数据; 这和sql server management studio不一样的; 看一下部门…

代谢组学分析手段(一)

核磁共振技术(Nuclear Magnetic Resonance, NMR) 定义:指核磁矩不为零的原子核在外磁场的作用下,核自旋能级发生塞曼分裂,共振吸收某一特定频率的射频辐射的物理过程。 优点: (1)…

基于Matlab实现logistic方法(源码+数据)

Logistic回归是一种常用的分类算法,适用于二分类问题。本文将介绍如何使用Matlab实现Logistic回归方法,并通过一个示例演示其应用。 文章目录 引言实现步骤1. 数据准备2. 特征缩放3. 模型训练4. 模型评估 源码数据下载 引言 Logistic回归是一种广泛应用…

NodeJS 如何连接 MongoDB

初始化: yarn init使用命令: yarn add mongodb新建 index.js 文件: const MongoClient require(mongodb).MongoClient; const db_name "fly_articleDb"; const url mongodb://127.0.0.1:27017;(async function () {const cli…

常用的分布式ID解决方案原理解析

目录 前言 一:分布式ID的使用场景 二:分布式ID设计的技术指标 三:常见的分布式ID生成策略 3.1 UUID 3.2 数据库生成 3.3 数据库的多主模式 3.4 号段模式 3.5 雪花算法 前言 分布式ID的生成是分布式系统中非常核心的基础性模块&#…

【C语言】宏定义

🚩 WRITE IN FRONT🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四"🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博…

Docker下如何构建包含延迟插件的RabbitMQ镜像

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…

js题解(三)

文章目录 柯里化模块乘法改变上下文 柯里化 已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件: 1、返回一个函数 a,a 的 length 属性值为 1(即显式声明 a 接收一个参数) 2、调用 a 之后&a…

【改造中序遍历算法】1038. 从二叉搜索树到更大和树

1038. 从二叉搜索树到更大和树 解题思路 改造中序遍历算法先遍历右子树 然后累加当前节点的值 再遍历左子树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode…

OpenGLES:绘制一个彩色、旋转的3D圆柱

一.概述 上一篇博文讲解了怎么绘制一个彩色旋转的立方体 这一篇讲解怎么绘制一个彩色旋转的圆柱 圆柱的顶点创建主要基于2D圆进行扩展,与立方体没有相似之处 圆柱绘制的关键点就是将圆柱拆解成:两个Z坐标不为0的圆 一个长方形的圆柱面 绘制2D圆的…

MATLAB算法实战应用案例精讲-【优化算法】混合领导优化算法(HLBO)(附MATLAB和Python代码实现)

代码实现 MATLAB HLBO.m function[Best_score,Best_pos,HLBO_curve]=HLBO(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness)lowerbound=ones(1,dimension).*(lowerbound); % Lower limit for variables upperbound=ones(…

基于Java的老年人体检管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

SNERT预备队招新CTF体验赛-Web(SWCTF)

目录 1、F12 2、robots 3、game1-喂青蛙 4、game 2 - flap bird 5、game 3 - Clash 6、Get&Post 7、sql (1)手工注入 (2)工具注入 8、命令执行漏洞 9、文件上传漏洞 10、文件泄露 11、php反序列化漏洞 12、PHP绕…

数据结构之双链表

双链表 1.复杂方法的图分析2.My_LinkedList代码3.接口MY_lIST4.测试类 1.复杂方法的图分析 2.My_LinkedList代码 package My_liNKEDlIST;public class My_LinkedList implements MY_lIST{static class ListNode{public int val;public ListNode prev;public ListNode next;pub…

WebScoket

一、前端页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>webSocket</title><style type"text/css"></style> </head> <body> <h1>WebSocket<…

Git使用【下】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;标签管理理解标签标签运用 …

MySQL运维之日志管理

目录 一、日志 1.1错误日志 1.2二进制日志 1.2.1格式 1.2.2查看 1.2.3删除 1.3查询日志

SSM - Springboot - MyBatis-Plus 全栈体系(十七)

第三章 MyBatis 五、MyBatis 高级扩展 1. mapper 批量映射优化 1.1 需求 Mapper 配置文件很多时&#xff0c;在全局配置文件中一个一个注册太麻烦&#xff0c;希望有一个办法能够一劳永逸。 1.2 配置方式 Mybatis 允许在指定 Mapper 映射文件时&#xff0c;只指定其所在的…

函数、函数的傅里叶级数展开、傅里叶级数的和函数之间的关系

1.函数、函数的傅里叶级数展开、傅里叶级数的和函数之间的关系 1.1 傅里叶级数中的系数公式推导 我们先来推导一下傅里叶级数中的系数公式&#xff0c;其实笔者已经写过一篇相关笔记&#xff0c;详见&#xff1a;为什么要把一个函数分解成三角函数?(傅利叶级数) f ( x )…

用AI原生向量数据库Milvus Cloud 搭建一个 AI 聊天机器人

搭建聊天机器人 一切准备就绪后,就可以搭建聊天机器人了。 文档存储 机器人需要存储文档块以及使用 Towhee 提取出的文档块向量。在这个步骤中,我们需要用到 Milvus。 安装轻量版 Milvus Lite,使用以下命令运行 Milvus 服务器: (chatbot_venv) [egoebelbecker@ares milvus_…