Database postgres堆表的逻辑结构?
我正在努力从内到外理解博士后,以下是我至今所学到的 每个数据库在$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使用堆表的概念,更具体地说,无序堆用于存储引用自的元组。我知道最小/最大堆的概念基本上是二进制树的修改形式,但找不到任何与无序堆数据结构相关的参考/资料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
我的C知识有点生疏,因此查看实际的源代码对我帮助不大。如果能帮助我理解无序的堆结构,即元组是如何组织为表的,我将不胜感激。我很困惑,那么表只是一个页面集合吗?是的,正是这样。哦..错过了文档中的那一点..无序堆的名称误导了我..这个问题是否增加了任何价值..我应该删除它吗?