MySQL中lock与latch的区分
这里要区分锁中容易令人混淆的概念lock与latch。在数据库中,lock与latch都可以成为锁,但两者有截然不同的含义
latch 一般称为闩锁(轻量级的锁) 因为其要求锁定的时间非常短,若迟勋时间长,则应用性能非常差,在InnoDB存储引擎中,latch有可以分为mutex(互斥锁)和rwlock(读写锁)其目的用来保证并发线程操作临界资源的正确性,并且没有死锁检测的机制
lock的对象是事务,用来锁定的是数据库中的UI想,如表、页、行。并且一般lock对象仅在事务commit或rollback后进行释放(不同事务隔离级别释放的时间可能不同),此外lock正如大多数数据库中一样,是有死锁机制的。表显示了lock与latch的不同
在InnoDB存储引擎中的latch,可以通过命令SHOW ENGINE INNODB MUTEX 来进行查看
mysql> SHOW ENGINE INNODB MUTEX;
+--------+-------------------+-------------+
| Type | Name | Status |
+--------+-------------------+-------------+
| InnoDB | dict0dict.cc:1057 | os_waits=2 |
| InnoDB | log0log.cc:844 | os_waits=1 |
| InnoDB | fil0fil.cc:1690 | os_waits=1 |
| InnoDB | dict0dict.cc:1066 | os_waits=3 |
| InnoDB | log0log.cc:907 | os_waits=11 |
+--------+-------------------+-------------+
5 rows in set (4.14 sec)
在DEBUG版本下,通过SHOW ENGINE INNODB MUTEX 可以看到latch的更多信息
通过上述例子可以看到,type显示的总是InnoDB,列Name显示的是latch的信息及所在的源码位置(行数)。列Status比较复杂,在DEBUG模式下,除了显示os_waits,也会显示count、spin_waits、spin_rounds、 os_yields、os_wait_times等信息。
相对于latch来看,lock信息就显得直观了。可以通过SHOW ENGINE INNODB STATUS 及information_schema架构下的INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITS来观察锁的信息 。
MySQL中lock与latch的区分的更多相关文章
- MySQL中lock tables和unlock tables浅析
MySQL中lock tables和unlock tables浅析 在MySQL中提供了锁定表(lock tables)和解锁表(unlock tables)的语法功能,ORACLE与SQL Se ...
- 05 oracle中lock和latch的用途
oracle中lock和latch的用途 本文向各位阐述Oracle的Latch机制,Latch,用金山词霸翻译是门插栓,闭锁,专业术语叫锁存器,我开始接触时就不大明白为什么不写Lock,不都是锁 ...
- mysql中lock tables与unlock tables
官网:https://dev.mysql.com/doc/refman/5.0/en/lock-tables.html LOCK TABLES tbl_name [[AS] alias] lock_t ...
- mysql中lock tables与unlock tables(锁表/解锁)使用总结
php mysql lock tables 使用有感 mysql 的 表锁 lock tables 感觉就像一个 封闭的空间 mysql发现 lock tables 命令的时候,会将带有锁标记的表(t ...
- oracle中lock和latch的用途
本文向各位阐述Oracle的Latch机制,Latch,用金山词霸翻译是门插栓,闭锁,专业术语叫锁存器,我开始接触时就不大明白为什么不写Lock,不都是锁吗?只是翻译不同而以?研究过后才知道两者有很大 ...
- MySQL中的latch(闩锁)详解——易产生的问题以及原因分析
Latch 什么是latch: 锁是数据库系统区别与文件系统的一个关键特性.锁机制用于管理对共享资源的并发访问.Innodb存储引擎在行级别上对表数据上锁,这固然不错.但是Innodb也会在多个地方使 ...
- MySQL 锁(lock与latch)
一.什么是锁 锁机制用于管理对共享资源的并发访问,它是数据库系统区别于文件系统的一个关键特性. 数据库系统使用锁是为了支持对共享资源的并发访问,提供数据的完整性和一致性. InnoDB存储引擎锁的实现 ...
- MySQL 中的反引号(`):是为了区分 MySql 关键字与普通字符而引入的符号;一般,表名与字段名都使用反引号。
MySQL 中的反引号(`):是为了区分 MySql 关键字与普通字符而引入的符号:一般,表名与字段名都使用反引号.
- MySQL中查询时对字母大小写的区分
我相信很多人在mysql中查询时都遇到过mysql不区分字母大小写的情况:如以下例子: 1.SELECT * FROM `user` WHERE userpass = 'Z20'; 结果为: 2.SE ...
随机推荐
- Python MySQLdb 使用utf-8 编码插入中文数据
参考地址:http://blog.csdn.net/dkman803/article/details/1925326/ 本人在使用python,mysqldb操作数据库的时候,发现如下问题,编码如下: ...
- vue 过渡的-css-类名
会有6个css类名在leave/enter过渡中切换 1,v-enter:定义进入过渡的开始状态,在元素被插入时生效,在下一帧中移除 2,v-enter-active:定义过渡的状态.在元素整个过渡过 ...
- iOS敏捷开发之道,经常使用的宏定义总结
iOS开发中,直接在pch文件里导入宏定义. 在做项目的时候,直接拿过来使用,能够大幅度提高开发速度. 以下是 个人总结的一些宏定义. 假设大家有其它的经常使用的宏定义.欢迎加入.我会定期更新这个bl ...
- Web前端都学点儿啥?
Web开发如今是如日中天,热的发烫.但是Web开发相关的技术和知识却像N座大山一样,耸立在我们面前,连绵起伏,漫无边际.那么这些山头那些我们应该占领,那些我们应该绕开,很多人看着就蒙了,这不光是初学者 ...
- hadoop之WordCount源代码分析
//近期在研究hadoop.第一个想要要開始研究的必然是wordcount程序了.看了<hadoop应用开发实战解说>结合自己的理解,对wordcount的源代码进行分析. <pre ...
- JS常用的方法总结
/** * 将参数格式化为对象 * @param urlParams type string * @example * let urlParams = 'name="xiaoliu" ...
- 读汤姆大叔《深入理解javascript系列》笔记一编写高质量代码
感觉大叔的博文真的是很不错 我打算严格要求自己 按照大叔说的,这样我就会更有规范,更有思想的去工作 去写代码(一入代码深似海) 1,尽可能的少用全局变量(污染全局空间,也会和别人的代码 发生冲突造 ...
- Unity3D学习笔记——GUI高级组件
Unity3D中的高级控件都是由GUI类引出的,高级控件是由系统实现的,所以效率很高,但也可以自己实现,优点是任意修改灵活性高. 一:Label控件:用于展示一段文字的控件.可以输入字符串,也可以是贴 ...
- GoogleMap-------Google Play services SDK的下载和配置
前言:在android开发项目中当要使用GoogleMap需要有Google Maps Android API的支持,而他包含在了Google Play services SDK中,所以本文将介绍如何 ...
- <转载> Jquery的使用技巧-实用!
1.使用方法在需要使用JQuery的页面中引入JQuery的js文件即可.例如:<script type="text/javascript" src="js/jqu ...