在 Azure 中的大型 table 上创建索引时超时
Timeout when create index on a large table in Azure
我 table 在 Azure 中包含超过 5000 万条记录。我正在尝试使用 follow statment
在其上创建一个非聚集索引
create nonclustered index market_index_1 on MarketData(symbol, currency) with(online=on)
但是我收到一条错误消息。
Msg -2, Level 11, State 0, Line 0 Timeout expired. The timeout period
elapsed prior to completion of the operation or the server is not
responding.
如有任何建议,我们将不胜感激。
查看 Azure SQL Database Resource Limits document。然后将错误代码与本文档中列出的错误代码进行比较。
对于这种大小的数据,我认为在 table 中创建新索引的唯一方法是:
- 创建具有相同结构且只有一个聚簇索引的新 table
- 将原始table中的数据复制到新的
- 截断原来的table
- 创建所需的索引
- 将数据复制回原始数据table
请注意,在 table 之间移动数据可能会再次超出资源限制,因此您可能必须分块执行这些操作。
其他可能的方法是将数据库服务器升级到新的 Preview Version of Azure SQL Database(注意:您以后 不能 降级服务器!)
我 table 在 Azure 中包含超过 5000 万条记录。我正在尝试使用 follow statment
在其上创建一个非聚集索引create nonclustered index market_index_1 on MarketData(symbol, currency) with(online=on)
但是我收到一条错误消息。
Msg -2, Level 11, State 0, Line 0 Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
如有任何建议,我们将不胜感激。
查看 Azure SQL Database Resource Limits document。然后将错误代码与本文档中列出的错误代码进行比较。
对于这种大小的数据,我认为在 table 中创建新索引的唯一方法是:
- 创建具有相同结构且只有一个聚簇索引的新 table
- 将原始table中的数据复制到新的
- 截断原来的table
- 创建所需的索引
- 将数据复制回原始数据table
请注意,在 table 之间移动数据可能会再次超出资源限制,因此您可能必须分块执行这些操作。
其他可能的方法是将数据库服务器升级到新的 Preview Version of Azure SQL Database(注意:您以后 不能 降级服务器!)