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行锁测试相关推荐

  1. mysql innodb 全表锁,Mysql InnoDB行锁及表锁分享

    一. 背景知识 二. 步入正题:表锁和行锁 1.1. 表锁 vs 行锁 在 MySQL 中锁的种类有很多,但是最基本的还是表锁和行锁:表锁指的是对一整张表加锁,一般是 DDL 处理时使用,也可以自己在 ...

  2. MySQL · 引擎分析 · InnoDB行锁分析

    前言 理解InnoDB行锁,分析一条SQL语句会加什么样的行锁,会锁住哪些数据范围对业务SQL设计和分析线上死锁问题都会有很大帮助.对于InnoDB的行锁,已经有多篇月报进行了介绍,这里笔者借鉴前面月 ...

  3. MySQL数据库锁机制之MyISAM引擎表锁和InnoDB行锁详解

    MySQL中的锁概念 Mysql中不同的存储引擎支持不同的锁机制.比如MyISAM和MEMORY存储引擎采用的表级锁,BDB采用的是页面锁,也支持表级锁,InnoDB存储引擎既支持行级锁,也支持表级锁 ...

  4. MySQL高级 - 锁 - InnoDB行锁 - 争用情况查看

    InnoDB 行锁争用情况 show status like 'innodb_row_lock%'; Innodb_row_lock_current_waits: 当前正在等待锁定的数量Innodb_ ...

  5. 9、 InnoDB行锁

    在 MySQL 中,InnoDB 行锁通过给索引上的索引项加锁来实现,如果没有索引,InnoDB 将通过隐藏的聚簇索引来对记录加锁. InnoDB 支持 3 种行锁定方式: 行锁(Record Loc ...

  6. innodb行锁理解

    innodb行锁的一些认识 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的. InnoDB这种行锁实现特点意味着:只有通过索 ...

  7. mysql隐式锁定辅助索引_当Mysql - InnoDB行锁遇到复合主键和多列索引-Go语言中文社区...

    背景 今天在配合其他项目组做系统压测,过程中出现了偶发的死锁问题.分析代码后发现有复合主键的update情况,更新复合主键表时只使用了一个字段更新,同时在事务内又有对该表的insert操作,结果出现了 ...

  8. mysql InnoDB 行锁分析

    我们知道 mysql innodb 在插入更新数据时是锁行的,但这里所指的行并不是直面上说的单行,而是相对的范围的行! 引起我关注这个问题的是在做天气预报查询15天(http://tqybw.net) ...

  9. MySQL探秘(七):InnoDB行锁算法

     在上一篇<InnoDB一致性非锁定读>中,我们了解到InnoDB使用一致性非锁定读来避免在一般的查询操作(SELECT FOR UPDATE等除外)时使用锁.然而锁这个事情是无法避免的, ...

最新文章

  1. LDP (Local Derivative Pattern)原理
  2. What are current fashion trends in Sydney?
  3. matlab二维谐振子,基于有限差分法求解的二维谐振子的MATLAB程序如下。哪位大神能帮我做个注明啊,完全看不懂啊,,急...
  4. 华为海思总裁致信员工:多年备胎一夜转正 挽狂澜于既倒
  5. Andrew Stankevich#39;s Contest (1)
  6. 23. 变量、作用域和内存问题
  7. ArcEngine实现pagelayout中文本元素的属性对话框
  8. Java实现获取汉字的拼音(首拼)
  9. arch linux引导不启动_archlinux安装Steam启动不了
  10. oracle数据库中文乱码解决办法
  11. typedef struct LNode *p和typedef struct LNode笔记
  12. 让自己的底线一降再降,相当于没有底线
  13. 如何切换计费模式中的“按需”和“包年包月”?
  14. linux/安卓的spi读写ADS1256出现读写错误
  15. 魏小亮:参加编程竞赛对实际工作的用处
  16. 代正通_ChromeBook怎么刷windows系统||Linux教程
  17. Oracle 'open cursor loop fetch into' and 'for in cursor loop'
  18. request-response
  19. 超级时尚大气Premiere模特网红街拍视频服装促销展示PR模板
  20. 电力现货市场的业务流程

热门文章

  1. Spring Integration基本用法
  2. 1095 解码PAT准考证
  3. 啥是BGP机房啊,被科普一下!
  4. 逻辑电路分析的方法介绍与表决器举例
  5. 环境初始化与数据清除
  6. Nginx中文域名配置
  7. 人脸检测(二)--人脸识别样本制作及训练测试
  8. 5906. 【NOIP2018模拟10.15】传送门 (portal)
  9. python魔法方法详解_Python魔术方法详解
  10. 周杰伦新专辑《蓝宫调》曲目资料疑似全泄漏