深度技术揭秘 | 大促狂欢背后,如何有效评估并规划数据库计算资源?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 经过“双11”、“618”这类互联网促销活动的验证,越来越多的互联网公司采用不定期营销活动来刺激消费,达到提升营收能力的目标。然而,在每一次业务狂欢的背后,如何科学地为促销活动准备相应的计算资源就变成了困扰开发人员的常态问题。此外,据Gartner统计,在疫情的影响下越来越多的企业开始加速关键业务模块从本地云往公有云上迁移,以提升企业服务的稳定性和容灾能力。如何有效评估并规划计算能力、计算引擎、带宽等关键资源的容量成为了云场景下的一项技术挑战。

1. 背景


经过“双11”、“618”这类互联网促销活动的验证,越来越多的互联网公司采用不定期营销活动来刺激消费,达到提升营收能力的目标。然而,在每一次业务狂欢的背后,如何科学地为促销活动准备相应的计算资源就变成了困扰开发人员的常态问题。此外,据Gartner统计,在疫情的影响下越来越多的企业开始加速关键业务模块从本地云往公有云上迁移,以提升企业服务的稳定性和容灾能力。如何有效评估并规划计算能力、计算引擎、带宽等关键资源的容量成为了云场景下的一项技术挑战。


针对这个场景,阿里云数据库自治服务团队(DAS)推出了智能压测服务,致力于解决大促场景下计算资源评估问题、迁移上云的离线资源容量规划、跨引擎迁移等数据库选型评估问题。DAS(Database Autonomy Service)是一种基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务,帮助用户消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效,解决方案架构见图1。image.png


2. 智能压测的组成


压测,即压力测试,是确立系统稳定性的一种测试方法,通常在系统正常运作范围之外进行,以考察其功能极限和隐患。一般针对网络服务器测试从传统的意义来讲是对网络服务器不断施加“压力”的测试,是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。在数据库场景下,压测通常指的是对数据库的性能进行测试,通过对数据库服务器不断提高执行SQL的数量和并发度,来测试既定规格下的数据库是否可以持续稳定地对外提供服务,并基于测试结果做出相应的决策,包括调整数据库规格、部署形态、业务SQL优化等等。通常情况下,完成一次压测主要涉及到三个关键部分:压测数据准备、流量回放和结果分析,如图2所示。


image.png

图2 智能压测的关键组成

压测数据:在数据库场景下,流量数据为SQL语句,但仅有执行时SQL语句是不够的。SQL语句在数据库内的执行过程中,真实数据分布和库表索引都会影响其执行时间。因此,数据库场景下,压测数据包含了数据库的库表结构、库表内数据、索引和SQL执行语句。此外,在一些有严格安全要求的特殊场景下,仅表结构允许复用,而具体原始数据不能被用于流量压测。针对这种情况,我们提出了智能生成数据的算法,产出符合原始数据分布的模拟数据用于回放。


流量回放技术:传统性能压测过程中,由于未对SQL执行语句按照原始流量的并发情况和执行次序做限制,出现压测与原始业务流量效果差异较大的现象,导致单次数据库资源评估任务中通常会进行多次压测,然后对性能结果数据求平均后再评估资源。这种方法需要耗费大量的测试时间,并且需要测试人员具有一定的数据库经验,通常需要DBA进行操作。针对这一问题,DAS对单次压测进行技术改进,通过压测幂等技术确保压测回放后的性能表现与原始业务流量性能相近,且无须多次回放,大幅节省了资源评估的时间并降低了对数据库压测经验的要求。


压测结果分析:有效的结果分析可以帮助用户合理的选择资源规格,并发现业务流量回放过程中存在的隐患。数据库的关键性能参数、关键性能指标的对比、SQL优化建议等数据可帮助用户理解资源差异和潜在优化点,辅助做出后续决策。


3. 智能压测技术内幕

3.1. 智能数据生成技术

关于数据库性能压测,业界存在很多开源的工具,例如Sysbench、mysqlslap、tpcc等。这类工具均可以通过并发大量数据库连接结合一定的查询语句来制造出一定的SQL流量,达到模拟业务高强度使用数据库的效果。但模拟场景下的性能表现通常和业务实际性能表现相差较大,故模拟压测不能满足计算资源评估的要求。利用业务数据库中的真实数据进行压测成为资源评估的基本条件。针对阿里云数据库用户,可通过SQL审计功能,方便的获取压测所需要的数据。而对于云下或阿里云ECS自建数据库的用户,较难获取历史上的库表数据或流量数据来做压测,甚至在一些有严格安全数据要求的场景下,连原始数据和SQL流量数据都是不被允许使用的。


目前,我们在单表查询场景下采用智能数据生成技术来产出符合业务数据分布的数据,可用于压测并评估资源。这个算法的前提是,需要我们已知一些SQL模版,以及这些SQL模版对应的执行指标,如RT,rows_sent,rows_affected等,我们希望实例化这些SQL模版来生成SQL,使得这些SQL在目标库表上执行时能得到相似的执行指标(这里我们假设同一模版的SQL都会以相同的执行计划来执行)。如图3所示,我们需要搜索相应的参数a和b来实例化这条SQL模版,使得在给定数据执行时返回行数为1。


image.png

图3 SQL模板


在搜索SQL参数的时候,对于点查询/点更新,可以直接利用主键和唯一键来做参数搜索。而对于返回行数/更新行数大于1行的情况,我们使用基于采样的基数估计方法来估计实例化后SQL的返回/更新行数,进而进行SQL模版实例化的参数搜索。


图4是我们对于钉钉一个读写业务在早高峰期的流量生成压测,可以看到流量生成压测和真实业务在多个指标上都有相似的表现,证明生成的数据可以有效的模拟线上真实数据。


image.png

图4 基于生成数据的压测效果


3.2. 压测幂等技术

在数据准备完成之后,如何有效且可重复的进行流量回放是智能压测中的另一项核心技术。尽管业内已有的开源工具均可以通过并发大量数据库连接结合一定的查询语句来制造出一定的SQL流量,达到模拟业务高强度使用数据库的效果。但是,在使用了真实的且有一定数据倾斜的业务模型之后,会发现一个比较严重的问题:假如多次测试同一个模型同一份数据在RDS MySQL下的性能效果,在数据有倾斜的情况下,两边的性能曲线很可能对不上。例如,第一轮压测在A时间点查到了某一个数据,而第二次压测很可能在B时间点才查到,这样对分析问题就有了很大干扰,如图5所示,两条曲线虽然压力差不多,但是抖动频率完全不一致,不利于分析。


image.png

图5 同一个数据库实例上跑两次相同的测试模型的效果


针对这种情况,我们提出了压测幂等的概念,即相同的测试,无论运行多少次,产生的SQL是完全一致的。在幂等情况下,每个时间点产生的SQL文本是完全相同的(假设数据库处理能力完全一致),并且整个压测任务中,所有SQL的执行顺序是一致的。目前做到了线程级别完全一致,不同线程之间从性能和需求的角度考虑没有实现强一致。


在幂等技术的加持下,DAS智能压测可以针对前文描述的场景可以做到一致性的压测,效果如图6。


image.png

图6 同一个数据库实例上跑两次相同的智能压测的效果


压测幂等的技术主要从压测线程生成逻辑、总请求数、写入最终一致性这三方面进行处理,让压测过程中可以确保每个线程内部出现的随机数的顺序都是一样的,并且不同线程之间不一样;通过保持线程中请求量总数一致,达到确保总请求量固定的效果;再结合自定义主键和约定update区间的方式,规避了自增主键和update冲突问题,确保了压测结束后的数据最终一致性。


4. 产品落地

4.1. 产品流程

介绍完智能压测的组成部分和对应的核心技术之后,下面来看DAS是如何将智能压测落地成产品。从压测的流程来看,整个智能压测的过程可以分为准备阶段、SQL处理阶段、回放阶段和效果评估阶段,如图7所示。

image.png

图7 智能压测产品流程


准备阶段主要是解决压测的机器环境问题,涉及从购买ECS机器、准备压测目标实例、配置ECS机器上的运行环境等。目前DAS的智能压测可根据压测流量的QPS和回放时长,自主选择合适的ECS机器并自动配置运行环境,也允许用户采用利用自有机器进行压测。在准备压测目标实例环节,现在DAS可通过RDS备份恢复、DTS同步的方式来自助帮助用户准备好目标实例,也允许用户自由指定压测实例。


SQL处理阶段则主要是对压测使用的全量SQL明细数据做压测前的数据准备,基于SQL洞察明细或者智能算法生成的SQL数据做预处理,包括prepared statement语句去重、日志剔除、事务语句合并等等操作。


在回放阶段主要是利用压测幂等技术将流量进行回放,提供了实时的数据库性能数据和压测机器负载情况,便于用户了解压测进度。在此环节中,DAS将智能调参算法与压测进行了结合,用户可通过该功能实现参数调优的功能,具体算法实现将在后续文章单独介绍。


效果评估阶段主要是解读压测过程中的指标数据,DAS对业务调优中常用的性能参数和关键性能指标做了对比,协助用户做出资源评估决策。对于压测过程中发现的慢SQL、锁等问题,DAS也提供了相应的改进建议和处理方法,对用户优化业务也提供了信息辅助。


4.2 产品使用

用户可以在DAS控制台的左侧菜单“智能压测”进行使用,如图8。目前DAS支持RDS MySQL和PolarDB MySQL压测,其他关系型数据库引擎的支持正在开发中。

image.png

图8 智能压测界面


在压测结束之后,用户可以通过任务详情查看到目标实例与源实例的性能数据对比以及关键参数的对比,如图9所示。


image.png


图9 压测后的效果对比


4.3. 产品计费

目前DAS智能压测功能未单独收费,压测流程中新创建的ECS、RDS均按照对应产品官网中以按量计费的标准进行计费,无额外服务费用。如前文所述,压测依赖源端全量SQL明细数据或相应库表基础结构数据,故该服务仅需要压测源端实例开启DAS专业版功能即可。


4.4. 客户案例

DAS智能压测服务自2020年上线以来,主要客户为云上头部客户,已累计为近百个客户提供服务,主要包括上云资源评估、业务大促评估、引擎切换评估、数据库操作验证等场景。


5. 未来规划

接下来,智能压测将增加支持的数据库引擎,覆盖云上的所有关系型数据库引擎;同时,智能压测将会贴近客户的真实业务问题,与用户上云、资源评估、引擎推荐等场景密切结合,并提供相应的压测评估建议和报告,与企业客户一起构建大规模场景下的数据库容量规划能力。


7月7日14点数据库自治服务DAS年度重磅发布

DAS自治胜似闲庭信步

数据库自动驾驶进入规模化时代
扫描下图二维码或点击“这里”预约观看直播

image.png

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
26天前
|
存储 NoSQL 关系型数据库
非关系型数据库-MongoDB技术(二)
非关系型数据库-MongoDB技术(二)
|
26天前
|
NoSQL 关系型数据库 MongoDB
非关系型数据库-MongoDB技术(一)
非关系型数据库-MongoDB技术(一)
ly~
|
4天前
|
存储 监控 安全
如何评估云数据库的安全性?
评估云数据库安全性需关注基础架构与物理安全、网络基础设施、电力与冷却系统;访问控制与身份验证,包括多因素身份验证、基于角色的访问控制、身份验证强度;数据加密,涉及传输加密、存储加密、密钥管理;备份与恢复,涵盖备份策略、恢复测试、异地备份;安全审计与监控,如审计日志、实时监控、漏洞扫描与渗透测试;合规性,包括法规遵循、认证与合规证明;以及云服务提供商的信誉与技术支持。
ly~
14 4
|
9天前
|
关系型数据库 分布式数据库 数据库
PolarDB 开源:推动数据库技术新变革
在数字化时代,数据成为核心资产,数据库的性能和可靠性至关重要。阿里云的PolarDB作为新一代云原生数据库,凭借卓越性能和创新技术脱颖而出。其开源不仅让开发者深入了解内部架构,还促进了数据库生态共建,提升了稳定性与可靠性。PolarDB采用云原生架构,支持快速弹性扩展和高并发访问,具备强大的事务处理能力及数据一致性保证,并且与多种应用无缝兼容。开源PolarDB为国内数据库产业注入新活力,打破国外垄断,推动国产数据库崛起,降低企业成本与风险。未来,PolarDB将在生态建设中持续壮大,助力企业数字化转型。
36 2
|
13天前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
|
1月前
|
存储 负载均衡 数据库
探索后端技术:从服务器架构到数据库优化的实践之旅
在当今数字化时代,后端技术作为支撑网站和应用运行的核心,扮演着至关重要的角色。本文将带领读者深入后端技术的两大关键领域——服务器架构和数据库优化,通过实践案例揭示其背后的原理与技巧。无论是对于初学者还是经验丰富的开发者,这篇文章都将提供宝贵的见解和实用的知识,帮助读者在后端开发的道路上更进一步。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL技术安装配置、数据库与表的设计、数据操作解析
MySQL,作为最流行的关系型数据库管理系统之一,在WEB应用领域中占据着举足轻重的地位。本文将从MySQL的基本概念、安装配置、数据库与表的设计、数据操作解析,并通过具体的代码示例展示如何在实际项目中应用MySQL。
71 0
|
1月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
45 0
|
1月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
89 0