运行数据库统计信息我在更新表时看到很多物理溢出。
我相信原因是 varchar 列以 null 开头,然后更新为 ~20 个字符的值。当发生这种情况时,记录会从物理页面溢出,因此分配了一个新页面,导致数据局部性错误,直到我重新组织表。
我如何提示数据库为高级记录分配足够的空间,以便当我将其 varchar 列从 null 更新为字符串时它不会溢出?
- 我无法切换到固定长度的 CHAR 列类型,因为我没有预定义的最大长度。
- 我宁愿不使用魔法值而不是空值(比如“00000000000000000000”)作为预分配器。
- 我的主要用例是 DB2,但也想知道 MSSQL 和 oracle。