暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

postgreSQL 中,关于默认表空间 pg_default 和 pg_global 的以下说法,哪些是正确的?

原创 小伙 2025-04-08
379

在 PostgreSQL 中,关于默认表空间 pg_default 和 pg_global 的以下说法,哪些是正确的?

A

pg_default 负责存储整个集群中所有数据库共享的系统表。

B

当创建用户时,如果未指定表空间,默认存储在 pg_global 中。

C

当创建用户时,如果未指定表空间,默认存储在 pg_default 中。

D

pg_global 负责存储整个集群中所有数据库共享的系统表。


  1. 选项D:pg_global 负责存储整个集群中所有数据库共享的系统表
    • 正确pg_global表空间专门用于存储集群级别的共享系统表,例如pg_database(数据库元数据)、pg_authid(用户权限信息)等。这些表对所有数据库可见且共享。
    • 物理存储路径为PGDATA/global/,与具体数据库无关。

  2. 选项C:当创建用户时,如果未指定表空间,默认存储在 pg_default 中
    • 正确pg_default是用户对象的默认表空间。当创建用户表、索引或数据库时,若未显式指定表空间,所有数据会存储在pg_default中。
    • 物理存储路径为PGDATA/base/,每个数据库在该目录下对应一个子目录(以数据库OID命名)。


错误选项分析

  1. 选项A:pg_default 负责存储整个集群中所有数据库共享的系统表
    • 错误pg_default仅存储用户数据单个数据库的系统目录对象(例如用户创建的表、索引等),而非集群级共享系统表。集群级共享系统表由pg_global管理。

  2. 选项B:当创建用户时,如果未指定表空间,默认存储在 pg_global 中
    • 错误pg_global仅用于存储全局系统表,普通用户对象无法存储在此表空间中。用户对象的默认存储位置始终是pg_default


补充说明

• 表空间的作用
• pg_defaultpg_global是PostgreSQL初始化集群时自动创建的两个表空间。
• 用户可通过CREATE TABLESPACE自定义表空间,但名称不能以pg_开头(保留给系统表空间)。
• 查询表空间信息
• 使用\db命令查看所有表空间列表。
• 通过系统表pg_tablespace获取详细信息(如OID、路径等)。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论