2012-07-01 70 views
3

在將一些數據轉換爲SQL Azure時,我注意到了一個意外的行爲。 我做了一個快速測試,結果如下:SQL Azure性能低下

我有一個表中的數據庫1M記錄和數據庫大小爲230MB,這沒有非聚集索引。

我做了一個簡單的測試用相同的架構創建一個新表,剛纔複製的數據從一個表到另一個像這樣:

INSERT INTO [dbo].[lete_new] 
      ([str_en] 
      ,[str_en_fp]) 
SELECT [str_en] ,[str_en_fp] FROM [dbo].[lete] 

首先,在我的本地工作站(SELECT [str_en ],[str_en_fp] FROM [dbo]。[lete])需要8秒鐘,因此最重要的是執行插入所需的時間。 當我在本地WS上運行插入時,需要10秒鐘將數據複製到新表中。令人驚訝的是,當我在Azure上運行相同的查詢時,耗時30秒。

我知道這不完全是一個編程問題,但仍然會影響程序性能,我想知道爲什麼性能下降?

回答

5

這裏有很多事情要做。通過這種類型的操作,影響最大的是本地驅動器上的存儲系統與SQL Azure運行的存儲系統不同。請記住,所有寫入都會被複制,以便快速處理失敗。有了這麼多的寫作,我懷疑這是大部分區別的地方。

另外,請記住,SQL Azure實例是與其他用戶共享的,它位於商品硬件上。具有專用於單個用戶(桌面)的4個內核的系統的性能將與任何與其他用戶(SQL Azure)一起運行的服務器不同。

一般而言,您無法將單個專用資源的性能等同於雲提供商的性能。這些好處來自於降低成本增加和擴大而不是擴大規模。

+2

正確的是,在閱讀您的答案後,我記得現在SQL Azure可以隨時在數據中心的不同區域中保留至少3個數據庫實例。在對一個數據庫進行更新時,SQL Azure要求至少有2個數據庫在允許提交之前獲取更改。 –