Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database postgres堆表的逻辑结构?_Database_Postgresql_Relational Database - Fatal编程技术网

Database postgres堆表的逻辑结构?

Database postgres堆表的逻辑结构?,database,postgresql,relational-database,Database,Postgresql,Relational Database,我正在努力从内到外理解博士后,以下是我至今所学到的 每个数据库在$PG_DATA/base$PG_DATA中都有自己的子目录,它是指向postgres安装目录的环境变量 这可以通过从pg_数据库发出查询SELECT datname,oid进行验证,其中datname='db_name';。然后我们可以物理地进入目录库来实现这一点。数据库没有逻辑结构,因为它只是一个目录,其中存在文件 在此目录中,表也被组织为带有oid的单个文件。此oid可以通过以下查询获得:SELECT relname,oid

我正在努力从内到外理解博士后,以下是我至今所学到的

每个数据库在$PG_DATA/base$PG_DATA中都有自己的子目录,它是指向postgres安装目录的环境变量 这可以通过从pg_数据库发出查询SELECT datname,oid进行验证,其中datname='db_name';。然后我们可以物理地进入目录库来实现这一点。数据库没有逻辑结构,因为它只是一个目录,其中存在文件

在此目录中,表也被组织为带有oid的单个文件。此oid可以通过以下查询获得:SELECT relname,oid FROM pg_class,其中relname='table_name';。这些文件可以增长到1GB,然后可以根据参数对其进行拆分,通常这种拆分是为了克服文件系统的限制,并且是可调的

到目前为止一切都很好,但我无法理解元组在表中是如何组织的。从我所看到的元组基本上是使用TOAST展开的行,如果它们不适合一个基本上是8KB存储单元的页面

Postgres使用堆表的概念,更具体地说,无序堆用于存储引用自的元组。我知道最小/最大堆的概念基本上是二进制树的修改形式,但找不到任何与无序堆数据结构相关的参考/资料


我的C知识有点生疏,因此查看实际的源代码对我帮助不大。如果能帮助我理解无序的堆结构,即元组是如何组织为表的,我将不胜感激。

我很困惑,那么表只是一个页面集合吗?是的,正是这样。哦..错过了文档中的那一点..无序堆的名称误导了我..这个问题是否增加了任何价值..我应该删除它吗?