您如何测量 SQL 填充因子值

Posted

技术标签:

【中文标题】您如何测量 SQL 填充因子值【英文标题】:How do you measure SQL Fill Factor value 【发布时间】:2008-08-14 12:07:27 【问题描述】:

通常当我在表上创建索引时,我通常会根据对表的使用方式(多次读取或多次写入)的有根据的猜测来猜测 Fill Factor 应该是什么。

有没有更科学的方法来确定更准确的Fill Factor 值?

【问题讨论】:

【参考方案1】:

您可以尝试运行大量实际操作并查看不同操作的 IO 队列。

有很多变量可以控制它,例如每行的大小以及写入与读取的数量。

基本上:高填充因子 = 更快的读取,低 = 更快的写入。

然而,事情并没有那么简单,因为几乎所有的写入都将写入需要首先查找的行子集。

例如:将填充因子设置为 10%,每次单行更新将花费 10 倍的时间来找到它正在更改的行,即使页面拆分不太可能发生。

通常您会看到 70%(非常高的写入)到 95%(非常高的读取)的填充因子。

这是一种艺术形式。

我发现考虑填充因子的一种好方法是将地址簿中的页面视为地址簿中的页面 - 将地址打包得越紧密,更改它们就越难,但地址簿越薄。我想我在my blog 上解释得更好。

【讨论】:

【参考方案2】:

我倾向于认为,如果您追求性能改进,则最好将时间花在其他地方,调整架构,优化查询并确保良好的索引覆盖率。填充因子是您只有在知道系统中的其他一切都处于最佳状态时才需要担心的事情之一。我不知道有谁能这么说。

【讨论】:

以上是关于您如何测量 SQL 填充因子值的主要内容,如果未能解决你的问题,请参考以下文章

sql索引的填充因子多少最好,填充因子有什么用

填充因子

从上面的值填充列值,直到它在SQL Server中达到新值

在R中创建“数据透视表”,每行填充因子值

T-SQL查询高级—SQL Server索引中的碎片和填充因子

postgresqlsql 中有没有sql语句可以知道一个属性的值是否采用自增的方式填充的?