mysql 锁住一行数据_MySQL-锁

本文介绍了MySQL的锁机制,特别是InnoDB存储引擎的锁类型,包括lock和latch的区别,行级锁(共享锁、排他锁)与表级锁(意向锁)的概念,以及锁的粒度和原理。通过例子阐述了锁在数据库并发访问中的作用,强调了索引在实现锁中的关键角色。
摘要由CSDN通过智能技术生成

锁的由来

我们需要最大程度地利用数据库的并发访问,还需要确保每个用户以一致性的方式读取和修改数据,为解决此问题,有了锁的机制

InnoDB 存储引擎相对比MySQL 数据库的其他存储引擎在这方面要技高一筹

MySQL 常用引擎:InnoDB、MyISAM、Memory

锁机制用于管理对共享资源的并发访问,为了保证数据一致性和完整性,必须要有锁的介入

MySQL InnoDB 锁的基本类型

有两个概念的锁lock 和latch,这里着重聊聊lock 锁

latch 轻量级的锁,因为其要求锁定的时间必须非常短,如果持续的时间长,则应用的性能会非常差。在InnoDB 引擎中,latch 可以分为mutex(互斥)和rwlock(读写锁)。用来保证并发线程操作临界资源的正确性,并且没有死锁检测的机制

lock 的对象是事务,用来锁定数据库中的对象,如表、页、行。lock 是在事务commit 或rollback 后进行释放

在InnoDB 存储引擎中的latch,可以通过命令来进行查看

show ENGINE INNODB MUTEX;

MySQL InnoDB 锁的基本类型

两个行级别的锁(Shared and Exclusive Locks)和两个表级别的锁(Intention Locks)称为锁的基本模式

后面三个 Record Locks、Gap Locks、Next-Key Locks,我们把它们叫做锁的算法

锁的粒度

在InnoDB 里面既有行级别的锁,又有表级别的锁,来看下两者的区别

表锁:锁住一张表

<
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值