postgresql物理文件

base目录下是每个数据库文件存放的地方

这些数字含义是每个数据库的oid。

pgsql_tmp是用来存放临时文件的,想一些超过内存大小的排序等。
进入其中一个目录看下里面包含的文件:fsm文件,vm文件,init文件和数据文件。

这些数字的对应着pg_class中字段relfilenode值,随便去一个文件名如46203去pg_class中查找一下。

这个是表名是b的对于的数据文件。这个文件不只是每个表都有,索引也会有这样的一个文件。

看到b表的索引relfilenode是46204,对于该数据库目录下也能找到同样的文件。
如果这个表很大你会看到这种情况:

默认表或者索引大小超过1G时就会进行分割,这个大小可以通过安装pg是指定--with-segsize调整段的大小。

后缀是_fsm的是fsm文件,这个文件是用来进行空间映射的表示页面中可以使用的空余空间。

vm文件是标识该页的所有元组对所有事务是否可见,如果标识可见可以跳过vacuum扫描。

init文件是每一个不记录日志表或者该表上的每一个索引都会有个对应的文件。

还有一种文件,toast文件,pg不允许跨页面存元组,如果字段很大会将呢个字段的数据放入toast文件中。toast文件主要有4中存储方式plain不压缩,不进行外行存储,这个就是普通定长字段的存储方式。 extended允许外行存储和压缩,toast默认存储方式。 external允许外行存储不允许压缩。
main允许压缩不允许外行存储,如果压缩后还是过大的话还是会进行外行存储的。
toast文件有点,如果没有选择用toast文件存储的字段时,不会扫描toast文件。
几个关于文件大小的函数:
pg_column_size(any)列大小。
pg_database_size(name)数据库大小。
pg_relation_size(regclass)关系的大小,不含索引和toast文件,vm文件,fsm文件。
pg_relation_size(regclass,'fsm')可以得出关系中fsm或者vm文件大小。
pg_indexes_size(regclass)索引大小包含fsm文件。
pg_size_pretty(numberic)将字节转换成MB,GB等单位
pg_table_size(regclass)这个大小是表的大小还有toast文件,fsm文件,vm文件加起来的大小,不含索引。
pg_total_relation_size(regclass)包含索引的各种表文件的全部大小。

时间: 2024-09-14 16:56:12

postgresql物理文件的相关文章

ASP.NET的路由系统:URL与物理文件的分离

表现为请求地址与目标Controller和Action的动态映射的URL路由系统并不是专属于ASP.NET MVC,而是直接建立在ASP.NET 中.ASP.NET通过URL路由系统实现了请求地址与物理文件的分离. 一.URL与物理文件的分离 对于一个 ASP.NET Web Form应用来说,任何一个请求都对应着某个具体的物理文件.部署在Web服务器上的物理文件可以是静态的(比如图片和静态HTML文件等),也可以是动态的(比如.asxp文件).对于静态文件的请求,ASP.NET直接返回文件的整

SQLServer 2008附加数据库时出现无法打开物理文件的问题

环境 SQLServer 2008 R2 问题 附加数据库出现"无法打开物理文件 "X.mdf".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server,错误: 5120) ". 解决 1. 找到要附加的.mdf文件--------->右键--------->属性--------->安全------- -->选择当前用户--------->编辑--------->完全控制. 2.

MySQL 物理文件体系结构的简单整理说明

原文:MySQL 物理文件体系结构的简单整理说明   本文出处:http://www.cnblogs.com/wy123/p/7102128.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)   本文的数据库版本是MySQL5.7.18,简单介绍一下MySQL数据文件目录的物理结构和作用,从中可以窥见MySQL的整体上的物理文件结构以及逻辑功能.可以从整体结构上了解到MySQL的物理体系架构(本人学习的思路往

解决误删mysql表物理文件的方法

该方法只介绍了如何救回这个表名(数据不恢复) 如果想要恢复原来数据 直接用extundelete把文件恢复后放回去即可  并且是适用于平时没有全备的情况下  如果有全备 直接那全备的frm和idb文件放回去 就可以了  该方法同样适用于数据表迁移(只迁移一个表)  因为discard再import的速度 远比先dump再恢复的速度要快得多 建议: 平时备份一下表结构是非常重要的 -- 如果你直接删除了mysql的表文件 (.frm .idb)  在mysql5.6 可能你就悲剧了  可能再也用不

使用pg_resetxlog修复PostgreSQL控制文件的方法

PostgreSQL 控制文件在$PGDATA/global目录下名为pg_control. 控制文件中记录了以下三部分信息 : 1. initdb时生成的静态信息 : pg_control version number: 922 Catalog version number: 201204301 Database system identifier: 5831753892046499175 Maximum data alignment: 8 Database block size: 8192

无法打开物理文件 "D:\understructuredata _DAT.MDF"。操作系统错误 5:"5(拒绝访问。)"

错误信息: 标题: Microsoft SQL Server Management Studio ------------------------------ 附加数据库 对于 服务器"HC-PC"失败. (Microsoft.SqlServer.Smo) 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1+((KJ_RTM).100402-1

wpf c#-WPF C# 词典资源物理文件中某项的修改

问题描述 WPF C# 词典资源物理文件中某项的修改 如何修改wpf的词典资源的物理文件中的内容,例如 其中词典为 <sys:String x:Key="test">xxxx</sys:String> 我想修改为 <sys:String x:Key="test">wwww</sys:String> 不是简单的在内存中修改,而是要把修改后的值保存到物理的词典资源中

PostgreSQL 数据文件灾难恢复 - 解析与数据dump

标签 PostgreSQL , 数据文件 , pg_filedump , 安全 , TDE 背景 俗话说常在河边站哪有不湿鞋,作为一名战斗在一线的DBA或者开发者,可能有遇到过磁盘损坏,磁盘阵列损坏,如果有备份或者备库的话,还好. 如果没有备份,或者没有备库(通常有一些小型或者创业型的企业),那么遇到磁盘损坏或者其他原因(比如掉电文件系统损坏),导致数据库的数据文件并不完整时,如何从有限的资料中找出数据呢? 比如PostgreSQL,如果读到坏块,会报块不可读的错误,这种情况下通过设置zero_

Stream如何保存成为文件?通过webRequest获得流,但是不知道如何保存为物理文件啊!

问题描述 Stream如何保存成为文件?通过webRequest获得流,但是不知道如何保存为物理文件啊! 解决方案 解决方案二:up解决方案三:例子:privatevoidbtncsv_ButtonClick(objectsender,EventArgse){if(dataGridView1.Rows.Count<=0){return;}saveFileDialog1.Title="CSV出力";saveFileDialog1.DefaultExt=".csv"