登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. 未分类
  3. 正文

Mysql定时记录慢查询SQL,解决SQL性能烦恼

2020-11-24

思路比较简单,打开Mysql Event 定时任务框架,定时执行show processlist;并将结果存储至Mysql。

一、记录慢查询

1.1 打开Mysql Event管理器

SET GLOBAL event_scheduler = ON;

1.2 查询任务调度器是否已经打开

SHOW VARIABLES LIKE 'event_scheduler';

1.3 创建记录表

CREATE TABLE `processlist` (
  `ID` int(11) DEFAULT NULL,
  `USER` varchar(255) DEFAULT NULL,
  `HOST` varchar(255) DEFAULT NULL,
  `DB` varchar(255) DEFAULT NULL,
  `COMMAND` varchar(255) DEFAULT NULL,
  `TIME` bigint(20) DEFAULT NULL,
  `STATE` varchar(255) DEFAULT NULL,
  `INFO` text,
  `date` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;



1.4 新建定时任务

use iios_tmp;
DROP EVENT schedule_showprocess;
CREATE EVENT IF NOT EXISTS schedule_showprocess
ON SCHEDULE EVERY 2 SECOND
DO insert into iios_tmp.`processlist` ( select *, now() as `DATE`  from  information_schema.processlist where INFO is not null and DB is not null and HOST !="%" and STATE !="executing");

SHOW EVENTS 

1.6 查询事件执行结果

二、结果分析

明显看到存在很多超过60秒的全查询SQL语句,导致的DB死锁。fix it。

标签: 暂无
最后更新:2020-11-24

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号