【问题标题】:How to trigger SPLIT's and DROP's when sharding in SQL Azure在 SQL Azure 中分片时如何触发 SPLIT 和 DROP
【发布时间】:2012-03-28 00:26:48
【问题描述】:

我正在设置一个在 Windows Azure 上运行的系统,我希望它有大量数据和高流量。为了处理它,我正在设计一个联合数据库。我有兴趣在需要时让应用程序本身 SPLIT(或 DROP)联合数据库。有 2 个原因应该触发这些操作发生:1) 数据库的大小已达到 Windows Azure 中允许的限制,2) 服务器中的流量太高,SPLIT 操作将提高性能,保持低响应时间(快速运行)。 (逆运算是基于类似的推理)。

我的问题是:如何以编程方式检测这两种情况?

【问题讨论】:

    标签: sql azure sharding federated


    【解决方案1】:

    您可以使用Sql Azure Dynamic Management Views 以编程方式监控 Sql Azure 数据库。请注意,您将无法一次监控整个联合数据库,而是监控其中的每个成员。

    使用动态管理视图检查与大小相关的条件 1) 应该是直截了当的。检测与流量/性能相关的条件编号 2) 有点困难,因为您首先需要确定有意义的确切指标及其阈值。

    要记住的一件非常重要的事情是,SPLIT 和 DROP 操作的行为非常不同。 SPLIT 是一种联机操作(它不涉及任何停机时间),通过该操作将分区成员划分为两个数据库。数据将在两者之间自动拆分。这种行为意味着拆分可能确实是从自动扩展过程中触发的。

    但是 DROP 是完全不同的。删除联合成员时,Sql Azure 会将其键值范围移动到下级或上级相邻联合成员,但数据本身会被简单地删除。你可以在this文章中得到更详细的描述(在里面搜索“Scaling down”)。基本上,您必须手动从删除的数据库中导出数据并将其手动合并到目标数据库中。从技术上讲,您也许可以通过 Sql Azure 迁移向导的命令行版本自动执行合并操作,但这样做是有风险的。在投入生产之前需要进行大量测试。

    Microsoft 计划对联盟成员 drop 实施自动合并,但这将在未来的版本中实现。就目前而言,我不推荐自动缩减。

    更新

    有兴趣的可以投票支持联合 SQL Azure 数据库上的 MERGE 操作here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-26
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      相关资源
      最近更新 更多