当前位置: 首页 > article >正文

pg入门3—详解tablespaces2

pg默认的tablespace的location为空,那么如果表设置了默认的tablespace,数据实际上是存哪个目录的呢?

在 PostgreSQL 中,如果你创建了一个表并且没有显式指定表空间(tablespace),或者表空间的 location 为空,数据将存储在数据库集群的默认数据目录中。这是 PostgreSQL 的数据存储默认行为。

1. 默认表空间和默认位置

PostgreSQL 有一个默认的表空间,叫 pg_default,它并没有设置显式的物理位置。当你没有指定表空间时,数据会被存储在 pg_default 表空间下。pg_default 表空间的位置实际上指向 PostgreSQL 数据目录下的 base 目录。

  • PostgreSQL 的数据目录通常是在初始化数据库集群时通过 initdb 指定的,或者在 PostgreSQL 的配置文件 postgresql.conf 中通过 data_directory 参数设置。
  • pg_default 表空间默认情况下会指向这个数据目录的 base 目录。

2. 数据存储位置

数据的存储位置具体在数据目录下的 base 目录中。每个数据库都有一个对应的 OID(对象标识符),在 base 目录中会有一个与数据库 OID 对应的子目录。表的数据最终会存储在该子目录中。

例如

  • 假设你的 PostgreSQL 数据目录是 /var/lib/postgresql/data/,那么:
    • 默认表空间 pg_default 指向的路径将是 /var/lib/postgresql/data/base/
    • 每个数据库会在 base 目录下有一个子目录,该子目录的名字是该数据库的 OID。

3. 如何查看数据库的 OID

你可以通过以下 SQL 查询来查看数据库的 OID:

SELECT oid, datname FROM pg_database;

每个数据库在 base 目录下的子目录名就是这个 OID。

4. 举例说明

假设 PostgreSQL 的数据目录位于 /var/lib/postgresql/data/,且你在名为 mydb 的数据库中创建了一张表,而没有指定表空间。那么:

  • PostgreSQL 会在 /var/lib/postgresql/data/base/ 中创建一个名为 mydb 数据库 OID 对应的子目录。
  • 该表的数据文件会保存在这个 OID 子目录下。

因此,即便你没有设置表空间或者 location 为空,数据仍然会被存储在 PostgreSQL 数据目录下的相应位置中。


http://www.kler.cn/a/311718.html

相关文章:

  • PCL 点云分割 基于CPC算法的分割
  • 由于找不到mfc120u.dll, 无法继续执行代码。重新安装程序可能解决引问题。
  • 前端web
  • windows下qt5.12.11使用ODBC远程连接mysql数据库
  • 蓝桥杯-洛谷刷题-day2(C++)
  • 数据库MySQL索引详解
  • Elasticsearch 8.+ 版本查询方式
  • JVM 内存结构?
  • 卖家必看:利用亚马逊自养号测评精选热门产品,增强店铺权重
  • 运维工程师面试整理-监控与报警监控系统
  • uni-app-通过vue-cli命令行快速上手
  • 数据结构(Day16)
  • 虎先锋,你也喜欢线程控制嘛
  • UAC2.0 麦克风——音量控制
  • etcd之etcd简介和安装(一)
  • 全面整理的Oracel 数据库性能调优方案
  • 关系运算符
  • vue选项式写法项目案例(购物车)
  • 制作网上3D展馆需要什么技术并投入多少费用?
  • JSP分页功能实现案例:从基础到应用的全面解析
  • python SQLAlchemy 数据库连接池
  • 《拿下奇怪的前端报错》序章:报错输出个数值数组Buffer(475) [Uint8Array],我来教它说人话!
  • 【Unity】检测鼠标点击位置是否有2D对象
  • Modbus_tcp
  • 数据结构-3.2.栈的顺序存储实现
  • 3.数据类型