我有一个托管在 Azure 上的 SQL 数据库。问题是大小越来越失控,我可以在主键聚集索引中看到高达 99% 的碎片。
我可以使用online=on
选项重建所有其他索引,并且不会影响性能。PK Clustered 索引之一的大小大于 200GB,因此 aREBUILD...WITH (ONLINE=ON)
会导致锁定。
我们确实有来自所有时区的用户访问该站点,所以真的,我无法找到可以离线重建索引的时间。
在站点不停机的情况下重建大型索引的最佳策略是什么?
我相信重组无济于事,因为碎片化是 99%。问题是即使在线,表也会被锁定。主要问题是索引大于200GB。主键是一个整数。
我有一个包含 NVarChar(Max) 类型列的表。
在允许用户添加数据之前我没有采取很好的预防措施,所以现在我有超过 25 亿行,并且数据库变得超级大。
我正在尝试更改列以将大小更改为固定长度,其中应删除记录 > 该宽度。
这不是索引列。
我尝试过 LEN(Text)>width 但这是一个非常慢的函数,因为它会扫描数十亿行。
我们后来还尝试通过创建一个新表并将数据移到那里来将 Int 更改为 BigInt,但这需要一周左右的时间。
Alter Column 会冻结系统。
您能否提出任何其他方式或建议您认为最好的方法?
数据库托管在 Azure SQL 上
非常感谢 :)