天天看点

我对PostgreSQL 的模式的一点理解

PostgreSQL 的模式,我感觉是后来添加的概念。因为在物理存储上,是:

base目录下, 一个子目录代表一个数据库。然后再进去,就是一个文件代表一个table了。

虽然逻辑上,是  数据库 ->模式->表  但是物理结构确实 /数据库/表 的形式。

那么模式的信息存储在什么地方呢?

作实验如下:

先建立模式:

我对PostgreSQL 的模式的一点理解
我对PostgreSQL 的模式的一点理解

如果 这时候我们去看 PostgreSQL 的数据目录,搜索一番看看:

[作者:技术者高健@博客园  mail: [email protected]]

此时,由于内存和数据文件尚未同步,只有xlog中才有我们刚刚建立的模式的信息。

过一段时间或者关闭数据库,再次来搜索:

我们来看看这个 12649 和  12647 都是什么东西:

我对PostgreSQL 的模式的一点理解
我对PostgreSQL 的模式的一点理解

就是说 很可能 模式相关的信息,都放入到 pg_namespace 中了。我推测模式充其量也就是个逻辑分割。应该和权限划分有关。

再在模式下建立表来看看:

我对PostgreSQL 的模式的一点理解
我对PostgreSQL 的模式的一点理解

可以看到刚刚建好的表,其所对应的文件是:24608, 而24608文件刚建好,为空。更无法容纳模式信息。

因此,模式信息和表的信息是分别存放的。

再来进一步验证一下:

我对PostgreSQL 的模式的一点理解
我对PostgreSQL 的模式的一点理解

<a></a>

<a>本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/10/26/2740597.html,如需转载请自行联系原作者</a>