MySQL锁(锁级别、锁优化、避免死锁)

本文详细介绍了MySQL的锁机制,包括表级锁定和行级锁定,特别是InnoDB的间隙锁。讨论了锁优化方法,如合理设计索引、减少锁定时间,并给出了避免死锁的业务策略。此外,还提及了InnoDB支持的事务隔离级别和其在锁定机制上的改进。
摘要由CSDN通过智能技术生成

MySQL锁

为了保证数据的一致完整性,任何一个数据库都存在锁定机制。锁定机制的优劣直接影响到一个数据库系统的并发处理能力和性能,所以锁定机制的实现也就成为了各种数据库的核心技术之一

三种不同的锁类型

名称粒度并发能力加锁和释放锁的消耗出现死锁概率
row-level最小最大消耗大
page-level
table-level最大比较弱消耗小

锁机制分析

表级锁定

使用了:read、read_wait、write、write_wait四个队列实现

使用方法 : lock table my_table read、lock table my_table write;

行级锁定

这里主要说下InnoDB使用了"间隙锁",也就是,根据锁定大是一个范围。

具体可以参考【间隙锁产生的原因】

锁优化

目标就是,缩短锁定的时间。

  • 合理设计索引,避免因为间隙锁,而影响到其他Query

  • 能者多劳,搜索的时候尽可能使用索引,并且索引范围尽可能小,避免因为无法使用索引加锁而变成表锁

  • 业务层面,在同一个事务中,尽可能做到一次锁定需要的所有资源,减少死锁产生的概率;

  • 对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率。

其他

这里补充下InnoDB 的优点

  • 支持事务安全:READ UNCOMMITTED、READ COMMITTED、REPEATABLE和SERIALIZABLE

  • 锁定机制的改进

参考文章

了解下Mysql的间隙锁及产生的原因
参考书籍<<MySQL性能调优和架构设计>>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值