Performance

SQL Azure 中標準和高級性能層的 DTU 如何比較?

  • April 15, 2019

我們最近觀察到在 Standard3 性能層中執行的 SQL Azure 數據庫的性能嚴重下降 - CPU 使用率在短短一小時內從百分之十到百分之五十到幾乎百分之一百。因此,我們將性能層更改為 Premium2,CPU 使用率立即降至 8% 左右。

Standard3 聲稱提供 100 個 DTU,Premium2 聲稱提供 250 個 DTU。這意味著 8% 的 P2 只是 20 個 DTU,這與使用 Standard3 中的所有 100 個 DTU 相差甚遠。

這些 DTU 有什麼不同嗎?否則,當從 100 DTU 性能層切換到 250 DTU 性能層時,使用率的突然下降怎麼可能?

在查看這兩個級別的定價時,我同樣感到困惑。標準成本 100 個 DTU $ 150/mo and 125 DTUs on Premium costs $ 465 / mo,我認為必須有其他東西來解釋這種差異。我認為這條線來自https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tiers-dtu#choosing-a-service-tier-in-the-dtu-based -purchasing-model必須說明區別:

                           | Standard                   | Premium
IO throughput (approximate) | 2.5 IOPS per DTU           | 48 IOPS per DTU
IO latency (approximate)    | 5 ms (read), 10 ms (write) | 2 ms (read/write)

所以看起來 Premium DTU 的價值實際上是 Standard DTU 的 19 倍

Azure 數據庫的性能以 DTUS 表示,這意味著每秒可以完成的事務數。此外,它還限制了數據庫將獲得的最大記憶體、cpu、IO 量。有關更多詳細資訊,請參見下表和注意會話請求部分..

在此處輸入圖像描述

我希望上圖能闡明不同數據庫層之間的差異。下面是 Azure 文件在何時使用不同數據庫層時必須說明的內容。

在此處輸入圖像描述

每當您想估計 Azure 數據庫的性能時,您都需要查看下面的 DMVS,它提供了有關以 IO、日誌、記憶體、CPU 表示的 DTU 使用情況的更多詳細資訊。

–這個 DMV 只包含一小時的數據,但每 15 秒擷取一次

SELECT  
   AVG(avg_cpu_percent) AS 'Average CPU Utilization In Percent', 
   MAX(avg_cpu_percent) AS 'Maximum CPU Utilization In Percent', 
   AVG(avg_data_io_percent) AS 'Average Data IO In Percent', 
   MAX(avg_data_io_percent) AS 'Maximum Data IO In Percent', 
   AVG(avg_log_write_percent) AS 'Average Log Write Utilization In Percent', 
   MAX(avg_log_write_percent) AS 'Maximum Log Write Utilization In Percent', 
   AVG(avg_memory_usage_percent) AS 'Average Memory Usage In Percent', 
   MAX(avg_memory_usage_percent) AS 'Maximum Memory Usage In Percent' 
FROM sys.dm_db_resource_stats; 

–此 DMV 包含 14 天的數據,擷取間隔為 5 分鐘

SELECT start_time, end_time,    
 (SELECT Max(v)    
  FROM (VALUES (avg_cpu_percent), (avg_physical_data_read_percent), (avg_log_write_percent)) AS value(v)) AS [avg_DTU_percent]  
FROM sys.resource_stats 
WHERE database_name = '<your db name>' 
ORDER BY end_time DESC; 

每當您看到 DTU 指標始終保持在 90% 時,它就是瓶頸的一個指標,並且可以以同樣的方式進行故障排除,我們對我們的本地伺服器進行故障排除。

比如說,你看到通過 DMV 擷取的數據在一段時間內 CPU 一直保持在 90%,你可以從收集導致高 CPU 的查詢開始,看看是否可以調整它們以消耗更少的 cpu。當所有您的調整努力已經用盡,那麼您可能需要絕對升級到更高級別

參考資料: https ://azure.microsoft.com/en-in/documentation/articles/sql-database-performance-guidance/#monitoring-resource-use-with-sysresourcestats

引用自:https://dba.stackexchange.com/questions/133510