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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(1)
+关注继续查看

mysql锁机制的再研究

image.png作者:点晴

image.png出品:大淘宝技术

 

 

在分布式系统中,分布式锁已经的使用越发常见,我们系统由于较为老旧,使用数据库实现分布式锁,方案为:使用lock_key, lock_biz组成唯一索引,利用数据库对一条记录insert和delete操作的事务性来实现不可重入的db分布式锁。

前一段时间,发现系统分布式锁出现死锁告警,在处理完问题后,重新去看现场日志,发现数据库出现了死锁,在阿里云性能诊断系统中的锁分析里找出死锁日志,但奇怪的是不同的唯一索引值出现了死锁,如下图所示。抱着不懂就研究的心态,重新去研究了mysql Inndb的锁机制(ps:公司mysql 默认是RC隔离级别)。

image.png

 

关于锁的基础知识

 

本文下方所有实例均依旧该表进行,建表语句如下:

    CREATE TABLE `test_lock` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    `gmt_create` datetime NOT NULL COMMENT '创建时间',
    `gmt_modified` datetime NOT NULL COMMENT '修改时间',
    `lock_key` varchar(128) NOT NULL COMMENT '锁名称',
    `lock_context` varchar(512) DEFAULT NULL COMMENT '锁上下文',
    `lock_biz` varchar(64) NOT NULL COMMENT '锁类型',
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_uk_lock_name` (`lock_key`,`lock_biz`)
    ) ENGINE=InnoDB AUTO_INCREMENT=26229 DEFAULT CHARSET=utf8 COMMENT='分布式锁表' 11 

 

 

锁的作用范围分类

 

image.png全局锁

在DB级别对整个数据库实例加锁

 

加锁表现:

数据库处于只读状态

阻塞对数据的增删改以及DDL

 

加锁方式:lock Flush tables with read lock 释放锁:unlock tables(发生异常时会自动释放)

 

作用场景:全局锁主要用于做全库的逻辑备份,和设置数据库只读(set global readonly=true)相比,全局锁在发生异常时会自动释放

 

image.png表锁

表级别对操作的整张表加锁, 锁定颗粒度大,资源消耗少,不会出现死锁,但并发度低

分为表共享锁和表排他锁,注意:意向锁为表锁,但是由存储引擎自己维护,无需用户手工命令干预。

显示加锁方式:lock tables {tb_name} read/write 释放锁:unlock table {tb_name} (连接中断也会自动释放)

 

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12小时前
|
存储 分布式计算 关系型数据库
云原生数据仓库AnalyticDB MySQL湖仓版架构升级,持续释放技术红利!
云原生数据仓库AnalyticDB MySQL湖仓版架降价23%!持续提供高性价比的产品服务
|
1天前
|
存储 SQL 关系型数据库
MySQL5.7到8.0的升级迁移!高效的MySQL跨版本迁移技术解读
NineData是一种高效、稳定且易于使用的迁移工具,可帮助用户将MySQL 5.7迁移到MySQL 8.0。由于MySQL 5.7已经结束生命周期并不再获得技术支持,因此迁移至MySQL 8.0是必要的。NineData提供了数据复制功能,包括数据迁移和实时同步,还支持双向复制。与传统迁移方法相比,NineData具有简单易用、数据一致、强劲性能和高可靠性的优势。它提供了完善的观测和干预能力,保障迁移的成功。此外,NineData还提供了对比功能,确保数据的一致性。通过简单的配置过程,用户可以实现自动化的数据迁移。NineData还提供了完善的观测和干预能力,帮助用户追踪迁移进展并诊断和修复
74 2
|
4天前
|
关系型数据库 MySQL 数据库
阿里技术官甩出的768页MySQL优化笔记,火遍全网不是意外
MySQL之所以能成为现在最流行的开源数据库,这跟它的开放性、包容性是分不开的。它的入门门槛低到用一条命令就能把MySQL安装起来,你能在程序开发的入门资料中很容易就找到MySQL的配套使用教程,你可以不用付任何费用就能在自己的环境中部署起来对外承载业务。
|
7天前
|
存储 分布式计算 关系型数据库
|
1月前
|
存储 算法 关系型数据库
【MySQL的CheckPoint技术】
【MySQL的CheckPoint技术】
|
2月前
|
存储 关系型数据库 MySQL
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(2)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(2)
|
2月前
|
关系型数据库 MySQL 索引
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(3)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(3)
|
2月前
|
关系型数据库 MySQL 索引
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(4)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(4)
|
2月前
|
关系型数据库 MySQL
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(5)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(5)
|
2月前
|
分布式计算 算法 关系型数据库
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(6)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(6)
热门文章
最新文章
推荐文章
更多