mysql慢查询排查优化

即时分析:

show full percesslist;

开启慢查询日志,分析日志记录:

long_query_time = 1

log-slow-queries = /data/3306/slow.log

log_queries_not_using_indexes

分割日志发送至邮箱

加explain查看语句的具体执行方式,并定位在哪些字段加上索引,查看条件字段的唯一值

select count(distinct column_name) from tab_name;

另外可以分析 help show profile;

使用守护进程监控语句:

mysql -uroot -pxxx -e "show full processlist;"|grep -Evi “sleep”

对mysql配置超时时间:

[mysqld]

interactive_timeout=120

wait_timeout=120

java调整连接池(原配置过大)

php用mysql_connect避免使用pconnect,并且显式调用mysql_close

mysqlsla软件可用于慢查询分析(未检测)

时间: 2024-11-14 09:07:01

mysql慢查询排查优化的相关文章

MySQL子查询的优化

一.MySQL子查询的位置 当一个查询是另一个查询的子部分是,称之为子查询(查询语句中嵌套含有查询语句).子查询也是使用频率比较高的一种查询类型.因此,优化子查询,对于整个系统的性能也有直接的影响. 从查询出现在SQL语句的位置来看,它可以出现在目标列中,也可以出现在from子句中,还可以出现在JOIN/ON子句.GROUPBY子句.HAVING子句.ORDERBY子句等位置.下面依次来看这几种形式的子查询,以及对他们进行优化的一些想法. 1.子查询出现在目标列位置 当子查询出现在目标列位置的时

MySQL之查询性能优化四

MySQL的万能"嵌套循环"并不是对每种查询都是最优的.不过还好,mysql查询优化器只对少部分查询不适用,而且我们往往可以通过改写查询让mysql高效的完成工作.在这我们先来看看mysql优化器有哪些局限性: 1.关联子查询 mysql的子查询实现得非常糟糕.最糟糕得一类查询是where条件中包含in()的子查询语句. 例如,我们希望找到sakila数据库中,演员Penlope Guiness参演的所有影片信息. 很自然的,我们会按照下面的方式用子查询实现: select * fro

MySQL之查询性能优化

为什么查询速度会慢 通常来说,查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中"执行"可以认为是整个生命周期中最重要的阶段,这其中包括了大量为了检索数据到存储引擎的调用以及调用后的数据处理,包括排序.分组等. 在完成这些任务的时候,查询需要在不同的地方花费时间,包括网络,CPU计算,生成统计信息和执行计划.锁等待(互斥等待)等操作,尤其是向底层存储引擎检索数据的调用操作,这些调用需要在内存操作.CPU操作和内存

MySQL之查询性能优化一

只有当查询优化,索引优化,库表结构优化齐头并进时,才能实现mysql高性能. 在尝试编写快速的查询之前,需要清楚一点,真正重要是响应时间. 通常来说,查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后再服务器上进行解析,生成执行计划,执行,并返回结果给客户端. 其中"执行"可以认为是整个生命周期最重要的阶段,这其中包括了大量为了检索数据到存储引擎的调用以及调用后的数据处理,包括排序,分组等. 对于一个查询的全部生命周期,上面列的并不完整.这里我们只是想说:了解查询的生命周期,

MySQL之查询性能优化五(优化特定类型的查询)

本文将介绍如何优化特定类型的查询. 1.优化count()查询 count()聚合函数,以及如何优化使用了该函数的查询,很可能是mysql中最容易被误解的前10个话题之一 count() 是一个特殊的函数,有两种非常不同的作用.它可以统计某个列值的数量,也可以统计行数. 统计列值 要求列值是非空的.(不统计null,即null值计数为0) count()的另一个用处是统计结果集的行数.当mysql确认括号的表达式值不可能为空时,实际上就是统计 行数.最简单的就是当我们使用count(*)的时候,

MySQL分页查询性能优化

当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询.对于数据库分页查询,也有很多种方法和优化的点.下面简单说一下我知道的一些方法. 准备工作 为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明. 表名:order_history 描述:某个业务的订单历史表 主要字段:unsigned int id,tinyint(4) int type 字段情况:该表一共37个字段,不包含text等大型数组,最大为varcha

【MySQL】查询语句优化 𠔻

原文: http://blog.gqylpy.com/gqy/389 ???????MySQL的性能优化包罗甚广:索引优化.查询优化.查询缓存.服务器设置优化.操作系统及硬件优化.应用层优化(web服务器.缓存)等等.本文提到的优化技巧更适用于开发人员,都是从网络上收集和自己整理的,主要是查询语句上面的优化,其它层面的优化技巧在此不做记录. 整理如下 合理创建索引 count 的优化 避免使用不兼容的数据类型 索引字段上进行运算会使索引失效 尽量避免使用 !=.is null.is not nu

(转)MySQL慢查询分析优化 + MySQL调优

1.long_query_time的默认值为10,意思是运行10S以上的语句. 2.临时设置开启慢查询日志 mysql> show variables like '%slow_query_log%'; +---------------------+------------------------------------------+ | Variable_name | Value | +---------------------+---------------------------------

mysql模糊查询的优化方法--亲自实践

数据有4W多条,不多,但是模糊查询 起来特别慢. 1,尝试过用 select * from (select * from a union all select * from b...很多表union) as tempTable where name like "%a%" and person_id like "%1%",发现太慢了.. 2,尝试使用具体的字段,而不是*,即 select id,name,person_id from (select id,name,p