输入banner图图片脚本导航/分类

MySQL中的锁

[[AS] alias] lock_type [, tbl_name [[AS] alias] lock_type] ... lock_type: READ [LOCAL] | [LOW_PRIORITY] WRITE # 释放表锁 UNLOCK TABLES

示例

mysql> lock tables t read, t1 write;
Query OK, 0 rows affected (0.02 sec)

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

 

页锁

页级锁定的特点是锁定颗粒度介于行级锁定与表级锁之间,所以获取锁定所需要的资源开销,以及所能提供的并发处理能力也同样是介于上面二者之间。另外,页级锁定和行级锁定一样,会发生死锁。

 

行锁

行级锁定最大的特点就是锁定对象的粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的。

由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,能够给予应用程序尽可能大的并发处理能力而提高一些需要高并发应用系统的整体性能。行级锁定也最容易发生死锁。

使用行级锁定的主要是InnoDB存储引擎。

 

总结

  • 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

  • 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

  • 页锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

 

后面在详细说下Innodb中的各种锁。

 

 

五、参考

《MySQL技术内幕》

https://dev.mysql.com/doc/refman/8.0/en/storage-engines.html

     

MySQL中的锁

标签:也会   ali   打折   轻量级   使用   efault   pre   实现   name