我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL数据库出现慢查询的危害

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL数据库出现慢查询的危害

1、MySQL数据库当出现慢查询,是比较危险的,一旦有其他的DDL操作,可能会造成整个数据库的等待

可以分以下几种情况:

当表是MyiSAM表,对表有慢查询,不阻塞Select,对该表的其他DML,DDL操作都会被阻塞,比如出现Wating for table level lock,数据库中一定不能还存在MyiSAM表

当表是Innodb表,当表上有慢查询,不阻塞Select 和DML,其他的DDL操作都会被阻塞,比如出现waiting for table metadata lock


综上,当数据库中存在慢查询时,是比较危险的,当执行备份,create index ,alter  table , flush table 等操作时就会造成数据库的等待


解决办法:

1、对数据库中执行时间较长的Select进行监控,并及时报警

2、如果允许的话,写脚本,发现较长的select语句,直接kill,并记录日志中




-B, --batch         Don't use history file. Disable interactive behavior.  

-s, --silent        Be more silent. Print results with a tab as separator,each row on new line.

-e, --execute=name  Execute command and quit. (Disables --force and historyfile.)


#如果数据库中当前有大量的select,可以过滤掉,只kill waiting的

cat killWaitSession.sh

  

#!/bin/bash
for i in `mysql -Bse 'show full processlist' | grep -i select |grep -i "Waiting | awk  '{print $1}'`
do
        mysql -Bse "kill  $i"
done



show processlist的command的状态有很多,其中Query代表正在执行的命令


Query  : The thread is executing a statement.


cat killLongQuerySession.sh

#!/bin/bash
executetime=(`mysql -Bse 'show  processlist'| grep 'Query'|awk  '{print $6 " " $1}'|sort -rn|head -1`)  #第6列是运行时间,第一列为session id
time=${executetime[0]}
id=${executetime[1]}
while :
do
    maxtime=300
    if [ $time  -gt  $maxtime  ] ; then
        echo $time $id >> /tmp/killqueryid.log
        mysql -Bse "kill  $id"
    #else
    #   echo $time $id
    fi
    sleep 10 #睡眠10s
done



按MySQL中执行时间反向排序

 mysqladmin processlist --verbose |grep 'Query'|awk -F "|" '{print $7 $2 $9}'|sort -rn -k1


参考:

https://blog.51cto.com/jim123/1836712

https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html

https://dev.mysql.com/doc/refman/5.7/en/thread-commands.html


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL数据库出现慢查询的危害

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中的慢查询是什么及有哪些危害

本文小编为大家详细介绍“MySQL中的慢查询是什么及有哪些危害”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL中的慢查询是什么及有哪些危害”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、什么是慢查询什
2023-07-04

mysql数据库怎么查询导出数据

通过命令行工具(mysqldump)或 phpmyadmin 可以导出 mysql 数据库数据。查询数据时,使用 sql 查询语句指定列名和条件,结果可导出为文件或导入其他数据库。如何从 MySQL 数据库查询并导出数据导出方法:1.
mysql数据库怎么查询导出数据
2024-08-06

mysql怎么导出查询数据库

导出查询数据库的方法包括:使用 mysqldump 命令行工具。使用 select into outfile 语句直接输出到文本文件。使用第三方工具,如 mysql workbench、heidisql、navicat premium 等。
mysql怎么导出查询数据库
2024-08-06

Mysql数据库慢查询常用优化方式

目录慢查询日志概念一、数据库中设置SQL慢查询1、mysql慢查询相关配置参数介绍2、实现配置步骤二、分析慢查询日志三、常见的慢查询优化1、索引没起作用的情况2、优化数据库结构3、分解关联查询4、优化LIMIT分页四、常用优化方法1. SQ
2023-05-05

mysql数据库多表关联查询的慢SQL优化

工作中我们经常用到多个left join去关联其他表查询结果,但是随着数据量的增加,一个表的数据达到百万级别后,这种普通的left join查询将非常的耗时。 举个例子:     现在porder表有 1000W数据,其他关联的表数据都很少,因为条件的限制 必
mysql数据库多表关联查询的慢SQL优化
2017-02-16

php怎么从mysql数据库中读出查询的数据

php从mysql数据库中读出查询的数据的方法:1、通过mysqli_connect连接mysql数据库;2、设置字符集编码格式;3、执行SQL语句;4、处理结果集。
2017-10-05

mysql数据库怎么查询数据的

在 mysql 中查询数据,可以使用 select 语句,语法:select 列名from 表名where 条件;可选参数包括 distinct(去除重复记录)、limit(限制记录数)、group by(分组)和 having(分组后过滤
mysql数据库怎么查询数据的
2024-04-22

MySQL数据库查询中怎么实现多表查询

今天小编给大家分享一下MySQL数据库查询中怎么实现多表查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、多表查询多表查
2023-06-29

输出WordPress数据库查询的具体内容 减少数据库查询次数

最近做一个wordpress的企业模板,关注了一下查询次数这个东西! 在 footer.php 里添加了如下代码,以显示wordpress查询数据库次数及查编程客栈询耗时:
2022-06-12

编程热搜

目录