未使用的 Space 分配给 SQL 服务器中的 table
Unused Space allocated to table in SQL server
我的数据库中有一个 table,其中未使用的 space 约为 55GB。如何减少这个未使用的 space?
我尝试过的步骤:
- 我重建了索引,这对我帮助很大,将未使用的 space 从 110GB 减少到 55GB。
- 通过 运行 DBCC SHOWCONTIG 我发现我的 table 的平均页面密度是 99%(这在某种程度上是好的,但它并没有帮助我减少未使用的 space)
- 我已经更改了填充因子并再次重建索引(这次将填充因子更改为 100 后重建索引没有反映出任何预期的结果)
- 我尝试了 DBCC CLEANTABLE (DBNAME,"Tablename"),我无法减少未使用的 space
- 我没试过收缩DB,我想在不收缩DB的情况下减少未使用的space。
当前输出:
所需输出:我想减少总计 space,以便减少未使用的 space。
创建一个新的 table,然后将数据导出到这个新的 table。
SELECT * INTO newtable FROM table -- or copy wizard (by SSMS)
然后,删除旧的 table,但请确保所有数据都已成功传输。
解决方案:
ALTER INDEX ALL ON MyTable REBUILD WITH (FILLFACTOR = 100);
我的数据库中有一个 table,其中未使用的 space 约为 55GB。如何减少这个未使用的 space?
我尝试过的步骤:
- 我重建了索引,这对我帮助很大,将未使用的 space 从 110GB 减少到 55GB。
- 通过 运行 DBCC SHOWCONTIG 我发现我的 table 的平均页面密度是 99%(这在某种程度上是好的,但它并没有帮助我减少未使用的 space)
- 我已经更改了填充因子并再次重建索引(这次将填充因子更改为 100 后重建索引没有反映出任何预期的结果)
- 我尝试了 DBCC CLEANTABLE (DBNAME,"Tablename"),我无法减少未使用的 space
- 我没试过收缩DB,我想在不收缩DB的情况下减少未使用的space。
当前输出:
所需输出:我想减少总计 space,以便减少未使用的 space。
创建一个新的 table,然后将数据导出到这个新的 table。
SELECT * INTO newtable FROM table -- or copy wizard (by SSMS)
然后,删除旧的 table,但请确保所有数据都已成功传输。
解决方案:
ALTER INDEX ALL ON MyTable REBUILD WITH (FILLFACTOR = 100);