SQL Azure-聚集索引碎片

时间:2019-06-11 09:00:36

标签: azure-sql-database clustered-index

我继承了一个Azure数据库。我是网络开发人员,对SQL的经验有限。该网站运行缓慢,尤其是2个存储过程。

我备份了azure数据库并将其导入到本地PC中。我重新编译了存储过程,这没有帮助。经过进一步调查,存储过程被链接到6个表,每个表都有一个聚集索引。

我已经检查了聚簇索引的属性,并且碎片占80%或更高。

我认为索引需要重建/重新组织。我对此有几个疑问:

  1. 网站需要离线吗?
  2. 是否需要以任何特定顺序重建/重组索引,并且会丢失任何数据吗?
  3. 在我的本地副本中,我可以右键单击索引,然后单击“重建或重新组织”,但在Azure中不能。

1 个答案:

答案 0 :(得分:1)

要重建群集的列存储索引,请使用SQL Server:

  1. 在重建时获取表或分区上的排他锁。数据处于“脱机”状态,并且在重建期间不可用。
  2. 通过物理删除已从表中逻辑删除的行来对列存储进行碎片整理;删除的字节将在物理介质上回收。
  3. 从原始列存储索引中读取所有数据,包括增量存储。它将数据合并到新的行组中,并将行组压缩到列存储中。
  4. 在进行重建时,需要物理媒体上的空间来存储columnstore索引的两个副本。重建完成后,SQL Server删除原始的群集列存储索引。
  5. 对于具有排序的聚集列存储索引的Azure SQL数据仓库表,ALTER INDEX REBUILD将对数据进行重新排序。在重建操作期间监视tempdb。如果需要更多的tempdb空间,则可以扩展数据仓库。索引重建完成后,请缩小规模。

有关更多详细信息,请参见:Rebuilding Indexes。 Azure SQL数据库也支持它。

以上,关于您的问题:

1。网站需要离线吗?

不,不是。

2。是否需要按任何特定顺序重建/重组索引,并且会丢失任何数据吗?

是的,由于您已经检查了聚集索引的属性,并且碎片占80%或更高,因此建议您重建/重组索引。您的数据不会丢失。您可以参考以下文档:Before Reorganize and Rebuild Indexes

3。在本地副本中,我可以右键单击索引,然后单击“重建或重新组织”,但在Azure中则不能。

Azure SQL数据库支持重组和重建索引。在重建索引之前,可以先通过删除碎片来进行测试。

希望这会有所帮助。

相关问题