1

运行数据库统计信息我在更新表时看到很多物理溢出。
我相信原因是 varchar 列以 null 开头,然后更新为 ~20 个字符的值。当发生这种情况时,记录会从物理页面溢出,因此分配了一个新页面,导致数据局部性错误,直到我重新组织表。

我如何提示数据库为高级记录分配足够的空间,以便当我将其 varchar 列从 null 更新为字符串时它不会溢出?

  • 我无法切换到固定长度的 CHAR 列类型,因为我没有预定义的最大长度。
  • 我宁愿不使用魔法值而不是空值(比如“00000000000000000000”)作为预分配器。
  • 我的主要用例是 DB2,但也想知道 MSSQL 和 oracle。
4

1 回答 1

1

您可以通过修改不断更新的表的 PCTFREE 来解决此问题。

db2 alter table xxx pctfree 25

PCTFREE 是页面中空白空间的百分比,为行溢出保留。您必须为您的表找到一个好的值,以便不浪费空间,但防止使用另一页进行行溢出。

了解更多信息

于 2013-08-21T12:58:28.047 回答