带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(6)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(6)

带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(5)https://developer.aliyun.com/article/1340029?groupCode=taobaotech


业务场景分析

 

复现出问题,在结合业务流程去排查和分析,发现问题出自结算域的多个定时任务中,这些定时任务的使用分布式定时框架,执行模式为网格计算,结算的每条记录都有主键id, 活动id和商家id以及用于计算结算金额的投放数据uv 和pv等,原定时任务的处理逻辑是by最细粒度的活动数据主键id步进分发到各个机器上,每个机器通过id查找计算应结算金额,然后开启事务-》加锁-》执行扣款操作(涉及解冻等复杂逻辑,会进行多表操作)-》释放锁-》提交事务。

注:网格计算本质上是通过并发提来提升任务的处理速度,分为主任务和子任务,主任务负责按照自定义规则分发子任务到各个机器上,子任务互不干涉同步运行。

 

解决方案

 

通过业务场景梳理,很容易就发现2个设计问题-并发和大事务。

 

image.png并发

因配置不当,人为造成高并发场景。针对并发我们进行了两种方式的改造:

 

 

 

因配置不当,人为造成高并发场景。针对并发我们进行了两种方式的改造:

  1. 针对只有少量数据的结算任务,改成单机运行,实例并发数设置为1。
  2. 针对大数据量的结算任务,主任务的分发逻辑从基于id步进分发,改为基于sellerId纬度分发,原因是结算是基  于商家纬度进行的,分布式锁的纬度也是sellerId。

 

image.png大事务

大事务导致独占区变大(加解锁的逻辑也归属与独占区了),增加了冲突概率,相当于变相提升了并发度。

 

针对大事务问题,因为本质上锁的方案和业务执行逻辑完全无关,这里将技术问题和业务逻辑进行了耦合,故按照解耦的思路将加锁和解锁操作开启独立子事务,减少冲突的概率。

 

参考文献

 

  1. MySQL锁介绍与加锁分析
  2. insert 语句加锁机制https://cloud.tencent.com/developer/article/1181532?from=14588
  3. 如何阅读死锁日志(https://cloud.tencent.com/developer/article/1181190
  4. MySQL死锁案例分析(https://cloud.tencent.com/developer/article/1892524?from=ar ticle.detail.1181187)
  5. MySQL · 引擎分析 · InnoDB行锁分析(http://mysql.taobao.org/monthly/2018/05/04/)
  6. MySQL锁系列(七)锁算法详解(http://keithlan.github.io/2017/06/21/innodb_locks_algorithms/)
  7. mysql 查看谁在持有锁(http://www.javashuo.com/article/p-wixmuvea-co.html)

 

团队介绍

 

行业与品牌营销团队

我们是一只有凝聚力、有活力的团队,主要负责打通淘系业务中商品,商家,前台场景等生产要素,重点围绕着运营,商家及品类架构体系的数据化、智能化、规模化和平台化做核心突破方向,同时联合各技术团队和业务团队, 共同打造电商运营操作系统。

【春招校园招聘】:java开发实习生、数据实习生

【招聘范围】:2023年毕业生

【工作地点】:杭州

如果您有内推需求,可将简历发至邮箱lx240393@alibaba-inc.com或添加作者微信lixstudy进行详细咨询,欢迎 来撩~

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
23天前
|
存储 关系型数据库 MySQL
MySQL MVCC全面解读:掌握并发控制的核心机制
【10月更文挑战第15天】 在数据库管理系统中,MySQL的InnoDB存储引擎采用了一种称为MVCC(Multi-Version Concurrency Control,多版本并发控制)的技术来处理事务的并发访问。MVCC不仅提高了数据库的并发性能,还保证了事务的隔离性。本文将深入探讨MySQL中的MVCC机制,为你在面试中遇到的相关问题提供全面的解答。
73 2
|
1月前
|
缓存 关系型数据库 MySQL
MySQL并发支撑底层Buffer Pool机制详解
【10月更文挑战第18天】在数据库系统中,磁盘IO操作是性能瓶颈之一。为了提高数据访问速度,减少磁盘IO,MySQL引入了缓存机制。其中,Buffer Pool是InnoDB存储引擎中用于缓存磁盘上的数据页和索引页的内存区域。通过缓存频繁访问的数据和索引,Buffer Pool能够显著提高数据库的读写性能。
85 2
|
1月前
|
SQL 关系型数据库 MySQL
MySQL 锁
MySQL里常见的几种锁
52 3
|
10天前
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
35 3
|
30天前
|
存储 关系型数据库 MySQL
优化 MySQL 的锁机制以提高并发性能
【10月更文挑战第16天】优化 MySQL 锁机制需要综合考虑多个因素,根据具体的应用场景和需求进行针对性的调整。通过不断地优化和改进,可以提高数据库的并发性能,提升系统的整体效率。
55 1
|
1月前
|
XML 关系型数据库 MySQL
MySQL 导出某些数据的技术详解
MySQL 导出某些数据的技术详解
127 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据库锁:共享锁和独占锁
本文详细介绍了`InnoDB`存储引擎中的两种行级别锁:共享锁(S锁)与排他锁(X锁)。通过具体示例展示了这两种锁的工作机制及其在`InnoDB`与`MyISAM`引擎中的表现差异。文章还提供了锁的兼容性矩阵,帮助读者更好地理解锁之间的互斥关系。最后总结了两种锁的特点及适用场景。适合希望深入了解`MySQL`并发控制机制的读者阅读。
51 1
|
30天前
|
存储 关系型数据库 MySQL
MySQL锁,锁的到底是什么?
【10月更文挑战第16天】MySQL 锁锁定的是与数据和资源相关的对象,其目的是为了保证数据的一致性、避免冲突,并在并发环境下合理协调事务或操作的执行。理解锁的对象和意义对于优化数据库性能、处理并发问题至关重要。
54 0
|
1月前
|
关系型数据库 MySQL 数据库
mysql锁详解
通过理解并合理运用MySQL中的锁机制,开发者可以有效管理数据库并发访问,平衡性能与数据一致性需求。更多关于MySQL锁的深入探讨和最佳实践,请参考专业的数据库管理资源[[深入MySQL锁机制详解
35 0
|
10天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
25 1