关键词不能为空

当前您在: 主页 > 英语 >

PostgreSQL物理存储

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-13 11:37
tags:

-

2021年2月13日发(作者:pest是什么意思)


PostgreSQL


物理存储介绍



我最初是为自己写这篇文章的,


我想对底层物理存储有足够的了解,


以便能够掌握可能


影响数据库的其他概念。这篇文章可能更多的是针 对有类似兴趣的人,我会尽量保持准确,


但目的是让它更容易理解,所以我可能会忽略一 些细节。



您应该了解


Postgre s


如何处理物理存储吗


?


也许不是,但 是如果您需要调查一些问题,


了解它是如何工作的是很有用的。



PostgreSQL


有一个关于这个主题的章节,但就我个人 而言,我不得不投入额外的资源


来理解它。


我发现很难浏览文档 的多个部分和外部资源,


所以这是我在一篇文章中收集基本


信息 的尝试。


在这篇文章中,


我没有费心重写所有内容,

< p>
所以在某些地方我重用了官方文档


中的段落。


< /p>


在本文撰写时,


Postgres


的当前 版本是


9.5



这篇文章中的信息可能 在将来的版本中被


废弃。



为了演示本 文的例子,


我们假设有一个名为


foo


的数据库,


其中包含一个名为


bar


的 表。



一些术语


一旦你深入到有关存储的文档中,你就会遇到一些不太常见的术语,比如关系、元组、


堆、块、页


……


让我来解释一下它们的意思

< br>:


?



元组(


tuple


)或项(


item


)是行的同义词;



?



关系(


relation


)是表的同义词;



?



文件节点(


filenode


)是表示对表或索引的引用的

id




?



块(


bl ock


)和页(


page


)是相等的, 它们表示存储表的文件的


8kb


段信息;



?



堆(


heap


)是指堆文件(


heap file

< br>)


。堆文件是大小可变的无序记录列表。虽然共


享相似的 名称,但是堆文件与堆数据结构不同;



?



XID:


事务


ID


,也是



32


位的量。在长时间运转的数据库里,它也可能会重叠。重


叠后数据库就有可能出错,所以需要采取措施解决。



只要我们采取一些合适的维


护步骤,这并不是很要命的问题。比如我们定 义做


vaccum


。或者手动重置;



?



CTID


表示行数据在其表中的物理位置。


CTID


也是每个表都可以使 用的特殊列,


但除非特别提到,否则不可见。它由页码(物理块号)和项标识符的索引( 物理行


号)组成;



?



OID


代表对象标识符;



?



数据库集群(


database cluster



,我们称数据库集群为磁盘上的存储区域。数据库


集群是由运行中的数据库服务器的单个实例管理的数据库集合;



?



资料移除(


VACCUM




PostgreS QL


数据库需要定期维护,称为资料移除。




如果您在本文的其余部分中遇到了这个术语,请不要感到惊讶 。在可能的情况下,


我在少数地方简化了内容。




我的数据库存储在哪里


< p>
数据库集群使用的数据文件一起存储在集群的数据目录中,通常称为


PGD ATA(


在可用


于定义它的环境变量名称之后

< br>)


。根据您的操作系统或安装,


PGDATA

< p>
可以有不同的位置。



对于集群中的每个数据库,


PGDATA/base


中都有一个子目录,

< br>以


pg_database


中数据


库的


OID


命名。这个子目录是数据库文件的默认位置。



如果希望列出集群中每个数据库的


OID


,可以运行以下查询。




select oid, datname from pg_database;



oid | datname


-------+-------------


1 | template1


12398 | template0


12403 | postgres


17447 | foo




如果您正在寻找一个特定 数据库的


OID


,那么您可以在查询中添加一个


WHERE


子句


:



select oid, datname from pg_database WHERE datname = 'foo';



另一种查 找数据库


OID


的方法是使用命令行


o id2name


。它是一个实用程序,用于检查


Postgre SQL


使用的文件结构,以获得关于如何使用它的更多信息






$$> oid2name


All databases:


Oid Database Name Tablespace


----------------------------------



17447 foo pg_default



12398 template0 pg_default



1 template1 pg_default



上面的


OID


在您的系统中可能完全不同,但是现在我们知道,与数据库


foo

有关的所


有文件都存储在


PGDATA/base/174 47


中。如果您问自己,作为


pg_database


的表存储在


哪个数据库中,那么它们不是在


PG DATA/base


中,而是在


PGDATA/global< /p>


中。



现在,


我 们知道在文件系统中何处可以找到数据库,


所以让我们尝试找出在何处可以找

< p>
到表。




存储表的地方



每个表都存储在一个单独的文件中。


对于普通关系,


这些文 件是以表或索引的文件名命


名的,可以在表


pg_class< /p>


的列


relfilenode


中找到。< /p>


pg_class


是存在于


pg_cat alog


模式中


的系统表。



当一个表超过


1gb


时,它被分成


GB


大小的段。第一个段的文件名与文件名相同


;< /p>


随后


的段被命名为


filenode.1



filenode.2,


等等。这种 安排避免了在有文件大小限制的平台上出


现问题。


< p>
表的文件名通常与其


OID


匹配,但情况不一定如 此。要查找表文件名路径,可以在连


接到数据库时运行以下查询


:






select pg_relation_filepath('bar');


pg_relation_filepath


----------------------


base/17447/27741























< br>以


使












pg_ relation_filenode


。对于数据库


OID


,可以使用


oid2name


找到表的文件 名










> oid2name -d foo -t bar


From database


Filenode Table Name


----------------------


27741 bar


系统表






在前一节中,我们讨论了一些关于系统表的内容,很有趣的是 ,我们知道有一个系统


目录模式,其中包含您可能想要查询的表,以查找额外信息。




创建数据库时,


除了公共模式和用户创建的模式外,


每个数据库还包含一个


p g_catalog


模式,该模式包含系统表和所有内置数据类型、函数和操作符。


pg_catalog


始终是搜索路


径的有 效部分,因此在查询系统表时不需要使用前缀。



< p>
一旦通过


psql


连接到您的数据库,您可以通过 以下方式列出系统表


:




dt pg_catalog.*


如何存储行






每个表都存储为固定大小


(


通常为


8Kb)


的页 面数组。在表中,所有页面在逻辑上是等


价的,因此可以在任何页面中存储特定的项


(



)





用于存储表的结构是堆文件。堆文件是大小 可变的无序记录列表。堆文件的结构是一


组页面


(


或块


)


,每个页面包含一组项。术语


item


指的是存储在页面上的一行。




页面结构如下


:

-


-


-


-


-


-


-


-



本文更新与2021-02-13 11:37,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/649838.html

PostgreSQL物理存储的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文