MySQL如何查看元数据锁阻塞在哪里
作者:yzs87 发布时间:2024-01-29 05:47:56
标签: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
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/yanzongshuai/article/details/78277890


猜你喜欢
- 本文实例讲述了Python自然语言处理 NLTK 库用法。分享给大家供大家参考,具体如下:在这篇文章中,我们将基于 Python 讨论自然语
- php获取文件创建时间、修改时间常用代码filemtime ( string filename )返回文件上次被修改的时间,出错时返回 FA
- model.pyimport datetimefrom django.contrib.auth.models import Userfrom
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML&n
- 现在我将清除页面缓存的一些方法总结如下:1、在Asp页面首部加入<% Response.Buffer = True
- 使用定时功能对于我们想要快速获取某个数据来说,是一个非常好的方法。这样我们就不用苦苦守在电脑屏幕前,只为蹲到某个想要的东西。在之前我们已经讲
- 本文通过调取高德行政区划查询接口,获取最新的数据信息(省、市、区、经纬度、行政级别、城市编码、行政编码等),并通过mysql.connect
- 使用索引的场景:阿里云日志里出现了慢sql 然后发现publish_works_id字段会经常用于一些关联,所以决定把这个字段加上
- 本文实例总结了javascript设置文本框光标的方法。分享给大家供大家参考,具体如下:对于text//得到光标位置function get
- 前言:常见的加密算法基本分为这几类:线性散列算法(签名算法)MD5,sha1对称性加密算法 AES DES非对称性加密算法 RSA一、md5
- 由于下载这个clsExport2Excel 代码时,已经找不到代码出处感谢上传这个类的朋友,为大家带来了方便我只对其中的属性传递做了一些调整
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona
- 一、下载MySQL msi版本下载地址:https://dev.mysql.com/downloads/mysql/二、安装直接右击点击安装
- 之前学习深度学习算法,都是使用网上现成的数据集,而且都有相应的代码。到了自己开始写论文做实验,用到自己的图像数据集的时候,才发现无从下手 ,
- 学习目的 掌握如何用ADO.NET插入新的记录 我们学得好快,今天做一个简易的新闻发布网页,可以说是个演示型的,只是让大家能理插入数据的最主
- 在开发Windows应用程序时,我们经常需要进行测试来确保程序的质量和稳定性。手动测试是一种常见的方法,但是它非常耗时和繁琐,特别是对于大型
- **问题描述:**有如下程序输出日志,计算程序运行时间,显示花费623分钟?start time:2019-03-15 19:45:31.2
- 当我们需要批量删除数据库中的表时,对于单个删除一些表是否感到烦躁,厌倦,干脆写个脚本用得了。本脚本使用游标循环删除,对于数量比较小,用游标暂
- 如何制作一个防止多次刷新计数的图片计数器?请问如何做一个专业的图片计数器? <%countlong
- 研究了一晚上的成果。import serialimport win32com.clientimport matplotlib.pyplot