怎么样通过MySQL查看元数据锁阻塞语句
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,下文主要给大家带来怎么样通过MySQL查看元数据锁阻塞语句,希望怎么样通过MySQL查看元数据锁阻塞语句能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。操作步
千家信息网最后更新 2025年01月23日怎么样通过MySQL查看元数据锁阻塞语句
下文主要给大家带来怎么样通过MySQL查看元数据锁阻塞语句,希望怎么样通过MySQL查看元数据锁阻塞语句能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。
操作步骤:
1、session 1 执行:
start transaction;
select *from t1;
2、session 2 在第1步执行完后执行:
drop table t1;
此时session 2的drop语句被阻塞。那么怎么分析查看元数据锁呢?
方法:
1)执行show processlist;,可以看到drop语句在等待元数据锁
mysql> show processlist;+----+-------------+-----------+------+---------+---------+-----------------------------------------------------------------------------+------------------+| Id | User | Host | db | Command | Time | State | Info |+----+-------------+-----------+------+---------+---------+-----------------------------------------------------------------------------+------------------+| 5 | system user | | NULL | Connect | 1050234 | Waiting for master to send event | NULL || 6 | system user | | NULL | Connect | 983193 | Slave has read all relay log; waiting for the slave I/O thread to update it | NULL || 8 | root | localhost | yzs | Sleep | 93 | | NULL || 9 | root | localhost | yzs | Query | 3 | Waiting for table metadata lock | drop table t1 || 10 | root | localhost | NULL | Query | 0 | init | show processlist |+----+-------------+-----------+------+---------+---------+-----------------------------------------------------------------------------+------------------+5 rows in set (0.00 sec)
2)可以看到当前正在运行的事务的线程是trx_mysql_thread_id:8,那么这个线程在干什么呢?
mysql> select *from information_schema.innodb_trx\G *************************** 1. row *************************** trx_id: 17683 trx_state: RUNNING trx_started: 2017-10-18 05:32:46 trx_requested_lock_id: NULL trx_wait_started: NULL trx_weight: 0 trx_mysql_thread_id: 8 trx_query: NULL trx_operation_state: NULL trx_tables_in_use: 0 trx_tables_locked: 0 trx_lock_structs: 0 trx_lock_memory_bytes: 320 trx_rows_locked: 0 trx_rows_modified: 0 trx_concurrency_tickets: 0 trx_isolation_level: REPEATABLE READ trx_unique_checks: 1 trx_foreign_key_checks: 1 trx_last_foreign_key_error: NULL trx_adaptive_hash_latched: 0 trx_adaptive_hash_timeout: 10000 trx_is_read_only: 0 trx_autocommit_non_locking: 0 1 row in set (0.03 sec)
3)可以看到这个线程执行的是select语句,如果执行show engine innodb status;可以看到该事务处于sleep状态,也就是说这个事务语句执行完了,但是没有提交。
执行kill 8,将该事务的线程杀掉就可以了。或者检查业务的SQL语句,检查下是否有未提交的SQL语句。
mysql> select *from performance_schema.events_statements_current\G *************************** 1. row *************************** THREAD_ID: 27 EVENT_ID: 15 END_EVENT_ID: 15 EVENT_NAME: statement/sql/select SOURCE: mysqld.cc:962 TIMER_START: 1050544992900922000 TIMER_END: 1050544993740836000 TIMER_WAIT: 839914000 LOCK_TIME: 196000000 SQL_TEXT: select *from t1 DIGEST: 1aa32397c8ec37230aed78ef16126571 DIGEST_TEXT: SELECT * FROM `t1` CURRENT_SCHEMA: yzs OBJECT_TYPE: NULL OBJECT_SCHEMA: NULL OBJECT_NAME: NULL OBJECT_INSTANCE_BEGIN: NULL MYSQL_ERRNO: 0 RETURNED_SQLSTATE: NULL MESSAGE_TEXT: NULL ERRORS: 0 WARNINGS: 0 ROWS_AFFECTED: 0 ROWS_SENT: 10 ROWS_EXAMINED: 10 CREATED_TMP_DISK_TABLES: 0 CREATED_TMP_TABLES: 0 SELECT_FULL_JOIN: 0 SELECT_FULL_RANGE_JOIN: 0 SELECT_RANGE: 0 SELECT_RANGE_CHECK: 0 SELECT_SCAN: 1 SORT_MERGE_PASSES: 0 SORT_RANGE: 0 SORT_ROWS: 0 SORT_SCAN: 0 NO_INDEX_USED: 1 NO_GOOD_INDEX_USED: 0 NESTING_EVENT_ID: NULL NESTING_EVENT_TYPE: NULL
对于以上关于怎么样通过MySQL查看元数据锁阻塞语句,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。
语句
数据
阻塞
事务
线程
下文
内容
检查
业务
也就是
也就是说
完了
实际
废话
方法
更多
正在
步骤
状态
用处
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
迅雷数据库13
高校网络安全方案.doc
收缩数据库时恢复简单模式
数据库维护工作的主要内容
简述数据库管理的完整性
精灵3主控数据库
本地网站怎么转移服务器
上海一对一网络技术咨询口碑推荐
网络安全卫生手抄报
服务器启动盘多少钱
c 编程软件开发
连接外国服务器的软件
审计局做好网络安全工作
如何纠治网络安全隐患
信用卡网络安全标准
gartner 服务器
软件开发传感器接口问题
邯郸企业软件开发价格
教育系统网络安全宣传周讲座
铁总网络安全追责办法
迁安媒体网络技术不二之选
数据库有几种基本类型
网络科技与网络技术
数据库瘦身
张北阿里数据库中心二期
数据库触发器是什么意思
安全防控软件开发合同书
聊天软件服务器被关闭
进寺庙网络安全宣传
模组服务器推荐电脑版手机可玩