Azure SQL 数据库基准检验概述

概述

Azure SQL 数据库提供了三个具有多个性能级别的服务层。 每个性能级别均提供不断增加的资源集或“能力”,旨在递增地提供更高的吞吐量。

能够量化每个性能级别的递增能力如何转换为更高的数据库性能至关重要。 为此,Microsoft 开发了 Azure SQL 数据库基准检验 (ASDB)。 基准检验将执行在所有 OLTP 工作负荷中找到的基本操作组合。 我们会度量为每个性能级别下运行的数据库实现的吞吐量。

每个服务层和性能级别的资源和能力按数据库事务单位 (DTU) 来表示。 DTU 基于每个性能级别提供的 CPU、内存以及读取和写入速率的混合度量提供了描述性能级别的相对能力的方式。 将数据库的 DTU 等级加倍相当于将数据库能力加倍。 基准检验通过执行实际的数据库操作,同时与提供给数据库的资源成比例地调整数据库大小、用户数和事务率,让我们可以评估每个性能级别提供的不断增长的能力对数据库性能的影响。

通过使用每小时事务数表示基本服务层的吞吐量、使用每分钟事务数表示标准服务层的吞吐量、使用每秒事务数表示高级服务层的吞吐量,可更轻松地快速将每个服务层的性能潜力与应用程序的要求联系起来。

将基准检验结果与实际数据库性能进行关联

请务必了解,ASDB 与所有基准检验一样只具有代表性和指示性。 使用基准检验应用程序完成的事务率不会与使用其他应用程序可能完成的事务率相同。 基准检验包含不同事务类型的集合,这些事务针对包含一系列表和数据类型的架构运行。 虽然基准检验执行普遍适用于所有 OLTP 工作负荷的相同基本操作,但它并不代表任何特定类别的数据库或应用程序。 基准检验的目标是为在上调或下调性能级别时可预期的数据库相对性能提供合理的指导。 实际上,数据库具有不同的大小和复杂度,会遇到工作负荷的不同组合,并且将以不同方式进行响应。 例如,IO 密集型应用程序可能会更快地达到 IO 阈值,或者 CPU 密集型应用程序可能会更快地达到 CPU 限制。 不能保证任何特定数据库在不断增加的负载下会以与基准检验相同的方式扩展。

基准检验及其方法将在下面更详细地说明。

基准检验摘要

ASDB 将度量联机事务处理 (OLTP) 工作负荷中最常发生的基本数据库操作组合的性能。 尽管在设计基准检验时考虑到了云计算,但已将数据库架构、数据填充和事务设计为广泛代表 OLTP 工作负荷中最常用的基本元素。

架构

架构设计为具有足够的多样性和复杂度以支持各种操作。 基准检验针对包含六个表的数据库运行。 这些表分为三个类别:固定大小、缩放和增长。 有两个固定大小表、三个缩放性表和一个增长性表。 固定大小表的行数不变。 缩放性表具有一个与数据库性能成正比的基数,但在基准检验期间不会更改。 增长性表的大小调整在初始加载时与缩放性表类似,但随后在运行基准检验的过程中随着插入和删除行基数会更改。

架构包含数据类型(包括整数、数字、字符和日期/时间)的组合。 架构包含主键和辅助键,但不包含任何外键(即,表之间没有任何引用完整性约束)。

数据生成程序会生成初始数据库的数据。 使用不同策略生成整数和数字数据。 在某些情况下,值在某一范围内随机分布。 在其他情况下,会对一组值进行随机排列以确保维持特定分布。 文本字段从加权单词列表中生成以产生具有真实感的数据。

数据库根据“比例因子”调整大小。 比例因子(简称为 SF)确定缩放性表和增长性表的基数。 如下面的“用户和步调”部分中所述,数据库大小、用户数和最大性能全都相互成比例缩放。

事务

工作负荷由九种事务类型组成,如下表中所示。 每种事务旨在强调数据库引擎和系统硬件中的特定一组系统特征,与其他事务形成高反差。 此方法可更方便地评估不同组件对总体性能的影响。 例如,事务“Read Heavy”将从磁盘生成大量的读取操作。

事务类型 说明
Read Lite SELECT;在内存中;只读
Read Medium SELECT;大多数在内存中;只读
Read Heavy SELECT;大多数不在内存中;只读
Update Lite UPDATE;在内存中;读写
Update Heavy UPDATE;大多数不在内存中;读写
Insert Lite INSERT;在内存中;读写
Insert Heavy INSERT;大多数不在内存中;读写
Delete DELETE;在内存中和不在内存中的组合;读写
CPU Heavy SELECT;在内存中;相对较高的 CPU 负载;只读

工作负荷组合

从具有以下整体组合的加权分布中随机选择事务。 整体组合的读/写比率大约为 2:1。

事务类型 组合百分比
Read Lite 35
Read Medium 20
Read Heavy 5
Update Lite 20
Update Heavy 3
Insert Lite 3
Insert Heavy 2
Delete 2
CPU Heavy 10

用户和步调

基准检验工作负荷由一个工具驱动,该工具通过一组连接提交事务以模拟大量并发用户的行为。 虽然所有连接和事务都由计算机生成,但为简单起见我们将这些连接称为“用户”。 虽然每个用户都独立于所有其他用户进行操作,但所有用户都执行相同的步骤循环,如下所示:

  1. 建立数据库连接。
  2. 重复执行,直到收到退出通知:
    • 随机选择事务(从加权分布中)。
    • 执行所选的事务并测量响应时间。
    • 等待步调延迟。
  3. 关闭数据库连接。
  4. 退出。

随机选择了步调延迟(在步骤 2c 中),但却使用了平均值为 1.0 秒的分布。 因此,每个用户平均每秒最多可以生成一个事务。

缩放规则

用户数由数据库大小(以比例因子单位数表示)确定。 每个五个比例系数单位有一个用户。 由于步调延迟,一个用户平均每秒最多可以生成一个事务。

例如,比例因子为 500 (SF = 500) 的数据库将具有 100 个用户,并且可以实现的最大速率为 100 TPS。 若要驱动更高的 TPS 速率,需要更多的用户和更大的数据库。

下表显示了为每个服务层和性能级别实际保留的用户数。

服务层(性能级别) 用户 数据库大小
基本 5 720 MB
标准 (S0) 10 1 GB
标准 (S1) 20 2.1 GB
标准 (S2) 50 7.1 GB
高级 (P1) 100 14 GB
高级 (P2) 200 28 GB
高级 (P6/P3) 800 114 GB

度量持续时间

有效地运行基准检验需要稳定状态度量持续时间至少为 1 小时。

指标

基准检验中的关键指标是吞吐量和响应时间。

  • 吞吐量是基准检验中至关重要的性能度量值。 吞吐量以每时间单位的事务数的形式报告,计算所有事务类型。
  • 响应时间是性能可预测性的度量值。 响应时间约束因服务等级而异,服务等级越高,响应时间要求越严格,如下所示。
服务等级 吞吐量度量值 响应时间要求
高级 每秒事务数 0.5 秒时达到 95%
标准 每分钟事务数 1.0 秒时达到 90%
基本 每小时事务数 2.0 秒时达到 80%

结束语

Azure SQL 数据库基准检验可以度量在整个可用的服务层和性能级别的范围内运行的 Azure SQL 数据库的相对性能。 基准检验执行联机事务处理 (OLTP) 工作负荷中最常发生的基本数据库操作组合。 基准检验通过度量实际性能可提供更有意义的有关更改性能级别对吞吐量的影响的评估,而不是只是列出每个级别提供的资源(例如,CPU 速度、内存大小和 IOPS)。 将来,我们将继续改进基准检验以扩大其使用范围并扩展所提供的数据。

资源

SQL 数据库简介

服务层和性能级别

单一数据库的性能指南