美文网首页MySQL
mysql诊断调优常用SQL语句

mysql诊断调优常用SQL语句

作者: summer_1a77 | 来源:发表于2019-05-22 09:46 被阅读9次

在很多时候,我们需要通过SQL语句来查看MySQL执行SQL的情况,例如查看SQL执行队列,是否存在慢查询等等。

先看下基础配置,监控mysql执行的sql语句需要先开启相关日志

linux系统

可以在/etc/mysqld中添加如下:

指定日志路径

log =/usr/local/mysql/mysql.log (这个路径自定义即可)

就可以使用:

tail -f mysql.log

如果需要监控慢查询可以添加如下内容:

添加慢查下记录

log-slow-queries = /usr/local/mysql/slowquery.log(这个路径自定义即可)

long_query_time = 1

windows系统

修改my.ini,在mysqld下添加log一行,

[mysqld]

log = "D:/tmp/mysql_log/mysql_log.sql"  (这里路径自定义即可)

然后,重新启动mysql,就可以实时看到myql服务器当前正在执行的语句了。

常用的SQL,用于诊断排查问题

注:下列SQL在执行时,可能还需要你开启MySQL相应的配置项,请根据提示进行配置

#1. 查看当前应用连接,连接数突增排查

select user,SUBSTRING_INDEX(host,':',1) as ip , count(*) as count,db from information_schema.processlist where host not in ('localhost') and user not in ('replicater') group by ip order by count;

#2. 当前有没有锁

select * from information_schema.innodb_locks;

#3. 查看哪些sql执行最多

SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,SUM_ROWS_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN FROM performance_schema.events_statements_summary_by_digest where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' ORDER BY COUNT_STAR desc LIMIT 1;

#4. 哪个SQL扫描的行数最多(IO消耗)

SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,AVG_TIMER_WAIT,SUM_ROWS_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN FROM performance_schema.events_statements_summary_by_digest where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' ORDER BY SUM_ROWS_EXAMINED desc LIMIT 1

#5. 哪个SQL使用的临时表最多

SELECT SCHEMA_NAME,DIGEST_TEXT,SUM_CREATED_TMP_DISK_TABLES,SUM_CREATED_TMP_TABLES,FIRST_SEEN,LAST_SEEN FROM performance_schema.events_statements_summary_by_digest where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' ORDER BY SUM_CREATED_TMP_DISK_TABLES desc LIMIT 1

#6. 哪个SQL排序数最多(CPU消耗)

SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,SUM_ROWS_SENT,SUM_SORT_ROWS,FIRST_SEEN,LAST_SEEN FROM performance_schema.events_statements_summary_by_digest where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' ORDER BY SUM_SORT_ROWS desc LIMIT 1

#7. 哪个索引使用最多

SELECT OBJECT_NAME, INDEX_NAME, COUNT_FETCH, COUNT_INSERT, COUNT_UPDATE, COUNT_DELETE FROM performance_schema.table_io_waits_summary_by_index_usage ORDER BY SUM_TIMER_WAIT DESC limit 1;

#8. 哪个索引没有使用过

SELECT OBJECT_SCHEMA, OBJECT_NAME, INDEX_NAME FROM performance_schema.table_io_waits_summary_by_index_usage WHERE INDEX_NAME IS NOT NULL AND COUNT_STAR = 0 AND OBJECT_SCHEMA <> 'mysql' ORDER BY OBJECT_SCHEMA,OBJECT_NAME;

#9. 哪个表、文件逻辑IO最多(热数据)

SELECT FILE_NAME,EVENT_NAME,COUNT_READ,SUM_NUMBER_OF_BYTES_READ,COUNT_WRITE,SUM_NUMBER_OF_BYTES_WRITE FROM performance_schema.file_summary_by_instance ORDER BY SUM_NUMBER_OF_BYTES_READ+SUM_NUMBER_OF_BYTES_WRITE DESC LIMIT 2

#10. 查看某条sql各阶段执行时间,可开启profiling功能

set global profiling=on;

该文件转载自苦叶子公众号,见二维码

相关文章

  • mysql诊断调优常用SQL语句

    在很多时候,我们需要通过SQL语句来查看MySQL执行SQL的情况,例如查看SQL执行队列,是否存在慢查询等等。 ...

  • 数据库调优

    SQL调优 这是最常用、每一个技术人员都应该掌握基本的SQL调优手段(包括方法、工具、辅助系统等)。以MySQL为...

  • 10-Show Profile

    一、Show Profile MySQL提供可以用来分析当前会话中语句执行的资源消耗情况,用于SQL的调优的测量 ...

  • MySQL语法模板

    本系列文章主要归纳MySQL的SQL语句和常用的函数。 SQL语句:主要分为常用的,show,表、索引,视图,函数...

  • MySQL的SQL语句执行过程

    理解MySQL当中的SQL语句 MySQL的sql语句和我们常用的编程语句一样,都是我们输入文本,编译器编译或者解...

  • MySQL的函数认识

    理解MySQL当中的SQL语句 MySQL的sql语句和我们常用的编程语句一样,都是我们输入文本,编译器编译或者解...

  • Mysql执行计划功能详解

    Mysql执行计划使用详解 在Mysql调优过程中其中最关键的一点,就是正确使用执行计划,从而查看SQL语句的具体...

  • 【性能优化】MySQL常用慢查询分析工具

    常用慢查询分析工具 3.1 调优工具mysqldumpslow 3.1.1 调优工具常用设置 1、什么是MySQL...

  • Mysql-性能分析-Profiling

    是什么 Show Profile是mysql提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于Sql调优的...

  • Mysql常用SQL语句收集

    mysql常用sql语句收集 基础篇 //查询时间,友好提示 $sql = "select date_format...

网友评论

    本文标题:mysql诊断调优常用SQL语句

    本文链接:https://www.haomeiwen.com/subject/qsxyzqtx.html