前言
阅读本文需要对OLTP数据库里的行锁(文章所描述的是Mysql InnoDB)有基本的认识。
文章分为上下两篇,上篇讲述热点行的基础信息,下篇我将从多个维度讲述解决(延缓)所造成影响的方法思路。
由于笔者水平有限,欢迎各位大佬批评指正。
什么是热点行
定义
数据库中那些会被频繁执行增删改查操作的数据行称为热点行。当一个事务对一行数据进行更新时,会对目标数据行加锁,直到事务提交或回滚时才释放。同一时段内,对于同一个数据行,只有一个事务能够进行更新,其它事务需要等待。
结合业务场景举例
电商平台中,存在少数大商家(20%的商家占据了平台80%的销量-根据二八原则推测,同理20%商品占据了百分之80的销售额等),拿耐克旗舰店来说,在一个很普通的日子里,没有大促的情况下,账户每秒仍会有大量的资金入账.下图中id为1的耐克旗舰店账户就是热点行.
此例为清结算领域中的账户,当然最常见的场景还有各种库存业务.
如何判定是否热点行
- 业务人员凭借经验判定,比如特惠商品上架,秒杀活动,亦或者是大商家入驻平台。判定后人工手动标记。
- 系统层面做采集,每条s