2012-03-28 71 views
2

我正在設置在Windows Azure上運行的系統,對此我預計會有大量數據和高流量。爲了處理它,我正在設計一個聯合數據庫。我有興趣在需要時讓應用程序本身SPLIT(或DROP)聯合數據庫。有兩個原因可以觸發這些操作的發生:1)數據庫的大小達到了Windows Azure允許的限制; 2)服務器中的流量過高,並且SPLIT操作會提高性能,保持低響應時間(運行速度快)。 (反向操作基於類似的推理)。如何在SQL Azure中分片時觸發SPLIT和DROP的操作

我的問題是:如何以編程方式檢測這兩個條件?

回答

1

您可以使用Sql Azure Dynamic Management Views以編程方式監視Sql Azure數據庫。請注意,您將無法一次監視整個聯邦數據庫,而只能監視其各個成員。

使用動態管理視圖來檢查條件1),與大小相關的條件應該是直截了當的。檢測條件編號2)與流量/性能相關,因爲您首先需要確定有意義的確切指標及其閾值,因此更難一些。

要記住的一件事非常重要,就是SPLIT和DROP操作的行爲非常不同。 SPLIT是一個在線操作(它不涉及任何停機時間),通過它將分區成員分成兩個數據庫。數據將在兩者之間自動分割。這種行爲意味着分割確實可能會從自動縮放過程中觸發。

但是DROP完全不同。在刪除聯合成員時,Sql Azure會將其鍵值範圍移至較低或較高的鄰居聯合成員,但數據本身只是被刪除。您可以在this文章(在其中搜索「縮小」)中獲得更詳細的說明。基本上,您將不得不手動導出已刪除數據庫中的數據,並手動將其合併到目標數據庫中。從技術上講,您可能能夠通過命令行版本的Sql Azure遷移向導自動執行合併操作,但這樣做有風險。在投入生產之前需要進行大量測試。

微軟正計劃在聯邦成員下落實施自動合併,但這將在未來的版本中發生。就目前而言,自動縮小並不是我會推薦的。

更新

對於那些有興趣,你可以投票支持對SQL聯合Azure數據庫here合併操作。

相關問題