什么是慢查询、长事务 ?

慢查询 是指一条 SQL 的执行时间太长。比如在一个有100w条数据的表中,查询一条数据时未命中索引,从而通过全表扫描查询数据,这个查询会耗时很长。这就是一个 Long SQL 。类似,更新数据、删除数据也可能出现慢查询 。

长事务,是指事务开启后长时间未结束(commit或者rollback都没执行)。出现长事务的原因有很多,例如:

事务中有一个慢查询;

就是忘记结束事务了;

一个长事务中锁住了一些资源,导致其他需要该资源的事务也变成长事务。

很多情况下,慢查询和长事务,会对业务产生很大的负面影响:

业务响应太慢。

连接数暴涨。

如何发现慢查询 ?

方法1:

使用 show processlist 查看MySQL 线程情况,若有 Command 为 Query ,Time 很大的线程在列表中,那么这个线程就是在执行一个慢查询。Info 字段能看出来对应的 SQL 。

select * from information_schema.processlist 效果和 show processlist 相同。

示例:

方法2:

开启慢查询日志,实时解析日志内容。

略。

如何处理不可接受的慢查询?

如果慢查询在意料之中,可接受,那么不用处理。否则应该:

干掉此次的慢查询。使用 kill  ,id 是 show processlist 返回的 Id 。

优化SQL、索引等,防止再次出现慢查询。

如何发现长事务?

查询结果中,idle_time 过大的事务就是长事务。输出结果中, trx_mysql_thread_id  是对应的线程标识。

如何干掉长事务?

方案1

从 INFORMATION_SCHEMA.INNODB_TRX 得到的长事务信息中,有对应的线程标识, kill 掉即可。

方案2

设置较小的 wait_timeout 可以干掉部分长事务。

对于业务代码,使用的是非交互模式的连接,可以使用 wait_timeout 设置超时时间。相当于,若某个连接在 wait_timeout 这个时间范围内是空闲的,MySQL 服务器会自动关闭连接。

注意,数据库连接池参数要根据情况调整下。

mysql长事务慢查询解决方案_MySQL : 如何监控和处理慢查询与长事务 ?相关推荐

  1. mysql分页查询关键_MySQL优化教程之超大分页查询

    背景 基本上只要是做后台开发,都会接触到分页这个需求或者功能吧.基本上大家都是会用MySQL的LIMIT来处理,而且我现在负责的项目也是这样写的.但是一旦数据量起来了,其实LIMIT的效率会极其的低, ...

  2. mysql sql 连接查询语句_Mysql——sql数据库中的连接查询

    1.1.1   交叉连接(CROSS JOIN) 交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积. 例如:下面的语句1和语句2的结果是相同的. ...

  3. mysql内连接查询原理_MySQL全面瓦解12:连接查询的原理和应用

    概述 MySQL最强大的功能之一就是能在数据检索的执行中连接(join)表.大部分的单表数据查询并不能满足我们的需求,这时候我们就需要连接一个或者多个表,并通过一些条件过滤筛选出我们需要的数据. 了解 ...

  4. mysql事务的重复性读_Mysql下InnoDB的可重复读级别的事务测试

    Mysql下InnoDB的可重复读的事务测试 ### 背景: * mysql版本:Server version: 5.1.71 * 操作系统:CentOS 6.5 X64 * 事务隔离级别:不可重复读 ...

  5. mysql第七章课后答案_mysql核心内幕第七章-查询解析与优化器

    查询优化器是指生成查询计划的子系统,该子系统通常完全处于服务器端,根据要参与连接(join)的表.数据读取方式(所殷读取或表扫描)和索引选择等因素制定查询计划.以基于开销的优化器为例,数据库查询优化器 ...

  6. 怎么提高mysql多表查询效率_MySQL创建index提高多表查询效率

    本文的目的在于探讨use index for join语句的基本原理.我们知道,在MySQL使用JION语句关联多表查询时,为表创建Index能够大幅度提高查询效率.下面以一个简单的例子来了解其中的原 ...

  7. mysql中多表联合查询语句_mysql中的多表联合查询语句是什么

    mysql中的多表联合查询语句是:[select 语句1 union [union 选项] select 语句2 union [union 选项] select 语句n].多表联合查询结果是将多个se ...

  8. mysql配置优化查询缓存_MySQL优化(4):查询缓存

    查询缓存: MySQL提供的数据缓存QueryCache,用于缓存SELECT查询的结果 默认不开启,需要在配置文件中开启缓存(my.ini/my.cnf) 在[mysqld]段中,修改query_c ...

  9. mysql json类型最大长度限制_Mysql Json 格式字段, value 值限长

    有一个 Json 字段,但是 value 值非常长,mysql5.7.21 不支持这么大的 value 值, 想问问大家有什么思路,如果不能直接存. 我的想法是拆分,把太长 value 值拆分成独立的 ...

最新文章

  1. Linux哪个和Windows很像,Linuxfx - 这套Linux操作系统看起来和Windows 10非常类似
  2. Opencv笔记(五)——把鼠标当画笔
  3. [MySQL光速入门]012 作业解答
  4. 构建增强现实移动应用程序的六款顶级工具
  5. memory拷贝与string拷贝的区别
  6. xp做打印服务器 找不到驱动,XP系统安装打印机驱动提示找不到指定的模块怎么办...
  7. dropbox免费容量_免费课程:使用ES6和Dropbox构建费用管理器
  8. Mysql事物隔离级别
  9. 暗物质影响星系,有没有影响太阳系
  10. 并发编程学习之Lock同步锁
  11. 【GPS】 根据GPS坐标求取两点间距离算法
  12. 傅立叶变换描述子 matlab,[傅里叶变换matlab]傅里叶变换的Matlab代码与注释
  13. 1005打印任务取消不了 hp_1005打印任务取消不了 hp_解决hp1005打印机无法打印故障...
  14. 火车票价还不够高(按照《经济学通识》手敲的(非原创))
  15. Tiled有java版本吗_使用TILED映射的Java碰撞检测
  16. 赵小楼《天道》《遥远的救世主》深度解析(117)分离已有的各种相,得你想要的结果
  17. caffe ssd 测试demo,检测单张图片
  18. 知乎关于王阳明心学的高赞答案。
  19. 简单的制作一个钓鱼网页!
  20. 如何打造一个低效能技术团队?

热门文章

  1. 吉大计算机学院刘淑芬,刘淑芬-吉林大学计算机科学与技术学院
  2. python 输出纯音频_Python如何录制系统音频(扬声器的输出)?
  3. cdh mysql sqoop 驱动_大数据技术之Sqoop学习——原理、安装、使用案例、常用命令...
  4. 火狐浏览器账号登录步骤详解
  5. Vue里引入three.js
  6. SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数
  7. oracle排名怎么去除空值影响,Oracle排序中常用的NULL值处理方法
  8. php多表递归查询,使用公用表表达式的递归查询
  9. mysql 1055 解决方案_MySQL报错1055解决方案 - 树懒学堂
  10. java http url 编码_Java中的HTTP URL地址编码