4 月 24 日,我們發佈了 SQL Database 基本級(預覽版)和標準級(預覽版)新服務等級的預覽版以及新的業務連續性功能。 在本博客文章中,我們將深入探究 SQL Database 中新等級的性能。
首先從變革的需求開始。 我們之所以關注新服務等級中的性能(具體地說是可預測性能),主要是受客戶對 SQL Database Web 級和企業級性能的強烈回饋推動。 Web 級和企業級的性能一直都是不可預測的,存在隨機性,這就給運行業務關鍵應用程式的客戶帶來了問題。 我們明白,從客戶角度而言,性能的可預測性非常重要。 客戶告訴我們,如果某個平臺的性能長期不可信賴,那麼就很難構建出能夠在此平臺上可靠運行的系統。
針對這一回饋,我們在 SQL Database 高級(預覽版)之外又推出了基本級(預覽版)和標準級(預覽版)。 高級(預覽版)已于 2013 年 7 月推出預覽版,主要專注于提供可預測的性能。 客戶對高級(預覽版)的回饋非常積極。 基本級(預覽版)和標準級(預覽版)也將向客戶提供這一優勢,而且有新的收費方式。 客戶現在可以將性能作為他們能夠控制的一個杠杆,這也符合當前雲計算行業的需要。 這一杠杆會是客戶從「按存儲定價」的 Web 級和企業級服務模式轉向「按性能+功能定價」這一新模式的主要推動力。
當您在新服務等級中測試應用程式時,請記住我們目前處於預覽階段,也就是說我們仍在對新性能體驗進行持續微調。 我們通過發佈預覽版來仔細傾聽您的回饋,並將基於回饋進一步完善新的服務等級。 您在運行效能測試時,不妨制定週期性重新運行計畫,以確保您能更好地瞭解這些新服務等級中可用的不同性能級別。 我們會在這些預覽版的後續發展階段,盡最大可能發佈更多與性能相關的博客文章。
事實上,根據客戶的回饋,我們剛剛對 5 月 19 日星期一這一周新推出基本級(預覽版)和標準級(預覽版)的輸送量進行了改進:
基本(預覽版):1 個 DTU –> 5 個 DTU
S1:5 個 DTU –> 15 個 DTU
S2:25 個 DTU –> 50 個 DTU
性能是什麼意思?
資料庫性能是一個複雜的話題,通常會採用大量指標來描述它的狀態。 從應用程式角度而言,使用者真正關心的是:
回應時間:特定查詢執行從開始到結束所經過的時間。
輸送量:系統在任何時間點可運行的總體工作或執行速度。 通常情況下,只有當單個執行在指定回應時間內完成時,吞吐率才會被視為有效。
影響回應時間和輸送量的因素有很多,但主要可分為兩類,即應用程式設計和硬體資源。 以下是對資料庫應用程式進行性能故障排除時的一些常見問題示例:
應用程式設計:
是否已創建正確的指數集,為執行查詢提供了最好的平臺?
是否使用了正確的交易隔離等級? 系統是否在無謂地等待鎖定資源?
是否已採用多表批次或預存程序將往返通信最小化?
硬體資源:
是否有執行工作負載的足夠可用資源?
我需要對先後發生的不同類型的工作負載分配多少資源?
在性能方面,新的 SQL 資料庫服務等級可以通過允許客戶升級至提供更多硬體資源的性能級別,説明解決與硬體資源相關的問題。 如果採用的是橫向伸縮設計模式(分區),您可以根據工作負載給不同分區分配新性能級別以提供不同的資源(例如向一個包含高度活躍客戶的分區分配更高的性能級別)。 我們正在積極制定一套詳細的分區指南,為您提供這方面的説明,敬請期待!
此外, 雲設計的最佳實踐之一是持續優化應用程式設計。 這些投資可説明降低對使用更高性能級別的需求,縮減運行資料庫工作負載的成本。
有哪些硬體規格?
運行資料庫工作負載所需的資源可歸結為各種類型的硬體資源,包括 CPU、磁片 IO 操作(讀/寫)和記憶體等。 各個資源中的各個方面又存在巨大差異。 例如,不同類型的內核有不同的時鐘週期和緩存大小,IO 執行規模有大有小,具體取決於資料庫系統在做什麼。 要預測您的應用程式對每種資源實際需要多少,並比對長期利用率,這一任務會非常困難,而且很耗時。 在內部部署環境中,您要對資料庫在其上運行的硬體進行控制,執行上述任務也無可厚非。 移動到雲上,尤其是使用 SQL Database 的一大吸引力就在於,您可以集中精力構建強大的應用程式,而無需勞神管理硬體或補丁及維護資料庫軟體。 客戶告訴我們,他們不想這麼麻煩,只希望輸送量水準能隨時跟上他們的需求。 這也正是我們關注性能的一個願景。
在新服務等級下,我們採用了新的設計原理,可説明確保性能的可預測性。 每個性能級別(基本級(預覽版)、S1、S2、P1、P2、P3)對應不同的資源組(如 CPU、記憶體、IO 等)分配。 資料庫在每個級別中可使用的最大資源量為既定。 設計原理在於,一個資料庫的性能應該大致等同于:在具有對應性能級別同樣資源組的專用電腦上運行時所能實現的性能。 該設計原理是提供可預測性能的基礎。
要瞭解各性能級別的資源差異,我們引進了資料庫輸送量單位 (DTU) 的概念。 DTU 是對各性能級別所分配資源的混合衡量指標。 例如,P1 具有 100 個 DTU,S1 有 15 個 DTU,也就是說,S1 獲得的資源是 P1 的 1/7 左右。 按照上述設計原理,您可以預見在 S1 級別運行的資料庫所擁有的性能級別類似于:在 CPU 速度、記憶體和 IO 能力均為 P1 級別 1/7 左右的專用電腦上運行時所能實現的性能。
從使用者和故障排除角度來看,我們展示了您的資料庫工作負載在各個資源方面所使用的基於當前性能級別的百分比情況,省去了理解不同類型的 IO、磁片佇列長度等諸多麻煩,使您可以輕鬆瞭解相對當前性能級別的資源使用方式。
我們在主資料庫sys.resource_stats視圖中展示了針對 CPU、讀寫使用方式的遙測資料,稍後還會在預覽版中增加記憶體相關資訊。 此視圖包含針對各資源方面平均 5 分鐘(5 分鐘內的總使用方式)收集的資料,這對於衡量您的長期資源需求非常有用。 此遙測資料也可以在入口網站中獲取。 有關查詢sys.resource_stats以及預測所使用 DTU 的更多詳情,您可以閱讀此 MSDN 文章,其仲介紹了有關新服務等級的資訊。
我們知道,提供強大的遙測資料對於性能故障排除非常重要。 敬請期待我們在預覽期間提供更多相應增強功能。
資料庫工作負載生命週期
「使用資料庫」的行為不是單個操作,而是由許多不同類型的操作構成。 這一點聽上去顯而易見,但是在您計算哪個性能級別適合您的資料庫,從而確定為運行資料庫工作負載分配多少資源時卻非常重要。 答案可能並不像「標準(預覽版) S2 @ 200 美元/月」(採用正式發佈版價格)這麼簡單。 雲(尤其是 SQL Database)帶給我們的一大優勢就是靈活縮放能力。 舉例而言,「週一至週四和週六日使用基本(預覽版)應對數量不多的查詢,週五使用 S2 管理在特定時間視窗內運行的較大型批量工作,每個月選一天使用 P1 快速執行大規模 ETL 操作:
(基本(預覽版)價格/ 30 * 25)= 4.16 美元
(S2 價格/ 30 * 4)= 26.7 美元
(P1 價格/ 30 * 1)= 31 美元
總計 61.86 美元/月」
像上例中一樣,許多資料庫的工作負載生命週期將包含有著不同要求的不同子工作負載,例如:
資料庫的初始負載(例如,當您向 SQL Database 遷移時)
正常使用(例如,在正常工作日使用此應用程式的單個部門的使用者活動)
高峰使用(例如,每月一次處理針對整個公司全體員工的報告情況)
大型提取轉換和載入(ETL 或導入/匯出)操作
物理資料庫維護操作(如創建索引)
如果將工作負載按不同要求分類,您將不必一直按峰值負載所需要的性能級別運行,從而可以大大縮減成本。
只需調用指定新服務目標的 Update Database API,您的應用程式代碼可在必要時更改性能級別。 此更改本身是一項非同步作業,您可以使用 Get Database API 監視更改狀態。 您的資料庫在整個更改過程中都將線上可用。
Web 級和企業級對比基本級(預覽版)、標準級(預覽版)和高級(預覽版)
我們經常被問到的一個問題是,新服務等級中的性能與 Web 級和企業級相比如何。 這個問題很難直接回答。 難就難在新服務等級與 Web 版和企業版有著本質的不同。 在 Web 級和企業級中,服務模式僅基於所使用的存儲量,不會考慮任何其他硬體資源。 系統基於保證存儲可用性進行優化,不會考慮用以執行資料庫工作負載的任何其他資源,這是一個根本性的缺陷。 Web 級和企業級中的性能級別和資源可用性取決於不同的因素,如其他客戶在同一電腦中的工作負載以及保護其本身不會過度使用的系統等。 您能否利用這些資源要看運氣,如果不通過新服務等級予以解決,這一問題會隨著時間的推移而越來越突出。
我在文章開頭已經說過,客戶已經明確告訴我們,他們不希望自己的性能體驗不可預測且不確定。 新推出的基本級(預覽版)、標準級(預覽版)和高級(預覽版)專注于以不同價位提供高性能的可預測性。 也就是說,系統優化不僅是為了提供存儲,也是為了兼顧執行資料庫工作負載所需要的其他硬體資源。
這些服務等級所採用的設計原理有著本質的不同,因此就如同在比較蘋果和柳丁一樣,並無可比性。
為了説明您瞭解 Web 級和企業級的資源使用方式,我們在 sys.resource_stats 中提供了所使用資源的百分比情況(上文已提及)。 遙測資料中針對 Web 級和企業級資源百分比計算的參考點設置為標準(預覽版) S2 的 ½,因為這是目前 Web 級和企業級資料庫的一般價位。 請注意,這只是遙測資料的參考點,並不表示 Web 級和企業級中的可用資源量。 如上所述,Web 級和企業級中的可用資源量存在不確定性。 但想準確瞭解您的資料庫所需的性能級別,您應當升級至這些新服務等級之一,然後運行您的工作負載,查看 sys.resource_stats。 針對基本級(預覽版)和標準級(預覽版)服務僅在新建的邏輯伺服器中可用的現有限制條件,會在後續預覽階段予以解除,屆時您將不必導入 Web 級和企業級資料庫來測試新服務等級。