mysql的锁(更新中...)

锁这个概念一直存在于计算机中,比如线程中、io流中、数据库中等等。我们想想,锁概念是什么呢,顾名思义,锁就是将某个东西锁起来,只能自己去使用,不允许其他的人用。

锁在计算机中的理解也可以是:锁是计算机协调多个进程或纯线程并发访问某一资源的机制。通俗的讲就是某个共享资源,在保证数据统一性的前提下,在某个进程在操作某个数据时,需要保证这个进程的操作不会导致这个数据在其他的进程中出现不统一的结果。这个时候我们就需要加锁,以保证进程在修改这个数据时,其他的进程不允许访问或修改这个数据,这样就保证了数据的唯一性、统一性。

 一、mysql的锁

mysql的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制,大致可以分为三种:表级锁、行级锁、页面锁。

  • 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
  • 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
  • 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般

 具体使用哪种锁还需要根据实际使用情况来决定。

1、表级锁

mysql的表级锁有两种模式:表共享锁、表独占写锁

2、行级锁

行级锁在使用的时候并不是直接锁掉这行记录,而是锁索引
如果一条sql用到了主键索引(mysql主键自带索引),mysql会锁住主键索引;
如果一条sql操作了非主键索引,mysql会先锁住非主键索引,再锁定主键索引.

3、页面锁

分享所感,如有侵权,请联系删除,可扫码关注微信公众号获取更多福利噢。
(您的“打赏”将是我最大的写作动力!转载请注明出处.)

关注微信公众号

原文地址:https://www.cnblogs.com/pengpengdeyuan/p/14416695.html