mysql innodbrowlocktime_MySQL innodb行锁测试
session1:更新记录
mysql>setautocommit=off;QueryOK,0rowsaffected(0.01sec)mysql>updatet1setemail='test@test.com'whereid=0;QueryOK,4rowsaffected(0.00sec)Rowsmatched:4Changed:4Warnings:0
session2也更新相同的记录,出现等待
mysql>setautocommit=off;QueryOK,0rowsaffected(0.00sec)mysql>updatet1setemail='abc'whereid=0;session3:查看系统等待事件:mysql>showstatuslike'%lock%';
+-------------------------------+---------+
|Variable_name|Value|
+-------------------------------+---------+
|Com_lock_tables|0|
|Com_unlock_tables|0|
|Innodb_row_lock_current_waits|1|--这里|Innodb_row_lock_time|0|
|Innodb_row_lock_time_avg|0|
|Innodb_row_lock_time_max|0|
|Innodb_row_lock_waits|1|
|Key_blocks_not_flushed|0|
|Key_blocks_unused|14497|
|Key_blocks_used|0|
|Qcache_free_blocks|1|
|Qcache_total_blocks|1|
|Table_locks_immediate|2070991|
|Table_locks_waited|2|
+-------------------------------+---------+14rowsinset(0.01sec)session1:提交记录
mysql>commit;QueryOK,0rowsaffected(0.01sec)session2:update立刻完成
mysql>updatet1setemail='abc'whereid=0;QueryOK,4rowsaffected(2min43.44sec)Rowsmatched:4Changed:4Warnings:0
session3:再次查看系统等待事件
mysql>showstatuslike'%lock%';
+-------------------------------+---------+
|Variable_name|Value|
+-------------------------------+---------+
|Com_lock_tables|0|
|Com_unlock_tables|0|
|Innodb_row_lock_current_waits|0|--这里为0|Innodb_row_lock_time|163436|
|Innodb_row_lock_time_avg|163436|
|Innodb_row_lock_time_max|163436|
|Innodb_row_lock_waits|1|
|Key_blocks_not_flushed|0|
|Key_blocks_unused|14497|
|Key_blocks_used|0|
|Qcache_free_blocks|1|
|Qcache_total_blocks|1|
|Table_locks_immediate|2070991|
|Table_locks_waited|2|
+-------------------------------+---------+14rowsinset(0.01sec)查询会话session1,session2的连接ID
session1:mysql>status;
--------------mysqlVer12.22Distrib4.0.24,forpc-solaris2.10(i386)Connectionid:15
session2:mysql>status;
--------------mysqlVer12.22Distrib4.0.24,forpc-solaris2.10(i386)Connectionid:13
在上面的session1尚没有提交的时候,可以执行下列命令,查看一些事务阻塞信息
mysql>showinnodbstatusG;
------------TRANSACTIONS------------Trxidcounter03852351
Purgedonefortrx'sn<03852350undon<00
Historylistlength11
Totalnumberoflockstructsinrowlockhashtable7
LISTOFTRANSACTIONSFOREACHSESSION:
---TRANSACTION00,notstarted,OSthreadid15
MySQLthreadid18,queryid2071119localhostroot
showinnodbstatus
---TRANSACTION03852350,ACTIVE6sec,OSthreadid14startingindexread
mysqltablesinuse1,locked1
LOCKWAIT2lockstruct(s),heapsize320
MySQLthreadid13,queryid2071118localhosttestUpdating--这里可以看到等待者
updatet1setemail='abcwhereid=0--这里可以看到等待者正在执行的SQL-------TRXHASBEENWAITING6SECFORTHISLOCKTOBEGRANTED:RECORDLOCKSspaceid0pageno32782nbits1056index`idx_t1_id`oftable`dc_test/t1`trxid03852350lock_modeXwaiting
Recordlock,heapno2PHYSICALRECORD:n_fields2;compactformat;infobits0
0:len4;hex80000000;asc;;1:len6;hex00000196fe5d;asc];;
------------------
---TRANSACTION03852348,ACTIVE391sec,OSthreadid12
7lockstruct(s),heapsize1024,undologentries4
MySQLthreadid15,queryid2071117loc
mysql innodbrowlocktime_MySQL innodb行锁测试相关推荐
- mysql innodb 全表锁,Mysql InnoDB行锁及表锁分享
一. 背景知识 二. 步入正题:表锁和行锁 1.1. 表锁 vs 行锁 在 MySQL 中锁的种类有很多,但是最基本的还是表锁和行锁:表锁指的是对一整张表加锁,一般是 DDL 处理时使用,也可以自己在 ...
- MySQL · 引擎分析 · InnoDB行锁分析
前言 理解InnoDB行锁,分析一条SQL语句会加什么样的行锁,会锁住哪些数据范围对业务SQL设计和分析线上死锁问题都会有很大帮助.对于InnoDB的行锁,已经有多篇月报进行了介绍,这里笔者借鉴前面月 ...
- MySQL数据库锁机制之MyISAM引擎表锁和InnoDB行锁详解
MySQL中的锁概念 Mysql中不同的存储引擎支持不同的锁机制.比如MyISAM和MEMORY存储引擎采用的表级锁,BDB采用的是页面锁,也支持表级锁,InnoDB存储引擎既支持行级锁,也支持表级锁 ...
- MySQL高级 - 锁 - InnoDB行锁 - 争用情况查看
InnoDB 行锁争用情况 show status like 'innodb_row_lock%'; Innodb_row_lock_current_waits: 当前正在等待锁定的数量Innodb_ ...
- 9、 InnoDB行锁
在 MySQL 中,InnoDB 行锁通过给索引上的索引项加锁来实现,如果没有索引,InnoDB 将通过隐藏的聚簇索引来对记录加锁. InnoDB 支持 3 种行锁定方式: 行锁(Record Loc ...
- innodb行锁理解
innodb行锁的一些认识 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的. InnoDB这种行锁实现特点意味着:只有通过索 ...
- mysql隐式锁定辅助索引_当Mysql - InnoDB行锁遇到复合主键和多列索引-Go语言中文社区...
背景 今天在配合其他项目组做系统压测,过程中出现了偶发的死锁问题.分析代码后发现有复合主键的update情况,更新复合主键表时只使用了一个字段更新,同时在事务内又有对该表的insert操作,结果出现了 ...
- mysql InnoDB 行锁分析
我们知道 mysql innodb 在插入更新数据时是锁行的,但这里所指的行并不是直面上说的单行,而是相对的范围的行! 引起我关注这个问题的是在做天气预报查询15天(http://tqybw.net) ...
- MySQL探秘(七):InnoDB行锁算法
在上一篇<InnoDB一致性非锁定读>中,我们了解到InnoDB使用一致性非锁定读来避免在一般的查询操作(SELECT FOR UPDATE等除外)时使用锁.然而锁这个事情是无法避免的, ...
最新文章
- LDP (Local Derivative Pattern)原理
- What are current fashion trends in Sydney?
- matlab二维谐振子,基于有限差分法求解的二维谐振子的MATLAB程序如下。哪位大神能帮我做个注明啊,完全看不懂啊,,急...
- 华为海思总裁致信员工:多年备胎一夜转正 挽狂澜于既倒
- Andrew Stankevich#39;s Contest (1)
- 23. 变量、作用域和内存问题
- ArcEngine实现pagelayout中文本元素的属性对话框
- Java实现获取汉字的拼音(首拼)
- arch linux引导不启动_archlinux安装Steam启动不了
- oracle数据库中文乱码解决办法
- typedef struct LNode *p和typedef struct LNode笔记
- 让自己的底线一降再降,相当于没有底线
- 如何切换计费模式中的“按需”和“包年包月”?
- linux/安卓的spi读写ADS1256出现读写错误
- 魏小亮:参加编程竞赛对实际工作的用处
- 代正通_ChromeBook怎么刷windows系统||Linux教程
- Oracle 'open cursor loop fetch into' and 'for in cursor loop'
- request-response
- 超级时尚大气Premiere模特网红街拍视频服装促销展示PR模板
- 电力现货市场的业务流程