freedom 2017-02-07
2016年年末,Microsoft发布了Azure SQL数据库内存技术通用版。该内存处理技术仅能在Azure Premium数据库层使用,它提升了联机事务处理(OLTP)以及混合事务分析处理场景中聚集列存储索引和非聚集列存储索引的性能。
Azure SQL数据库与SQL Server数据库使用了同样的内存技术。之前,Microsoft首先分别在SQL Server 2012和SQL Server 2014的列存储索引及联机事务处理中引入了内存能力。
Microsoft声称通过内存技术联机事务处理的性能最高可以提升30%,分析工作负载最高可以快100x,非常适合于寻找以下内存用例的组织:
得益于内存技术所带来的更加有效的查询和事务处理,组织不需要修改服务层就能获得一定的伸缩空间;除此之外,内存技术还能帮助组织降低成本。通常情况下,组织不需要升级数据库的定价层就能实现性能提升。在某些情况下,甚至降低定价层依然可以实现性能提升。
Microsoft认为在Azure SQL数据库中使用内存技术有以下好处:
在最近的一个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