如何在代码中使用 Elastic Sc​​ale 将 shardlet 移动到不同的分片

How to move shardlets to a different shard using Elastic Scale in code

阅读 Elastic Sc​​ale 的文档,通常在移动 shardlet 时会使用 Split/Merve/Move 服务。 我现在的问题是,如何在代码中触发 shardlet 的移动?我可以触发服务 "api",如 Microsoft.Azure.SqlDatabase.ElasticScale.Service.SplitMerge -> SplitMerge.psm1 中所示。这种规模有多好,例如当多个 Shardlet 并行移动时,独立移动还是排队移动? 或者还有其他我错过的方法吗?

感谢您的提问。目前,PowerShell 脚本中的方法是您拥有的最佳选择。但是,我们对此并不是特别满意,并希望用适当的 API 替换它。我会与您联系,了解更多关于您的自动化环境的信息,以便了解适合您的 API。

顺便说一句:不同的 split/merge 请求(在 RequestStatus table 中显示不同 OperationId 的请求)现在按顺序处理。您可以根据请求使用 BatchSize 参数。虽然旨在提供一种方法来控制一次在分片映射中将多少个 shardlet 标记为离线,但更大的批处理大小也可以为您提供更好的性能。

虽然这听起来像是推销:在我们的实验中提高 split/merge 操作性能的最有效方法是在 Azure DB 中为分片使用更强大的服务层。当您知道必须对它们执行拆分或合并时,您可以在源和目标分片上动态更改服务层 - 然后在操作完成后再次将其拨回。

希望这对您有所帮助。

谢谢, 托尔斯滕