MySQL十种锁,如何一篇文章全解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1162个文字,预计阅读时间需要5分钟。
MySQL的核心知识点包括索引和锁。前几篇文章已详细讲解了MySQL索引的实现机制,今天我们来学习一下MySQL的锁。
MySQL有两个核心的知识点,索引和锁。前几篇文章已经详细讲解了MySQL索引实现机制,今天再一起学习一下MySQL的锁。MySQL有两个核心的知识点,索引和锁。前几篇文章已经详细讲解了MySQL索引实现机制,今天再一起学习一下MySQL的锁。
1 为什么要加锁?当多个事务并发操作同一批数据的时候,如果不加锁,就无法保证事务的隔离性,最后导致数据错乱。
加锁是为了保证并发操作下数据的正确性。
2 锁的分类有哪些?按锁的粒度可分为:表锁、页面锁、行锁、记录锁、间隙锁、临键锁
按锁的属性可分为:共享锁、排它锁
按加锁机制可分为:乐观锁、悲观锁
下面依次介绍一下这几种锁:
表锁:MyISAM和InnoDB引擎均支持表锁。
优点:开销小,加锁快,不会出现死锁。
缺点:锁定力度大,发生锁冲突概率高,并发度最低。
加锁方式:
# 对user表加读锁
lock table user read;
# 同时对user表加读锁,对order表加写锁
lock tables user read, order write;
什么情况下需要用到表锁?
- 当需要更新表中的大部分数据
- 事务涉及到多张表,业务逻辑复杂,加表锁可以避免死锁。
优点:开销和加锁速度介于表锁和行锁之间。
本文共计1162个文字,预计阅读时间需要5分钟。
MySQL的核心知识点包括索引和锁。前几篇文章已详细讲解了MySQL索引的实现机制,今天我们来学习一下MySQL的锁。
MySQL有两个核心的知识点,索引和锁。前几篇文章已经详细讲解了MySQL索引实现机制,今天再一起学习一下MySQL的锁。MySQL有两个核心的知识点,索引和锁。前几篇文章已经详细讲解了MySQL索引实现机制,今天再一起学习一下MySQL的锁。
1 为什么要加锁?当多个事务并发操作同一批数据的时候,如果不加锁,就无法保证事务的隔离性,最后导致数据错乱。
加锁是为了保证并发操作下数据的正确性。
2 锁的分类有哪些?按锁的粒度可分为:表锁、页面锁、行锁、记录锁、间隙锁、临键锁
按锁的属性可分为:共享锁、排它锁
按加锁机制可分为:乐观锁、悲观锁
下面依次介绍一下这几种锁:
表锁:MyISAM和InnoDB引擎均支持表锁。
优点:开销小,加锁快,不会出现死锁。
缺点:锁定力度大,发生锁冲突概率高,并发度最低。
加锁方式:
# 对user表加读锁
lock table user read;
# 同时对user表加读锁,对order表加写锁
lock tables user read, order write;
什么情况下需要用到表锁?
- 当需要更新表中的大部分数据
- 事务涉及到多张表,业务逻辑复杂,加表锁可以避免死锁。
优点:开销和加锁速度介于表锁和行锁之间。

