如何决定FILLFACTOR的值?
如何选择合适的FILLFACTOR值要根据具体情况而定,下面列出一些大致的规则,如果一个表符合下面的一条标准,请设置一个较大的FILLFACTOR值。
- 表很少更新。
- 记录大小基本上是固定的,也就是说,所有字段基本都是固定长度的和非空的。如果表的字段都是固定大小的,那么FILLFACTOR的值可以设为100.
- 以上两条都不满足,但是,频繁更新的字段大部分是固定长度的。
提供一些步骤计算下限,不过请注意,计算数据页的实际使用情况将是非常复杂的。这里提供的方法仅仅是给出一个快速而有效的方式来计算一个范围:
- 计算空值Empty:所有可以为空字段的空值和可变字段的空值。
- 计算满值Full:所有填满字段和满长字段。
- 然后,FILLFACTOR的值不应该小于50与Empty/Full*100之间的较大值。
对大多数情况,理想的FILLFACTOR值应该在这个值与100之间,通过计算实际情况的Empty值可以缩小这个范围。
例如,
table1 {
c1 int not null;
c2 int;
c3 char(20) not null;
c4 varchar(12) not null;
}
在这个例子中,Empty = 4 + 0 + 20 + 0 = 24, Full = 4 + 4 + 20 + 12 = 40,所以,FILLFCATOR至少应该为24/40*100 = 60。
然而,如果c4被程序限制至少为6个字符(例如,密码长度),那么Empty的值应该为4 + 0 + 20 + 6 = 30,这样,FILLFACTOR的值应该不小于30/40*100=75.
对于BLOB/CLOB字段,使用8 字节(OID的大小)作为它们的大小。