【发布时间】:2022-02-07 09:16:13
【问题描述】:
是的,又是fillfactor。我花了很多时间阅读,我无法决定每种情况下什么是最好的。我不明白碎片何时以及如何发生。我正在将数据库从 MS SQL Server 迁移到 PostgreSQL 9.2。
案例一
10-50 次插入/分钟顺序(串行)PK,20-50 次读取/小时。
CREATE TABLE dev_transactions (
transaction_id serial NOT NULL,
transaction_type smallint NOT NULL,
moment timestamp without time zone NOT NULL,
gateway integer NOT NULL,
device integer NOT NULL,
controler smallint NOT NULL,
token integer,
et_mode character(1),
status smallint NOT NULL,
CONSTRAINT pk_dev_transactions PRIMARY KEY (transaction_id)
);
案例 2
类似的结构,串行 PK 的索引,每 2 个月写入约 50.000 个寄存器的块(一次),读数为 10-50/分钟。
50% 的填充因子是否意味着每次插入都会生成一个新页面并将 50% 的现有行移动到新生成的页面?
50% 的填充因子是否意味着在新数据页的物理行之间分配了释放空间?
只有在现有页面中没有剩余空间时才会生成新页面?
如你所见,我很困惑;我会很感激一些帮助——也许是阅读 PostgreSQL 和索引 fillfactor 的好链接。
【问题讨论】:
-
你在更新桌面吗?填充因子与更新性能有关。
-
永远不要在我想要索引的字段中,在这两种情况下都是 PK 并且插入时它永远保持相同的价值。
标签: sql postgresql database-design fillfactor