“千万元”级别商机背后的数据库的技术支撑和优化

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 阿里云数据库针对这个客户“痛并快乐”的场景进行专项的优化,帮助我们的客户在任何秒杀场景“稳如泰山”。

_1

背景简介
阿里巴巴兴于电商,电商客户的需求和痛点对于我们自然也体会的比较深。秒杀这一场景最早来自天猫双11各种商品的促销活动中,发展到现在已经有很多业务场景在使用,比如抢红包,春运抢票等。这类的场景其特点有三高:瞬时并发高,数据一致性高,热点更新频度高。这样三高的场景下往往给客户数据库造成极大的压力,大量更新数据库中的同一行,这样必然会产生数据库锁等待,导致客户数据库的性能急剧下降的问题,很容易导致客户的业务雪崩。阿里云数据库针对这个客户“痛并快乐”的场景进行专项的优化,帮助我们的客户在任何秒杀场景“稳如泰山”。

在秒杀的业务场景中,数据库成为了底层系统中最重要的瓶颈点。某电商公司是阿里云的客户,在客户使用阿里云数据库之前,我们的客户只能用最原始的升级配置,降低锁等待时间等来解决这个场景所带来的烦恼,但是由于业务量级随着商业扩展而扩大,传统的解决办法越来越难以满足这类的场景。阿里云经过几年的沉淀也诞生了很多的技术手段来进行优化,帮助我们阿里云数据库的用户轻松度过秒杀场景,让赚钱的同时不再受技术瓶颈的煎熬。

阿里云的数据库工程师发现,当大量的并发更新同一条记录时(秒杀场景),使用排队的方式来保证高并发下热点记录更新在不影响业务的同时依然能保持较好的性能,为threads_running设置一个硬上限,当并发超过此值时,数据库将拒绝执行sql,保护MySQL,我们将这个称之为高水位限流。这样就给数据库加上了一层限流的功能,使得数据库不被瞬间的高爆发请求打爆。

高水位限流实现:

  监控系统status变量threads_running,当满足拒绝条件,拒绝执行sql,返回用户:MySQL Server is too busy,判断逻辑在dispatch_command中,sql解析之后。

增加的系统variables:

 1.threads_running_ctl_mode: 限流的sql类型,有两个取值:[ALL | SELECTS],默认SELECTS,设置为ALL需谨慎。
  2.threads_running_high_watermark: 限流水位值,只有threads_running超过此值才会触发,默认值为max_connections,当set global threads_running_high_watermark=0时自动设置为max_connections。

拒绝必要条件:

 1..threads_running超过threads_running_high_watermark。
 2..threads_running_ctl_mode与sql类型相符。

以下情况不拒绝:

 1.用户具有super权限。
 2.sql所在事务已经开启。
 3.sql为commit/rollback。

目前,阿里云的关系型数据库ApsaraDB RDS已经集成了这类秒杀场景下的参数优化,所以如果你的应用场景中具有大量并发更新同一行记录的场景,你可以打开数据库的限流参数:threads_running_ctl_mode和threads_running_high_watermark来保护数据库,让你的数据库平稳过渡。下面我们来看一则该电商某客户的生产环境的案例。
_2

从上图中看到该数据库的活跃连接数最高的时候到达了1W,通过show processlist可以看到大量的并发更新。

_3

我们来看一下数据库并发更新的TPS有多大:

_4

可以看到数据库中的活跃连接数非常高,每秒的update非常不稳定。
我们在把限流开关打开后看一下性能表现:
mysql> set global rds_threads_running_high_watermark=300;
Query OK, 0 rows affected (0.00 sec)

mysql> set global rds_threads_running_ctl_mode='all';
Query OK, 0 rows affected (0.00 sec)

_5

从上图可以明显的观察到,通过打开数据库的限流开关,数据库的活跃连接数在300左右,同时数据库的TPS也没有再出现很大的波动,这样很好的保护住了DB。
_6
_7

该电商用户自从使用了阿里云关系型数据库 ApsaraDB RDS,很好的解决了以往令人头疼的高并发问题场景,令该公司成功度过了几次双十一和大型促销,对其业务的增长和发展起到了至关重要的技术保障和支持。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
存储 SQL 缓存
构建高效的矢量数据库查询:查询语言与优化策略
【4月更文挑战第30天】本文探讨了构建高效矢量数据库查询的关键点,包括设计简洁、表达性强的查询语言,支持空间操作、函数及索引。查询优化策略涉及查询重写、索引优化、并行处理和缓存机制,以提升查询效率和准确性。这些方法对处理高维空间数据的应用至关重要,随着技术进步,矢量数据库查询系统将在更多领域得到应用。
|
3天前
|
存储 缓存 固态存储
优化矢量数据库性能:技巧与最佳实践
【4月更文挑战第30天】本文探讨了优化矢量数据库性能的技巧和最佳实践,包括硬件(如使用SSD、增加内存和利用多核处理器)、软件(索引优化、查询优化、数据分区和压缩)和架构(读写分离、分布式架构及缓存策略)方面的优化措施。通过这些方法,可以提升系统运行效率,应对大数据量和复杂查询的挑战。
|
3天前
|
Cloud Native NoSQL 数据管理
现代化数据管理:面向未来的数据库技术发展
传统数据库技术已经不能满足当今大数据时代的需求,现代化数据库技术的发展成为了当务之急。本文将探讨面向未来的数据库技术发展方向,包括云原生数据库、图数据库、区块链技术在数据库领域的应用以及数据库安全性等方面。
|
4天前
|
Java 关系型数据库 MySQL
【JDBC编程】基于MySql的Java应用程序中访问数据库与交互数据的技术
【JDBC编程】基于MySql的Java应用程序中访问数据库与交互数据的技术
|
4天前
|
存储 安全 数据管理
新一代数据库技术:融合区块链与分布式存储的未来趋势
传统数据库技术在数据安全性和分布式处理方面存在局限,而新一代数据库技术正日益融合区块链和分布式存储,为数据管理带来革命性变革。本文探讨了这一趋势的发展方向,以及如何利用新技术实现更高效的数据管理与保护。
|
5天前
|
关系型数据库 大数据 数据库
关系型数据库索引优化
关系型数据库索引优化是一个综合的过程,需要综合考虑数据的特点、查询的需求以及系统的性能要求。通过合理的索引策略和技术,可以显著提高数据库的查询性能和整体效率。
14 4
|
5天前
|
存储 缓存 关系型数据库
关系型数据库数据库表设计的优化
您可以优化关系型数据库的表设计,提高数据库的性能、可维护性和可扩展性。但请注意,每个数据库和应用程序都有其独特的需求和挑战,因此在实际应用中需要根据具体情况进行调整和优化。
10 4
|
5天前
|
缓存 监控 关系型数据库
关系型数据库优化查询语句
记住每个数据库和查询都是独特的,所以最好的优化策略通常是通过测试和分析来确定的。在进行任何大的更改之前,始终备份你的数据并在测试环境中验证更改的效果。
14 5
|
5天前
|
数据库 开发者 UED
优化数据库性能的六大策略
在当今数字化时代,数据库性能对于系统的稳定运行至关重要。本文将介绍六大策略,帮助开发者优化数据库性能,提升系统效率和用户体验。
|
7天前
|
存储 SQL 关系型数据库
关系型数据库存储优化
关系型数据库存储优化
16 1