开发指南—DAL语句—SHOW—SHOW METADATA LOCK

简介: 本文将介绍如何在PolarDB-X上使用SHOW METADATA LOCK语句查询持有锁的事务。

背景信息

PolarDB-X在创建全局二级索引时使用了内建的METADATA LOCK,保证事务以及数据的一致性。在已有表上建立全局二级索引通常需要较长的时间,若此时同时存在持有锁的事务在运行则可能出现SCHEMA变更等待事务完成的情况。此时您可以使用SHOW METADATA LOCK语句查询持有锁的事务以及对应正在执行的SQL语句,方便您排查阻塞SCHEMA变更的长时间事务。


说明 PolarDB-X支持Online Schema Change,添加全局二级索引过程中,会发生4次元数据版本切换,其中有两次会先获取METADATA LOCK的写锁加载元数据完成后立即解锁,其余的时间均不会持有METADATA LOCK的写锁。

语法


SHOW METADATA {LOCK | LOCKS} [schema_name[.table_name]]

schema_nametbl_name是可选的,用于过滤显示的数据库名或表名。


show metadata lock; # 显示该节点上所有持有metadata lock的连接

show metadata lock xxx_db; # 显示该节点上 xxx_db 中所有持有metadata lock的连接
show metadata lock xxx_db.tb_name; # 显示该节点上 xxx_db 中 tb_name 上所有持有metadata lock的连接

示例


mysql> show metadata lock;
+---------+--------+-----------------+---------------------+--------------+------------------+-----------------+----------+-------------------------------------+-----------------------------------------------+
| CONN_ID | TRX_ID | TRACE_ID | SCHEMA | TABLE | TYPE | DURATION | VALIDATE | FRONTEND | SQL |
+---------+--------+-----------------+---------------------+--------------+------------------+-----------------+----------+-------------------------------------+-----------------------------------------------+
| 4 | 0 | f88cf71cbc00001 | XXXX_DRDS_LOCAL_APP | full_gsi_ddl | MDL_SHARED_WRITE | MDL_TRANSACTION | 1 | XXXX_DRDS_LOCAL_APP@127.0.0.1:54788 | insert into `full_gsi_ddl` (id) VALUE (null); |
| 5 | 0 | f88cf71cbc00000 | XXXX_DRDS_LOCAL_APP | full_gsi_ddl | MDL_SHARED_WRITE | MDL_TRANSACTION | 1 | XXXX_DRDS_LOCAL_APP@127.0.0.1:54789 | insert into `full_gsi_ddl` (id) VALUE (null); |
+---------+--------+-----------------+---------------------+--------------+------------------+-----------------+----------+-------------------------------------+-----------------------------------------------+
2 rows in set (0.00 sec)


说明 该语句仅用于显示已持有锁的连接,不显示等待锁的连接。

表 1. 列名说明

列名 说明
CONN_ID 持有锁的连接ID
TRX_ID 持有锁的事务ID
TRACE_ID 持有锁的SQL的跟踪 ID
SCHEMA 库名
TABLE 表名
TYPE 持有锁类型
DURATION 持有锁的周期
VALIDATE 是否有效
FRONTEND 前端连接信息
SQL 持有锁的SQL语句
相关文章
|
存储 JSON JavaScript
Vue开发中Jwt的使用
Vue开发中Jwt的使用
352 0
|
安全 Java 应用服务中间件
【JavaWeb】Tomcat底层机制和Servlet运行原理
网络通信:Tomcat使用Java的Socket API来监听特定的端口(通常是8080),接收来自客户端的HTTP请求。 线程池:Tomcat使用线程池来处理并发的请求。当有新的请求到达时,Tomcat会从线程池中获取一个空闲线程来处理该请求,这样可以提高处理效率。 生命周期管理:Tomcat负责管理Servlet和其他Web组件的生命周期,包括初始化、请求处理和销毁等阶段。(init(), run())
软件工程师,如何有效缓解工作压力
在这个快速迭代、技术日新月异的数字时代,软件工程师们常常站在技术创新的最前沿。他们肩负着构建高效、可靠软件系统的重任,同时也面临着紧迫的截止日期、复杂的技术难题和持续的学习需求,这些因素共同构成了巨大的工作压力。如何在高压环境下保持冷静、高效与创新,同时维持良好的身心健康,成为了每位软件工程师必须面对的课题,也成为了这一行业亟待解决的问题。
478 57
|
数据库
脏读、幻读、不可重复读的定义?
脏读、不可重复读和幻读是数据库事务处理中的三种异常现象。脏读指读取未提交的修改数据;不可重复读指同一事务中多次读取数据不一致;幻读指读取记录范围时,前后读取结果数量不一致。这些现象通常由并发事务操作引起。
488 7
|
机器学习/深度学习 数据采集 人工智能
使用Python实现深度学习模型:智能音乐创作与生成
使用Python实现深度学习模型:智能音乐创作与生成
388 3
|
数据采集 小程序 API
Python实现isbn查询书籍详细信息
Python实现通过isbn码查询书籍详细信息
625 0
|
存储 网络协议 网络性能优化
网络传输延迟
网络传输延迟
640 1
|
网络协议 Ubuntu 网络安全
127.0.0.1、0.0.0.0和本机ip地址的区别
127.0.0.1、0.0.0.0和本机ip地址的区别
|
存储 缓存 应用服务中间件
Nginx代理服务 - 代理缓冲区、代理重新定义请求头、代理连接超时
1. 代理缓冲区 代理服务器可以缓存一些响应数据,来减少I/O损耗,数据默认存储在内存中,当内存不够时,会存储到硬盘上。
|
Web App开发 人工智能 自然语言处理
2023 年最好的36款 AI 生产力工具(七)
本文主要展示了36 款 AI 应用,可以帮助读者更快、更好地工作。每个人都在与ChatGPT交流,从完整的博客文章到特定代码行的功能都在询问。其结果令人惊叹。虽然我们仍在探索如何将这项技术纳入我们的工作流程中,但明显的是,人工智能工具正在改变游戏规则。尽管ChatGPT是目前最受欢迎的,但它远不是首款进入市场的人工智能应用程序。经过Zapier团队的大量研究和测试,总结出了以下36款能够改变工作方式的人工智能生产力工具。
330 1