2012-02-04 28 views
0

我在網上搜索了一下關於SQL Azure上「過多的資源使用情況」,仍然無法得到一個想法。什麼是SQL Azure中的「過度使用資源」?

有些文章顯示查詢時間太長,內存太多會導致「資源過度使用」。但是如果我使用簡單的查詢,簡單的數據結構,會發生什麼?

例如:我得到一個1G SQL Azure作爲會話狀態。由於會話是一個非常小的字符串,並且一直保存/刪除,所以我認爲它不會同時增長到1G數百萬個會話。你可以計算一百萬次會話,每次20個字符,只佔用20M空間,考慮20分鐘到期等等,甚至不能接近1G。但是這些查詢應該是很多很多的。每個查詢都將通過索引非常簡單快捷。

我想知道,如果這種用法會被視爲「資源過度使用」?是否有任何硬編號限制您的使用?

順便說一句,如果全部發生在同一個數據中心,那麼所有成本都是1G數據庫,每月10美元,對吧?

+1

請注意,不支持在SQL Azure中存儲會話,但如果您確實想要這樣做,請查看:http://blogs.msdn.com/b/sqlazure/archive/2010/08/04 /10046103.aspx – Tom

+0

謝謝湯姆,我不打算在那裏存儲會話。我只是用它作爲示例 –

回答

3

不幸的是,答案是'它取決於'。我認爲這可能是SQL Azure Query Throttle上的最佳參考(帶指導):TechNet Article on SQL Azure Perormance這將提供有關受監視的度量標準和節流機制的詳細信息。

我說這取決於的原因是油門對任何給定的用戶都是非確定性的。這是因爲節氣門將根據節點上的總負載(Azure DC中的物理SQL Server)激活。雖然受到限制的用戶是提供最大負載的用戶,但節流閥啓動的級別將取決於節點上的總負載。所以如果你在一個安靜的節點(其他租戶數據庫相對不活躍),那麼你將能夠比在繁忙的節點上獲得更多的吞吐量。

將1GB SQL Azure DB用於會話狀態存儲非常有吸引力;你已經確定了成本效益。你雖然冒了風險。減少這種風險的一種方法是將至少兩個SQL Azure 1GB數據庫進行分區,並根據其中一個數據庫是否開始敲擊節流閥來自行調整負載。

另一個選擇,如果你想確定吞吐量是使用WIndows Azure Cache來支持你的sesion狀態存儲。 Cache對查詢吞吐量有嚴格的預定義限制,因此您可以更輕鬆地爲其規劃Azure Caching FAQ including Limits。緩存方法可能會更貴一些,但問題風險較低。

+1

沒有機制允許您的會話狀態跨不同的SQL Azure數據庫進行分區。 –

+0

SQL1上的a-m和SQL2解決方案上的n-z的排序。不是動態的 –

+0

@Chris,發行是個好主意。但是,如何知道DB是否開始踩油門?大量的503錯誤? –