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