InnoDB锁类型(S | X Lock)与查看锁命令。

引言

本篇引入锁的概念和查看锁的命令。


锁类型

InnoDB存储引擎实现了下面两种标准的行级锁。
         共享锁(S Lock):允许事务读一行数据。
         排他锁(X Lock):允许事务删除或更改一行数据。
其中共享锁是兼容的,X锁与任何的锁都不兼容。


查看锁请求信息命令

         show engine innodb status查看锁请求信息
在这里插入图片描述
比如上面执行的sql语句是
select * from user_borrow force index(key_userId) where user_id < 3 for update
“RECODE LOCKS 并且lock_mode 是X(排他锁)”。

Innodb 1.0开始,在 INFORMATION_SCHEMA 架构下添加了表INNODB_TRX、
INNODB_LOCKS、
INNODB_LOCK_WAITS
通过这三张表,可以更好地分析可能存在的锁问题。

         select * from information_schema.innodb_trx
查看当前事务情况

在这里插入图片描述
         select * from information_schema.innodb_locks
查看当前锁持有情况

在这里插入图片描述
         select * from information_schema.innodb_lock_waits
查看当前锁等待情况

在这里插入图片描述


         可以用下面这个sql来连表查询,更清晰。

select
r.trx_isolation_level,
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id  waiting_trx_thread,
r.trx_state  waiting_trx_state,
lr.lock_mode waiting_trx_lock_mode,
lr.lock_type  waiting_trx_lock_type,
lr.lock_table  waiting_trx_lock_table,
lr.lock_index  waiting_trx_lock_index,
r.trx_query  waiting_trx_query,
b.trx_id  blocking_trx_id,
b.trx_mysql_thread_id  blocking_trx_thread,
b.trx_state  blocking_trx_state,
lb.lock_mode blocking_trx_lock_mode,
lb.lock_type  blocking_trx_lock_type,
lb.lock_table  blocking_trx_lock_table,
lb.lock_index  blocking_trx_lock_index,
b.trx_query  blocking_query
from  information_schema.innodb_lock_waits  w
inner  join  information_schema.innodb_trx b
on  b.trx_id=w.blocking_trx_id
inner  join  information_schema.innodb_trx  r
on  r.trx_id=w.requesting_trx_id
inner  join   information_schema.innodb_locks  lb
on  lb.lock_trx_id=w.blocking_trx_id
inner  join   information_schema.innodb_locks  lr
on  lr.lock_trx_id=w.requesting_trx_id;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值