背景
想确认下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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




