PostgreSQL 物理文件映射解析
我们知道,在PG中,每个relation,也就是表,都有好几个fork对应。存放主表数据的为ldquo;MAINrdquo; fork;管理空余空间的为
我们知道,在PG中,每个relation,也就是表,都有好几个fork对应。存放主表数据的为“MAIN” fork;管理空余空间的为“FSM” fork;存放可视化视图的为“visibility” fork。
那么PG又是如何将每个表的fork管理起来,并跟pg_class中的relfileno对应起来的呢?这可以分为两类:一类是常规表;一类是系统表。
1.常规表
假设我有一张表叫”tab_mvcc_test”,它在postgres数据库中。因此我们得先找到数据库目录。查pg_database,得到oid为“12896”。
接着去base目录下,找到相应的数据库目录。“12896”目录就是我们想要的。
然后从pg_class中,我们查到”tab_mvcc_test”的relfilenode为“16483”。
接着我们进入数据库目录“12896”,然后list一把,提到以下相关的三个文件。以“_fsm”后缀的就是Free Space Mapping文件。以”vm”后缀的就是visibility map。
而没有后缀的那个就是我们的主表数据文件,里面还存放了索引数据。
2.系统表
另外像系统的catalog表,如pg_class,它的refileno是”0“,又是什么原因呢?PG对于系统表处理,不能像常规表一样。这就有点类似于”鸡生蛋,还是蛋生鸡“。因为系统表是来管理常规表的。
PG对于这些catalog表,放到一个文件中去管理,将oid与relfileno做映射。这个文件就是著名的”pg_filenode.map“。这个文件的大小为512,,刚好是一个OS disk sector的大小。
PG做了对齐处理,在源码上用RelMapFile结构体与之对应。结构体大小为:62*8+4*4=496+16=512。也就是说这个文件最多存放62条系统catalog表的记录。
由于这个文件的重要性,刚好与disk sector大小对齐,减少文件crash的机率。
我们接下来把pg_filenode.map DUMP出来看一下,里面是什么数据:
第一个圈中的数据为PG文件头的魔法数据字,那么第二个圈中的,到底对应的是哪个catalog表呢?我们可以计算下:“4eb”对应十进制数据就是”1259“,刚好是pg_class的oid。
而后面的”3172”对应的就是12658。刚好是relfilenode。完美的对应了起来。
再得到文件如下:
记录数刚好14,跟上面图中两个红色圈之间的数字”000e“对起来。这个文件还存放了这些系统表对应的索引文件filenode。
------------------------------------华丽丽的分割线------------------------------------
CentOS 6.3环境下yum安装PostgreSQL 9.3
PostgreSQL缓存详述
Windows平台编译 PostgreSQL
Ubuntu下LAPP(Linux+Apache+PostgreSQL+PHP)环境的配置与安装
Ubuntu上的phppgAdmin安装及配置
CentOS平台下安装PostgreSQL9.3
PostgreSQL配置Streaming Replication集群
如何在CentOS 7/6.5/6.4 下安装PostgreSQL 9.3 与 phpPgAdmin
------------------------------------华丽丽的分割线------------------------------------
PostgreSQL 的详细介绍:请点这里
PostgreSQL 的下载地址:请点这里
本文永久更新链接地址:

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL et PostgreSQL : meilleures pratiques en matière de développement Web Introduction : dans le monde moderne du développement Web, les bases de données sont un composant essentiel. Lors du choix d'une base de données, les choix courants sont MySQL et PostgreSQL. Cet article couvrira les meilleures pratiques d'utilisation de MySQL et PostgreSQL dans le développement Web et fournira quelques exemples de code. 1. Scénarios applicables MySQL convient à la plupart des applications Web, en particulier celles qui nécessitent des performances élevées, une évolutivité et une facilité d'utilisation.

MySQL et PostgreSQL : comparaison des performances et conseils d'optimisation Lors du développement d'applications Web, la base de données est un composant indispensable. Lors du choix d'un système de gestion de base de données, MySQL et PostgreSQL sont deux choix courants. Ce sont tous deux des systèmes de gestion de bases de données relationnelles (SGBDR) open source, mais il existe certaines différences en termes de performances et d'optimisation. Cet article comparera les performances de MySQL et PostgreSQL et fournira quelques conseils d'optimisation. Comparaison des performances comparant deux gestions de bases de données

Apprenez les fonctions de la base de données dans le langage Go et implémentez les opérations d'ajout, de suppression, de modification et d'interrogation des données PostgreSQL. Dans le développement de logiciels modernes, la base de données est un élément indispensable. En tant que langage de programmation puissant, le langage Go fournit une multitude de fonctions et de boîtes à outils d'exploitation de base de données, qui peuvent facilement mettre en œuvre des opérations d'ajout, de suppression, de modification et d'interrogation de la base de données. Cet article explique comment apprendre les fonctions de base de données en langage Go et utiliser la base de données PostgreSQL pour les opérations réelles. Étape 1 : Installez le pilote de base de données en langage Go pour chaque base de données

Le langage Go est un langage de programmation rapide et efficace adapté à la création de services Web et d'applications back-end. PostgreSQL est un système de gestion de base de données relationnelle open source qui promet d'offrir une fiabilité, une évolutivité et une sécurité des données supérieures. Dans cet article, nous allons approfondir l'utilisation de PostgreSQL avec Go et fournir des exemples de code et des conseils pratiques. Installation et configuration de PostgreSQL Tout d'abord, nous devons installer et configurer PostgreSQL. Peut être trouvé sur le site officiel

MySQL et PostgreSQL : sécurité des données et stratégies de sauvegarde Introduction : Dans la société moderne, les données sont devenues un élément indispensable de la vie professionnelle et personnelle. Pour les systèmes de gestion de bases de données, la sécurité des données et les stratégies de sauvegarde sont cruciales, à la fois pour protéger les données contre la perte ou l’endommagement et pour garantir la fiabilité et l’intégrité des données récupérées. Cet article se concentrera sur les stratégies de sécurité et de sauvegarde des données de deux systèmes de bases de données relationnelles grand public, MySQL et PostgreSQL. 1. Sécurité des données : (1) Droits des utilisateurs

Avec le développement de la technologie des bases de données, les systèmes de gestion de bases de données présentent également une variété de choix. Les développeurs peuvent choisir la base de données la plus adaptée en fonction de leurs besoins et préférences. En tant que système de base de données relationnelle open source avancé, PostgreSQL attire de plus en plus l'attention et l'utilisation des développeurs. Alors, comment utiliser la base de données PostgreSQL en programmation PHP ? 1. Installez et configurez la base de données PostgreSQL Avant d'utiliser PostgreSQL, vous devez l'installer et la configurer. d'abord

MySQL et PostgreSQL : Comment optimiser les performances des requêtes de base de données ? Présentation : les performances des requêtes de base de données sont une considération importante lors du développement d'applications. De bonnes performances de requête améliorent la réactivité des applications et l’expérience utilisateur. Cet article présentera quelques méthodes pour optimiser les performances des requêtes de base de données, en se concentrant sur deux bases de données couramment utilisées, MySQL et PostgreSQL. Optimisation des index de base de données : les index de base de données sont un facteur important dans l'amélioration des performances des requêtes. Les index peuvent accélérer la recherche de données et réduire le temps d'analyse des requêtes.

Avec le développement d’Internet, la quantité de données ne cesse de croître et le besoin de gestion des données devient de plus en plus urgent. Les bases de données relationnelles sont un moyen important de gestion de données, parmi lequel PostgreSQL est populaire pour sa flexibilité, son évolutivité et sa sécurité. Cet article présente comment utiliser le langage PHP pour implémenter une base de données relationnelle PostgreSQL open source. J'espère qu'il sera utile aux développeurs ayant les besoins correspondants. Présentation PostgreSQL est un puissant système de base de données relationnelle qui suit le standard SQL et possède de nombreux
