首页主机资讯ubuntu pgadmin如何管理表空间

ubuntu pgadmin如何管理表空间

时间2026-01-19 23:46:04发布访客分类主机资讯浏览471
导读:Ubuntu 下用 pgAdmin 管理 PostgreSQL 表空间 一 前置准备与路径规划 以操作系统用户 postgres 在 Ubuntu 上预先创建目标目录,并确保权限正确(示例:/data/ts_fast、/data/ts_s...

Ubuntu 下用 pgAdmin 管理 PostgreSQL 表空间

一 前置准备与路径规划

  • 以操作系统用户 postgres 在 Ubuntu 上预先创建目标目录,并确保权限正确(示例:/data/ts_fast、/data/ts_slow):
    • sudo mkdir -p /data/ts_fast /data/ts_slow
    • sudo chown postgres:postgres /data/ts_fast /data/ts_slow
  • 表空间本质是一个已存在且为空的目录,PostgreSQL 会在 $PGDATA/pg_tblspc 下为其创建符号链接;创建表空间通常需要 超级用户 权限。
  • 常用系统表空间:pg_default(默认数据目录)、pg_global(共享系统目录)。

二 在 pgAdmin 中创建与授权

  • 连接实例:左侧展开 Servers → PostgreSQL xx,确认能正常连上目标实例。
  • 新建表空间:
    • 在左侧展开实例节点,右键 Tablespaces → Create → Tablespace…
    • 填写 Name(如:ts_fast),在 Location 填入准备好的目录(如:/data/ts_fast),设置 Owner(可选);
    • 保存后,pgAdmin 会在后台执行类似:CREATE TABLESPACE ts_fast LOCATION ‘/data/ts_fast’;
  • 授权普通用户使用表空间(GUI 通常无直接“授权”按钮,建议在 Query Tool 执行 SQL):
    • GRANT CREATE ON TABLESPACE ts_fast TO your_user;
    • 如需设为某用户的默认表空间:ALTER USER your_user SET default_tablespace = ts_fast;
  • 创建对象时指定表空间(示例 SQL,可在目标库的 Query Tool 执行):
    • 建表:CREATE TABLE t(id serial) TABLESPACE ts_fast;
    • 建索引:CREATE INDEX ON t(id) TABLESPACE ts_slow;
    • 建库并指定默认表空间:CREATE DATABASE db1 TABLESPACE ts_fast;
  • 说明:索引不会继承表的表空间,需要显式指定;临时对象受参数 temp_tablespaces 影响。

三 查看与日常运维

  • 在 pgAdmin 左侧展开 Tablespaces 节点,可查看表空间列表、名称、所有者与位置;也可在目标库的 Query Tool 查询系统目录:
    • 列出表空间:SELECT spcname, spcowner::regrole, spclocation FROM pg_tablespace ORDER BY spcname;
    • 查看对象所在表空间:SELECT schemaname, tablename, tablespace FROM pg_tables WHERE schemaname=‘public’;
  • 修改与清理:
    • 重命名表空间:ALTER TABLESPACE old_name RENAME TO new_name;
    • 调整拥有者:ALTER TABLESPACE ts_fast OWNER TO new_owner;
    • 删除表空间:DROP TABLESPACE ts_fast; (必须为空,且所有引用对象已删除;删除前建议先移动或清理对象)

四 迁移对象与常见排错

  • 迁移现有表或索引到新表空间(在对象所在库执行):
    • 表:ALTER TABLE t SET TABLESPACE ts_fast;
    • 索引:ALTER INDEX t_id_idx SET TABLESPACE ts_slow;
    • 大数据量对象迁移会重写数据,建议在低峰期执行,并关注锁与长事务影响。
  • 常见问题与要点:
    • 目录权限与属主:必须为 postgres:postgres,否则创建或写入失败;
    • 目录必须为空且已存在;
    • 不要将表空间放在临时/可移动文件系统上,表空间丢失会导致集簇不可用;
    • 删除前确保对象已全部移走;
    • $PGDATA/pg_tblspc 下可见到指向实际目录的符号链接,勿在数据库运行时手工改动这些链接。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu pgadmin如何管理表空间
本文地址: https://pptw.com/jishu/786376.html
ubuntu pgadmin如何查看执行计划 ubuntu pgadmin如何优化查询

游客 回复需填写必要信息