Azure-Sql-Database

新伺服器的 SQL Azure 性能

  • November 11, 2014

我有一個相當小的數據庫 ~200MB,在 SQL azure 的網路版中執行時速度非常快。我已經將它切換到基本版本,突然之間,一組執行時間不到 1 秒的查詢現在需要約 25 秒(在基本模式下執行)將它切換到 D1 並將速度減半到 12.5秒。

使用普通伺服器在本地執行,查詢耗時約 1 秒。

在這兩個測試中,我是唯一一個使用數據庫的人。我很震驚它執行得這麼慢。我知道新數據庫的工作方式略有不同,但對性能差異感到非常震驚。

有沒有人對如何優化數據庫設計以提高在 SQL Azure 中執行時的性能有任何好的建議。

如果有人有任何建議讓我檢查一下,我很樂意聽到。我認為這是它在一次點擊中執行的查詢數量。

我即將創建一個視圖來一次完成所有查詢。我已經在數據庫和基本版上執行的東西是即時的。

這只是一個小測試應用程序,所以我很容易改變,但我擔心我們的產品應用程序可能會遇到同樣的問題。

我是 Andrew 上面提到的部落格文章的作者。

新的服務層按層擴展(即限制)I/O、CPU 和記憶體。更高級別/層級提供更多資源。儘管我的測試提供了一些指示性 I/O 編號,但沒有記錄資源類型的限制(只有模糊的 DTU)。

更新:我現在已經測試了服務層的記憶體限制,請參閱: http ://cbailiss.wordpress.com/2014/11/11/azure-sql-database-memory-limits-by-service-tier/

在優化設計方面,我會首先看看我在哪種資源類型上達到了極限。主數據庫中的 sys.resource_stats DMV 具有顯示您在該服務層/級別中隨時間使用的資源使用百分比(例如 CPU 百分比)的列。如果您能夠執行測試至少半小時,然後檢查該表並查看其中一列是否達到 100% 的最大值,那麼您就會知道您的綁定位置。當然,解決這個問題可能會也可能不會容易/可能,但你有一個起點。sys.dm_db_resource_stats 是一個較新的 DMV,它以 15 秒的間隔包含最後一小時的數據,因此對於較短的測試很有用。

如果 I/O 是限制因素,那麼對於小型數據庫,一旦數據進入緩衝池,我預計性能會顯著提高。在我進行的測試和部落格中,這是一個非常清晰的模式,例如,在基本版的這個順序讀取測試中看到了顯著的性能提升:http: //cbailiss.files.wordpress.com/2014/07/2014-07-04 -seqsel-metrics1.png 取自這篇文章: http ://cbailiss.wordpress.com/2014/07/06/microsoft-azure-sql-database-performance-tests-sequential-selects/

當然,如果/當緩衝池被清除時,性能將再次下降。理論上,新層應該更少發生這種情況 - 因為新層中保證的性能水平應該防止在 Web/業務中發生的嘈雜鄰居/負載平衡數據庫故障轉移。

但是,據我所知,沒有關於分配給新服務層中每個數據庫的緩衝池大小的記錄數字/保證。

希望有幫助

克里斯

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