Mysql sql查询性能侦查
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;
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查询性能侦查的更多相关文章
- SQL常见优化Sql查询性能的方法有哪些?
常见优化Sql查询性能的方法有哪些? 1.查询条件减少使用函数,避免全表扫描 2.减少不必要的表连接 3.有些数据操作的业务逻辑可以放到应用层进行实现 4.可以使用with as 5.使用“临时表”暂 ...
- SQL查询性能分析
http://blog.csdn.net/dba_huangzj/article/details/8300784 SQL查询性能的好坏直接影响到整个数据库的价值,对此,必须郑重对待. SQL Serv ...
- SQL查询性能分析之(not in)、(and not)、()、(!=)性能比较
SQL查询性能分析之(not in).(and not).().(!=)性能比较 SQL Server Bruce 3年前 (2013-01-08) 3284浏览 0评论 <:article c ...
- SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?
前言 之前我们已经讨论过动态SQL查询呢?这里为何再来探讨一番呢?因为其中还是存在一定问题,如标题所言,很多面试题也好或者有些博客也好都在说在执行动态SQL查询时sp_executesql的性能比ex ...
- 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
- mysql经纬度查询并且计算2KM范围内附近用户的sql查询性能优化实例教程
之前很傻很天真地以为无非就是逐个计算距离,然后比较出来就行了,然后当碰到访问用户很多,而且数据库中经纬度信息很多的时候,计算量的迅速增长,能让服务器完全傻逼掉,还是老前辈的经验比我们丰富,给了我很大的 ...
- MySQL索引,MySQL性能分析及explain的使用,分析SQL查询性能
可以使用explain来分析MySQL查询性能,举例如下: 1.使用explain语句去查看分析结果 如 explain select * from test1 where id=1; 会出现: id ...
- MySql学习—— 查询性能优化 深入理解MySql如何执行查询
本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解MySql如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避 ...
- MySQL之查询性能优化(四)
优化特定类型的查询 COUNT()的作用 COUNT()是一个特殊函数,有两个非常不同的作用:它可以统计某个列值的数量,也可以统计行数.在统计列值时要求列值是非空的(不统计NULL). 如果在COUN ...
随机推荐
- mac下使用minicom
各种艰辛就不一一表过了,反正最后无奈的有捡起了minicom. 因为使用的brew,所以安装相对比较容易: brew install minicom 和Linux下一样的操作,先是查看硬件设备名称: ...
- JSP登录验证并显示信息
加入C标签: 加入jstl.jar 和standard.jar加入Lib文件夹中 将c.tld放入WEB-Info文件夹中 index.jsp <%@ page language="j ...
- Spring学习5-Spring整合JDBC及其事务处理(注解方式)
一.整合的步骤 1.步骤一:首先要获得DataSource连接池(推荐使用B方式): 要对数据库执行任何的JDBC操作,需要有一个Connection.在Spring中,Connection对象是 ...
- 删除ECSHOP后台升级提示/下载最新补丁升级提示
删除ECSHOP后台升级提示/下载最新补丁升级提示 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2014-05-30 删除最新补丁: v 2.7.3 releas ...
- tomcat管理员配置
纸上得来终觉浅,绝知此事要躬行 博客园 首页 新闻 新随笔 联系 管理 随笔- 458 文章- 0 评论- 38 Tomcat的Manager显示403 Access Denied 管理to ...
- eclipse中新建javaweb项目,查看某些类的源码
网上查到的大多说在项目下选择properties,在java Build Path下Add ExternalJAR Selection,加上Tomcat->lib下的servlet-api.ja ...
- 标题右边10px位置紧跟发布时间
一个ul列表,拥有若干li,内容是新闻标题,标题右边10px位置紧跟发布时间,当标题过长需要控制标题width,需要兼容ie6,不能用max-width h4{font-size:14px;heigh ...
- .htaccess文件详解
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用 笼统地来说,.htaccess可以帮我们实现包括:文件夹密码 ...
- Json.NET 利用ContractResolver解决命名不一致问题
今天在遇到这么个问题,项目上有一部分功能需要访问web api, 这个api请求和相应的数据格式都是使用JSON,JSON中的field命名方式是以下划线分割的,比如"project_nam ...
- CSS居中完全解决方案
上次面试面试官问到了,问了个定宽局中和不定宽局中,下来我把所有有关CSS居中都总结了一下 原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 水平居中 行内元素 把行内元素 ...