MySQL行锁和表锁 存储引擎

本文介绍了MySQL中的行级锁定和表级锁定机制,重点讨论了InnoDB和MyISAM存储引擎的特性。行级锁定适合高并发更新操作,表级锁定则适用于读写插入为主的场景。针对InnoDB,提出了优化建议,包括利用索引减少锁定范围、控制事务大小和降低事务隔离级别以减少死锁概率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 数据库锁定机制 简单来说, 就是数据库为了保证数据的一致性, 而使各种共享资源在被 并发访问变得有序 所设计的一种规则.

2 行级锁定 (row-level). 主要是 InnoDB 存储引擎. 支持外键, 事务.

(1) 开销大, 加锁慢, 会出现死锁.
(2) 锁定粒度最小, 并发度也最高.

(3) 适合 更新, 删除操作频率较高, 或 要保证数据的完整性的场景. 如联机事务处理 (OLTP).

3 表级锁定 (table-level). 主要是 MyISAM, CSV. 不支持外键, 事务.

(1) 开销小, 加锁快, 不会出现死锁.
(2) 锁定粒度大, 并发度最低.

(3) 适合 以读写插入为主的场景. 如联机分析处理 (OLAP).

4 InnoDB 行锁优化建议.
(1) 尽可能让所有的数据检索都 通过索引 来完成.
(2) 合理设计索引. 以此来尽可能的缩小锁定范围, 避免造成不必要的锁定而影响其它请求的执行.
(3) 减少基于范围数据检索的过滤条件, 避免锁定了不该锁定的记录.
(4) 控制事务的大小, 减少锁定的资源量和锁定时间长度.
(5) 尽量使用 较低级别的事务隔离, 以减少MySQL因为实现事务隔离级别所带来的附加成本.

5 减少 InnoDB死锁概率建议.
(1) 一次分配好 所需要的所有资源.
(2) 对于非常容易产生死锁的业务部分, 尝试 升级锁定颗粒度 来减少死锁产生的概率.
(3) 尽可能按照 事先分配好的访问顺序来访问.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值