今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。
1、开启慢查询
1> 查看慢查询是否开启
show variables like "%quer%";
slow_query_log = ON #已开启
2> 开启方法:my.cnf目录配置
slow_query_lo
通过一个实例给大家分享了MySQL Sending data表查询慢问题解决办法。
最近在代码优化中,发现了一条sql语句非常的慢,于是就用各种方法进行排查,最后终于找到了原因。
一、事故现场
SELECT og.goods_barcode, og.color_id, og.size_id, SUM(og.goods_number) AS sold_number FROM order o
LEFT JOIN order_goods og ON o.order_id = og.order_id
mysql记录耗时的sql
mysql可以把耗时的sql或未使用索引的sql都记录在slow log里,供优化分析使用。
1.mysql慢查询日志启用:
mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢?
mysql> show variables like 'log_slow_queries';
+------------------+-------+
| Variable_name | Value
需要开启一个慢查询输出的一个机关:log_slow_queries。可以在MySQL配置文件中(my.ini/my.cnf)中设置,也可以通过MySQL客户端临时设置。第二种方法的好处是,可以不用重启MySQL服务,而使设置生效。那就来试试这个: 首先通过客户端连接到Mysql服务器,然后输入下面的语句: SET GLOBAL log_slow_queries = ON; SET GLOBAL long_query_time = 3; 这样MySQL就会把耗时>=3秒的SQL语句给记录下来
问题描述
一个用户反映先线一个SQL语句执行时间慢得无法接受。SQL语句看上去很简单(本文描述中修改了表名和字段名):
SELECT count(*) FROM a JOIN b ON a.`S` = b.`S` WHERE a.`L` > ‘2014-03-30 00:55:00’ AND a.`L` < ‘2014-03-30 01:00:00’ ;
且查询需要的字段都建了索引,表结构如下:
CREATE TABLE `a` (
`L` timestamp NOT NULL