java架构之路-(mysql底层原理)Mysql事务隔离与MVCC

  上几篇博客我们大致讲了一下mysql的底层结构,什么B+tree,什么Hash需要回行啊,再就是讲了mysql优化的explain,这次我们来说说mysql的锁。

mysql锁

  锁从性能上分为乐观锁(用版本对比来实现)和悲观锁,乐观锁的性能要比悲观锁高。

  从对数据库操作的类型分,分为读锁和写锁(都属于悲观锁)

  读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。除锁以外的线程只可读,不可以写入。

  写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁。除锁以外的线程不可以做任何操作。

  从对数据操作的粒度分,分为表锁和行锁,再就是不常提到的间隙锁。

我们主要来说表锁和行锁,还有我们的间隙锁。

注意:有锁等待的几乎都为悲观锁

表锁 

  顾名思义,加了表锁,会将整张表锁住。开销很小,加锁很快,不会出现死锁;锁定粒度大,发生锁冲 突的概率最高,并发度最低;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwwdf.html