Performance

SQL Azure 插入查詢在 V12 上比 V11 慢十倍?

  • February 3, 2016

大約兩週前,我注意到性能下降影響了我們使用 SQL Azure 後端的一個應用程序。它 90% 的時間在 S1 層的 V12 上執行,有時擴展到 S2、S3 或 P1。

基本上,我的查詢執行時間明顯變慢,尤其是在 INSERT 查詢上。所以我測試和基準測試,測試和基準測試,然後測試和基準測試更多。每一步我都試圖將不確定因素排除在外。事實證明,自從我們遷移到 V12 S1 後,性能比以前慢了很多。

我最終想出的東西很容易重現:在 Azure 門戶中創建兩個新的範例數據庫 (Adventureworks_LT)。一個在新的 v12 伺服器上,另一個在新的 V11 伺服器上。兩層 S1。

然後在兩者上執行我的基準測試(有點):

DECLARE @start_time DATETIME, @end_time DATETIME
   SET @start_time = CURRENT_TIMESTAMP

   DECLARE @cnt INT = 0;
   DECLARE @until INT = 100;
   DECLARE @timeNow DATETIME;

   WHILE @cnt < @until
   BEGIN
      Set @timeNow = CURRENT_TIMESTAMP;

      INSERT INTO dbo.ErrorLog
       (   
           ErrorTime,
           UserName,
           ErrorNumber,
           ErrorMessage
       ) 
       VALUES 
       (    
           @timeNow,
           'BENCHMARK',
           DATEDIFF(MILLISECOND,@timeNow,CURRENT_TIMESTAMP),
           'BENCHMARK'
      )

      SET @cnt = @cnt + 1;
      WAITFOR DELAY '00:00:00:500'; /* wait 500 miliseconds*/
   END


   SET @end_time = DateAdd(MILLISECOND,(@until)*-500.,CURRENT_TIMESTAMP)
   /*subtract 500ms per iteration to make up for the built-in delay*/

   SELECT DATEDIFF(ms, @start_time, @end_time) as 'total query execution time', DATEDIFF(ms, @start_time, @end_time)/@until as 'average query execution time'

   SELECT  * FROM sys.dm_db_resource_stats;

我的結果:

V11平均執行時間:17ms

V12平均執行時間:131ms

有些執行差異大於其他執行,但 V11 每次都大大優於 V12。

sys.dm_db_resource_stats 現在顯示 DTU 限制達到最大值,甚至接近該值的跡象。那麼你認為這裡發生了什麼?我確信我正在做某事,但我的微軟支持人員一直在說,優化、擴大、分析您的查詢等。

我想我只是在尋找具有類似經驗的人,他們確實找到了微軟的根本原因,或者甚至可以告訴我我的基準不好的人。

我收到了來自微軟支持的答案,這是有道理的。無論如何,對於未來的搜尋:

無論是什麼平台,版本(不是 Web/Biz)都提供了確保 https://azure.microsoft.com/en-us/documentation/articles/sql-database-benchmark-指定的 DTU 和響應約束的能力概述/#metrics (查看度量部分)基本和標準的響應時間限制在 90 個百分位條上表示為秒,因此隱含地不保證毫秒順序平均值。

總結一下:我們無法通過測量完成特定語句的平均毫秒數來比較 V1 和 V12 的性能。

引用自:https://serverfault.com/questions/753208