Mysql 服务性能优化配置:http://5434718.blog.51cto.com/5424718/1207526【该文章很好】

Sql查询性能优化

对Sql进行优化,肯定是该Sql运行未能达到预期;Mysql运行是基于开销的,CPU和IO。

所以第一步,监控该Sql的运行开销,找出性能瓶颈;第二步,查看该Sql的执行计划,根据执行计划 找出关键点,有针对性的进行优化。

监控Sql开销,使用profiling.

  开启profiling:set profiling=1;[关闭:set profiling=0;]

  查询profiling开启状态:show variables like '%profiling%';

  监控Sql查询:show profiles;

  一旦开启profile,最新的监控Sql会位于最下面,

查询某条Sql的详细开销信息:show profile cpu,block io for query {queryId}

根据上述信息,可以确定sql的开销类型。

2,分析sql 执行计划

  使用explain {sql语句}

如:

根据各项所代表的信息,找到关键点,进行相关优化。

也可使用系统库去侦查相关信息:

如:列出查询最慢的几条Sql,

SELECT *
FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC LIMIT 5;
也可以只筛选报错或有警告的Sql,如SUM_ERRORS > 0 OR SUM_WARNINGS >0;

查询SQL执行中出现临时表的情况: SUM_CREATED_TMP_TABLES = SUM_CREATED_TMP_DISK_TABLES;

最新执行的Sql:FIRST_SEEN > (NOW() - INTERVAL 2 DAY)。

查询SQL线程及其对应的执行情况,可用:

SELECT * FROM performance_schema.threads ,该可关联 information_schema.processlist用于协助调查。

显示某一SQL的执行详情:

SELECT event_name, timer_wait/1000000000 wait_ms
FROM events_stages_history_long AS stages
JOIN (SELECT event_id
FROM events_statements_history_long
ORDER BY event_id DESC limit 1) AS statements
ON stages.nesting_event_id = statements.event_id
ORDER BY stages.event_id;
查询某线程的执行历史 :
  SELECT thread_id,
         CONCAT( CASE WHEN event_name LIKE 'stage%' THEN
                       CONCAT('  ', event_name)
                     WHEN event_name LIKE 'wait%' AND nesting_event_id IS NOT NULL THEN
                       CONCAT('    ', event_name)
                     ELSE IF(digest_text IS NOT NULL, SUBSTR(digest_text, 1, 64), event_name)
               END,
               ' (',ROUND(timer_wait/1000000, 2),'μ) ') event
   FROM (
         (SELECT thread_id, event_id, event_name,
                 timer_wait, timer_start, nesting_event_id, digest_text
            FROM events_statements_history_long)
         UNION
         (SELECT thread_id, event_id, event_name,
                 timer_wait, timer_start, nesting_event_id, NULL
            FROM events_stages_history_long)
         UNION
         (SELECT thread_id, event_id, event_name,
                 timer_wait, timer_start, nesting_event_id, NULL
            FROM events_waits_history_long)
        ) events
  ORDER BY thread_id, event_id;

Mysql sql查询性能侦查的更多相关文章

  1. SQL常见优化Sql查询性能的方法有哪些?

    常见优化Sql查询性能的方法有哪些? 1.查询条件减少使用函数,避免全表扫描 2.减少不必要的表连接 3.有些数据操作的业务逻辑可以放到应用层进行实现 4.可以使用with as 5.使用“临时表”暂 ...

  2. SQL查询性能分析

    http://blog.csdn.net/dba_huangzj/article/details/8300784 SQL查询性能的好坏直接影响到整个数据库的价值,对此,必须郑重对待. SQL Serv ...

  3. SQL查询性能分析之(not in)、(and not)、()、(!=)性能比较

    SQL查询性能分析之(not in).(and not).().(!=)性能比较 SQL Server Bruce 3年前 (2013-01-08) 3284浏览 0评论 <:article c ...

  4. SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?

    前言 之前我们已经讨论过动态SQL查询呢?这里为何再来探讨一番呢?因为其中还是存在一定问题,如标题所言,很多面试题也好或者有些博客也好都在说在执行动态SQL查询时sp_executesql的性能比ex ...

  5. Mysql SQL查询今天、昨天、n天内、第n天------https://blog.csdn.net/baidu_27222643/article/details/60467585

    Mysql SQL查询今天.昨天.n天内.第n天 https://blog.csdn.net/baidu_27222643/article/details/60467585

  6. mysql经纬度查询并且计算2KM范围内附近用户的sql查询性能优化实例教程

    之前很傻很天真地以为无非就是逐个计算距离,然后比较出来就行了,然后当碰到访问用户很多,而且数据库中经纬度信息很多的时候,计算量的迅速增长,能让服务器完全傻逼掉,还是老前辈的经验比我们丰富,给了我很大的 ...

  7. MySQL索引,MySQL性能分析及explain的使用,分析SQL查询性能

    可以使用explain来分析MySQL查询性能,举例如下: 1.使用explain语句去查看分析结果 如 explain select * from test1 where id=1; 会出现: id ...

  8. MySql学习—— 查询性能优化 深入理解MySql如何执行查询

    本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解MySql如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避 ...

  9. MySQL之查询性能优化(四)

    优化特定类型的查询 COUNT()的作用 COUNT()是一个特殊函数,有两个非常不同的作用:它可以统计某个列值的数量,也可以统计行数.在统计列值时要求列值是非空的(不统计NULL). 如果在COUN ...

随机推荐

  1. Tomcat Server Configuration Automation Reinforcement

    目录 . 引言 . 黑客针对WEB Server会有那些攻击面 . 针对Tomcat Server可以做的安全加固 . Managing Security Realms with JMX . 实现对T ...

  2. POJ 3273 Monthly Expense

    传送门 Time Limit: 2000MS Memory Limit: 65536K Description Farmer John is an astounding accounting wiza ...

  3. App接口简介

  4. Java中数据类型及其之间的转换

    Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...

  5. oracle 编译中一个关于clntsh 库的一个 帖子 ,收藏!

    oracle 编译中一个关于clntsh 库的一个 帖子 ,收藏! ------------------------------------------------------------------ ...

  6. 利用SecureCRT上传、下载文件(使用sz与rz命令)

    sz用法: 下载一个文件 sz filename 下载多个文件 sz filename1 filename2 下载dir目录下的所有文件,不包含dir下的文件夹 sz dir/* 下载文件存放位置在s ...

  7. 超详细cordova环境配置(windows)及实例

    摘要: 最近闲来无事就把以前做的cordova项目整理了下,发现网上很少有详细完整的配置教程,所以自己就总结了下分享给大家. 项目地址:https://github.com/baixuexiyang/ ...

  8. acdream.18.KIDx's Triangle(数学推导)

    KIDx's Triangle Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Sub ...

  9. Toast工具类,Android中不用再每次都写烦人的Toast了

    package com.zhanggeng.contact.tools; /** * Toasttool can make you use Toast more easy ; * * @author ...

  10. Ubuntu 下 LAMP 的配置文件路径 转:

      配置文件路径: 1>apache 的配置文件路径 /etc/apache2/apache2.conf 2>apache 网站字符编码配置路径 /etc/apache2/conf.d/c ...