前言

不管是数据库,还是很多后端编程语言,都存在锁的机制,锁的存在有效解决了并发情况下对共同资源的抢占,保证了数据的稳定性和一致性,在mysql中,锁是如何工作的呢?其底层的工作原理是怎样的呢?本篇将详细介绍下mysql锁的机制。

mysql锁介绍

在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

MySQL中,按照锁的粒度,可分为以下三类:

  • 全局锁:锁定某个数据库的所有表;
  • 表级锁:每次操作锁住整张表;
  • 行级锁:每次操作锁住对应的行数据;

当然,关于锁的分类,还可以有其他的不同的维度,下面列出了一个更为详细的划分

从操作类型上来看,mysql的锁可以直接划分为:读锁和写锁;

  • 读锁 :也称共享锁 、英文用 S 表示。针对同一份数据,多个事务的读操作可以同时进行而不会互相影响,相互不阻塞的࿱