暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PG数据库的表存储数量的简单理解

济南小老虎 2024-08-02
31

背景

想确认下PG数据库单数据库下面的一个极限问题
不知道一个PG数据库服务器下面 create 的 database
在该 database 下面, 创建schema的话能够创建多少张表

但是想到这个突然到PG数据库表数量与文件数量的关系的问题.
所以想简单了解一下
避免遇到LOSF 问题
lots of small files


表验证

psql -U postgres
create database tabletest
\c tabletest

会发现新产生一个目录
里面文件是 299
主要分为三类:
不带文件后缀的文件
待vm后缀的文件
待fsm后缀的文件.

建表测试:
create table tabletest1 (name1 varchar(4096),name2 varchar(4096))

会发现多了三个文件.
222979610
222979613
222979614

然后建立一个索引
create index tabletest1_pk on tabletest1(name1) ;
会新增一个新的文件:
222979615

继续创建索引
create index tabletest1_pk2 on tabletest1(name2) ;
继续会新增一个文件:
222979616

增加一个TOAST字段
ALTER TABLE tabletest1 ADD COLUMN name3 TEXT;
发现单纯增加字段不会创建文件

进行插入大字段验证
insert into tabletest1 values ('100','200','9999') ;
非大字段没有变化

插入一个文件
INSERT INTO tabletest1
VALUES ('100','200', pg_read_binary_file('/deploy/1701.log'));
发现多了一个 fsm文件

总体文件数到了 305
针对这一个表产生了 6个文件

继续创建索引
create index tabletest1_pk3 on tabletest1(name1,name2) ;
一个索引还是创建一个新的文件

222979610
222979613
222979613_fsm
222979614
222979615
222979616
222979618


简单结论

PG数据库创建一个表, 至少要产生 3个文件. 
如果有索引, 那么随着索引的增加会增加更多的文件

如果表内有数据会产生一个 fsm文件.
PG数据库默认值一个文件应该是1G大小
超过1G大小,会重建一个新的文件.

所以PG数据库的文件数量至少是 表数量的3倍以上
如果是比较复杂的数据库 文件数量是标数量的 4-5倍也属于正常情况


文章转载自济南小老虎,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论