2016年年末,Microsoft發布了Azure SQL數據庫內存技術通用版。該內存處理技術僅能在Azure Premium數據庫層使用,它提升了聯機事務處理(OLTP)以及混合事務分析處理場景中聚集列存儲索引和非聚集列存儲索引的性能。
Azure SQL數據庫與SQL Server數據庫使用了同樣的內存技術。之前,Microsoft首先分別在SQL Server 2012和SQL Server 2014的列存儲索引及聯機事務處理中引入了內存能力。
Microsoft聲稱通過內存技術聯機事務處理的性能最高可以提升30%,分析工作負載最高可以快100x,非常適合于尋找以下內存用例的組織:
得益于內存技術所帶來的更加有效的查詢和事務處理,組織不需要修改服務層就能獲得一定的伸縮空間;除此之外,內存技術還能幫助組織降低成本。通常情況下,組織不需要升級數據庫的定價層就能實現性能提升。在某些情況下,甚至降低定價層依然可以實現性能提升。
Microsoft認為在Azure SQL數據庫中使用內存技術有以下好處:
內存聯機事務處理可提升吞吐量并降低事務處理的延遲。 聚集列存儲索引可減少存儲占用(高達10倍)并提升報告和分析查詢的性能。將其與數據集市中的事實數據表結合使用,可在數據庫中容納更多數據并提升性能。將其與操作數據庫中的歷史數據結合使用,可存檔并查詢高達10倍的額外數據。 用于混合事務分析處理 (HTAP)的非聚集列存儲索引可以讓用戶直接查詢操作數據庫以獲取實時的業務見解,無需運行昂貴的抽取、轉換、加載(ETL)過程,無需等待數據倉庫填充。通過非聚集列存儲索引可以對聯機事務處理數據庫執行快速地分析查詢,同時減少對運行負載的影響。 用戶還可以將內存聯機事務處理和列存儲索引結合到一起使用。可以使用具有列存儲索引的內存優化表,以便于快速地對相同數據執行事務處理并運行分析查詢。在最近的一個Data Exposed演講中,來自于Microsoft的高級技術布道者Scott Klein和高級項目經理Jos de Bruijn展示了一個使用Azure SQL數據庫內存處理的范例。他們構建了一個可以模擬物聯網設備遙測輸入的應用程序。在該示例中,他們模擬了一個100萬電表同時向數據庫發送用電信息的場景,示例開始的時候Azure SQL數據庫并沒有啟用內存對象,結果CPU和Log IO承受了非常大的壓力,CPU占用率徘徊在89%左右,Log IO占用率達到了86%。在啟用了內存對象優化之后,CPU占用率降到了10.47%,Log IO占用率降到了34%。
圖片源: (屏幕截圖) https://channel9.msdn.com/Shows/Data-Exposed/In-Memory-OTLP-in-Azure-SQL-DB
在遇到性能壓力的時候,開發者可能會想提升Azure SQL數據庫的吞吐量單位(DTU)。現在,面對性能挑戰的時候,人們的答案可能是優化而不是擴展。Quorum Business Solutions公司的解決方案架構師Mark Freydl解釋道:
我們針對石油和天然氣的物聯網平臺全年必須保持7*24小時運行,因此性能可擴展是非常關鍵的。Azure SQL數據庫為少數關鍵操作所提供的內存聯機事務處理表和本地編譯的存儲過程可立即將總體DTU消耗降低70%。
除了物聯網遙測示例之外,Microsoft還提到了一些其他的可使用內存處理的場景,包括金融交易、游戲、ASP.NET會話管理、Tempdb替代以及避免無效的抽取轉換加載操作。
圖片源: (屏幕截圖) https://channel9.msdn.com/Shows/Data-Exposed/In-Memory-OTLP-in-Azure-SQL-DB
查看英文原文:Improving Azure SQL Database Performance Using In-Memory Technologies