前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql 监控 Innodb 阻塞状况

Mysql 监控 Innodb 阻塞状况

作者头像
dys
发布2018-04-03 17:58:13
1.7K0
发布2018-04-03 17:58:13
举报
文章被收录于专栏:性能与架构性能与架构

数据库的监控点中,阻塞情况是一个重要指标,Innodb 是主流存储引擎,下面实验一下如何监控器阻塞状态

模拟阻塞状态

使用两个MySQL客户端连接同一个MySQL服务器,并查询出各自的连接ID

client1 的 ID为 5

client2 的 ID为 6

先把阻塞过期时间设得大一点,便于测试

mysql> set global innodb_lock_wait_timeout=200;

client1 中执行语句

mysql> begin;

mysql> select film_id from film for update;

可以正常返回数据

client2 中执行语句

mysql> begin;

mysql> select title from film for update;

没有返回结果,处于等待状态,因为被阻塞了,完成了模拟

查询阻塞

执行下面的语句来查询阻塞

select b.trx_mysql_thread_id as '被阻塞线程'

,b.trx_query as '被阻塞SQL'

,c.trx_mysql_thread_id as '阻塞线程'

,c.trx_query as '阻塞SQL'

,(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(c.trx_started)) as '阻塞时间'

from

information_schema.innodb_lock_waits a

join

information_schema.innodb_trx b

on a.requesting_trx_id=b.trx_id

join

information_schema.innodb_trx c

on a.blocking_trx_id=c.trx_id

where

(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(c.trx_started))>10

查询结果

可以看到,已经正确查出了阻塞状态

这个查询语句比较长,但实际并不复杂,只查询了两张表,尾部的数字 10 可以随意改,是表示要查询阻塞时间大于多少秒的

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档