性能是一个大家经常关注的问题,直接体验就是系统/应用的运行速度、响应时间、并发用户数等。从个人机(PC)、服务器(Server)、虚拟化(Virtualization)、私有云(Private Cloud)到公有云(Public Cloud),性能一直是开发/IT运营持续改进的领域。

当然,性能也是一个需要深入的专业知识的工作,性能的度量(Measurement)、监控(Monitoring)、基准测试(Benchmarking)、调优(Tuning)/优化(Optimization)等,都需要对技术的深入理解,需要专业的工具进行辅助。

当我们由使用SQL Server等数据库服务器,迁移到SQL Database,用PaaS方式来提供数据库服务,对于性能的监控及改进,也需要有新的工作内容及方式。

对于从SQL Server到SQL Database的迁移,请参考:从SQL Server到Microsoft Azure SQL Database的技术迁移及利器

早前的SQL Database,提供两个版本:Web和Business。目前这两个版本都已停用,并将最终退休。

目前提供三个版本:基本(Basic)、标准(Standard)和高级(Premium),而对于标准Standard和高级Premium版本,还有不同的性能级别(S0/S1/S2及P1/P2/P3),可以根据不同的性能需求提供相应规格支持。其中,“基本”级别主要用于具有轻型事务工作负荷的应用程序;“标准”级别适用于事务型工作负载;“高级”级别专为任务关键型数据库设计,更好地保证高级的业务连续性。

对于SQL Database的服务级别及定价,可以参考:http://www.windowsazure.cn/pricing/details/sql-database/

对于先前使用Web和Business版本的数据库,可以转换为基本、标准或高级版本,具体步骤非常简单,如下图,在管理门户的”缩放”界面,选择相应的版本及服务级别、大小,即可完成转换/迁移。

clip_image002

此外,可以通过其他方式来调整,例如,在PowerShell中,使用Set-AzureSqlDatabase命令来完成;在REST API中,可以通过Update Database / ServiceLevelObjectiveId来调整;此外,对于DBA,可以使用ALTER DATABASE … MODIFY (EDITION = …)的T-SQL命令来完成。

反映在上述的版本升级的背后,是一个关于性能提升及可管理性的重要改进,即SQL Database的可规划/预测性(Predictable Performance)。

在SQL Database中有一个重要的概念DTU,如上图中所列,即Database Throughput Unit,每个DTU是针对计算(CPU)、内存(Memory)、读(Read)和写(Write)等因素进行约束的基本单元。

所以,基于自己业务规模的统计/预测,及相关的基准测试结果,可以进行性能的规划和调优。其中重要的因素包括:

  • 版本:基本(Basic)、标准(Standard)和高级(Premium)
  • 性能级别(针对上述不同版本)及对应的DTU数量,如S0/S1/S2及P1/P2/P3等
  • 数据库大小(针对上述不同版本而不同),特别是最大值(例如500G)
  • 单位价格,即每小时/月的价格

对于对SQL Database性能的监控(Monitoring)和度量(Measurement),可以通过很多方式或工具进行控制和管理。

最直接、便捷的方式就是使用Azure管理门户(Management Portal),并可以根据需要增加度量指标,如下图:

clip_image003

对于数据库管理人员(DBA)、开发人员、IT专业人员等,可以通过查询master.sys.resource_stats和userdb.sys.dm_db_resource_stats,获得更详细的性能数据。

更详细的信息,请参考:http://msdn.microsoft.com/en-us/library/dn269979.aspx

此外,可以使用Visual Studio来管理,在安装Azure SDK后,即可在Visual Studio的IDE中来获得SQL Database的性能数据,如下图:

clip_image004