首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL中的空performance_schema.data_locks

MYSQL中的空performance_schema.data_locks
EN

Stack Overflow用户
提问于 2022-07-21 23:31:36
回答 1查看 172关注 0票数 0

我有一个运行在MySQL引擎中的远程InnoDB服务器。在执行特定的select查询操作时,我希望检查innoDB引擎使用的行锁。例如这样的事情:-

代码语言:javascript
复制
SELECT col1,col2 ...  
FROM table1 Inner Join table2 
ON(table1.foreignkey = table2.primaryKey)
WHERE table1.id=<some_id>; 

我在MySQL中读到了有关MySQL表的内容,但是当我执行上面的查询时,然后尝试显示performance_schema.data_locks的内容,例如:-

代码语言:javascript
复制
SELECT 
         ENGINE_TRANSACTION_ID as trx_id,
         OBJECT_NAME as `table`,
         INDEX_NAME,
         LOCK_DATA,
         LOCK_MODE,
         LOCK_STATUS 
       FROM performance_schema.data_locks;

上面的查询总是返回一个空集。我已经尝试将autocommit设置为0,但在queryset中仍然没有看到任何内容。

代码语言:javascript
复制
SET autocommit=0
Begin;


SELECT col1,col2 ...  
FROM table1 Inner Join table2 
ON(table1.foreignkey = table2.primaryKey);


SELECT 
         ENGINE_TRANSACTION_ID as trx_id,
         OBJECT_NAME as `table`,
         INDEX_NAME,
         LOCK_DATA,
         LOCK_MODE,
         LOCK_STATUS 
       FROM performance_schema.data_locks;

这个流总是给出空集。尽管performance_schema变量被设置为ON。

我能做些什么来查看InnoDB使用的行锁。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-22 00:49:30

模式事务和锁定信息

data_locks:这个Performance表包含每个持有锁的一行和每个被阻塞的锁请求,等待被持有的锁被释放:对于每个持有的锁都有一行,不管持有锁的事务的状态如何(INNODB_TRX.TRX_STATE正在运行、锁等待、回滚或提交)。InnoDB中等待另一个事务释放锁的每个事务(INNODB_TRX.TRX_STATE是锁等待)都会被一个阻塞锁请求阻塞。该阻塞锁请求用于另一个事务在不兼容模式下持有的行或表锁。锁请求的模式总是与阻止请求的已持有锁的模式不兼容(读与写,共享还是独占)。在其他事务提交或回滚之前,阻止事务无法继续进行,从而释放请求的锁。对于每个阻塞的事务,data_locks包含一行,该行描述事务请求的每个锁,并正在等待这些锁。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73073657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档