MySQL锁概述
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL锁概述,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2336字,纯文字阅读大概需要4分钟。
内容图文
![MySQL锁概述](/upload/InfoBanner/zyjiaocheng/911/6053c929b4cf42e898ecb0d9c09daef6.jpg)
MySQL这3种锁的特性可大致归纳如下。
开销、加锁速度、死锁、粒度、并发性能
l???????? 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
l???????? 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
l???????? 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 ? MyISAM表锁 MyISAM存储引擎只支持表锁,这也是MySQL开始几个版本中唯一支持的锁类型。随着应用对事务完整性和并发性要求的不断提高,MySQL才开始开发基于事务的存储引擎,后来慢慢出现了支持页锁的BDB存储引擎和支持行锁的InnoDB存储引擎(实际 InnoDB是单独的一个公司,现在已经被Oracle公司收购)。但是MyISAM的表锁依然是使用最为广泛的锁类型。本节将详细介绍MyISAM表锁的使用。
查询表级锁争用情况
可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺: mysql>?show status like 'table%'; +-----------------------+-------+ | Variable_name???????? | Value | +-----------------------+-------+ | Table_locks_immediate | 2979? | | Table_locks_waited??? | 0???? | +-----------------------+-------+ 2 rows in set (0.00 sec)) 如果Table_locks_waited的值比较高,则说明存在着较严重的表级锁争用情况。 ?获取InnoDB行锁争用情况
可以通过检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况: mysql>?show status like 'innodb_row_lock%'; +-------------------------------+-------+ | Variable_name???????????????? | Value | +-------------------------------+-------+ | InnoDB_row_lock_current_waits | 0???? | | InnoDB_row_lock_time????????? | 0???? | | InnoDB_row_lock_time_avg????? | 0???? | | InnoDB_row_lock_time_max????? | 0???? | | InnoDB_row_lock_waits???????? | 0???? | +-------------------------------+-------+ 5 rows in set (0.01 sec) 如果发现锁争用比较严重,如InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比较高,还可以通过
解锁
第一种
show processlist;
找到锁进程,kill id ;
第二种
mysql>UNLOCK TABLES;
锁表
锁定数据表,避免在备份过程中,表被更新
mysql>LOCK TABLES tbl_name READ;
为表增加一个写锁定:
mysql>LOCK TABLES tbl_name WRITE;
内容总结
以上是互联网集市为您收集整理的MySQL锁概述全部内容,希望文章能够帮你解决MySQL锁概述所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。