我们使用Azure SQL作为单个数据库,并采用DTU定价模型。我们有一个包含大约50M条记录的表,并且我们希望在单个字符串属性上添加一个新的非聚集索引。
问题是这是一个生产数据库。如果我使用简单的TSQL语法
CREATE NONCLUSTERED INDEX [IndexName]
ON [dbo].[TableName]([FieldName] ASC);
GO索引创建将在几分钟内将DTU固定为100%,这实质上会使我们的应用程序代码中的任何查询都处于饥饿状态。
在Azure SQL中有没有一种方法可以指示SQL Server“嘿,这个索引操作只使用X个DTU”?
发布于 2020-01-07 23:59:53
您可以使用选项MAXDOP来限制使用的处理器数量。
ALTER INDEX test_idx on test_table REBUILD WITH (ONLINE=ON, MAXDOP=1, RESUMABLE=ON) ;您可以考虑使用Resumable Online Index Rebuild功能,以便可以安排X次执行一分钟的索引。
ALTER INDEX [ix_CustomerIDs]
ON [ContosoSales].[ConstosoTransactionData]
REBUILD
WITH (ONLINE = ON, RESUMABLE = ON, MAX_DURATION = 1 MINUTES);
GO
ALTER INDEX ix_CustomerIDs ON [ContosoSales].[ConstosoTransactionData] PAUSE
ALTER INDEX ix_CustomerIDs ON [ContosoSales].[ConstosoTransactionData] RESUMEhttps://stackoverflow.com/questions/59630529
复制相似问题