aar*_*lin 5 sql-server clustered-index maintenance sql-server-2008-r2
我们的数据库中有一个超过 2 亿行的表和一个超过 100GB 的聚集主键索引。主键之所以这么大,是因为已经从表中归档了数百万行,并且此后没有重建索引。通过重建,我希望大大减少索引的大小并释放我们数据库中的大量空间。
我们遇到的问题是磁盘只有 20GB 的可用空间,我担心重建索引时临时需要多少空间。
做这个的最好方式是什么?我是硬着头皮重建索引并希望有足够的空间吗?还是我放弃 PK 并从头开始重建它?
归档详细信息
归档工作是在日期时间列上完成的,并且归档超过一年的所有内容。这应该与主键并行运行,主键是一个自动增量,因为日期时间列在创建行时也会自动填充。
数据库、表和索引详细信息
行数:~212,300,000
数据空间:~109,000 MB
索引空间:~517 MB
恢复模式:完整
数据文件可用空间:5,991 MB / 151,000 MB
数据文件驱动器空间:18.7 GB
日志文件可用空间:2275 MB / 25000 MB
日志文件驱动器空间:79 GB
tempdb 可用空间:7476 MB / 19232 MB
表上只有一个索引,即聚簇主键:
关键列:1x bigint
排序:升序
我们使用的是 SQL Server 2008 R2 标准版。
聚集索引“就是”表。重建索引将需要足够的空间来逐页复制每个现有的未删除行。由于您没有企业版,因此您无法在线重建索引。这意味着在重建操作期间该表将不可访问。
您最好通过在不同的驱动器上创建一个重复的空表来重建,该驱动器有足够的可用空间,可以预见增长的空间,按关键顺序逐行移动数据,然后重命名旧表和新表。例如,如果原始表是 Table1,新副本是 Table2,则将 Table1 重命名为 Table1-old,然后将 Table2 重命名为 Table1。
归档时间: |
|
查看次数: |
4413 次 |
最近记录: |