`
tianshibaijia
  • 浏览: 1121833 次
文章分类
社区版块
存档分类
最新评论

处理 mysql slow sql

 
阅读更多

在slow_query_log 值为ON的情况下(默认为OFF 默认为10s,同时精确到微秒)默认(log_output值为FIFL时)就会把这种慢查询记录到:slow_query_log_file值所指定的文件中。
mysql> select @@global.log_output;
+---------------------+
| @@global.log_output |
+---------------------+
| FILE |
+---------------------+
1 row in set (0.00 sec)

注意在MySQL5.1就开始支持把慢查询的日志记录放到mysq.slow_log中,但需要设置log_output变量值为TABLE:

mysql> set @@global.log_output='TABLE';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 6
Current database: *** NONE ***

Query OK, 0 rows affected (0.00 sec)
开启慢SQL之前:
mysql> show variables like '%slow%';
+---------------------+------------------------------------+
| Variable_name | Value |
+---------------------+------------------------------------+
| log_slow_queries | OFF |
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | /var/mysql/data/localhost-slow.log |
+---------------------+------------------------------------+
4 rows in set (0.00 sec)
开启慢SQL
mysql> set @@global.slow_query_log=ON;
Query OK, 0 rows affected (0.00 sec)

mysql> system cat /var/mysql/data/localhost-slow.log
/usr/local/mysql/bin/mysqld, Version: 5.5.15-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
/usr/local/mysql/bin/mysqld, Version: 5.5.15-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
/usr/local/mysql/bin/mysqld, Version: 5.5.15-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
/usr/local/mysql/bin/mysqld, Version: 5.5.15-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
mysql>
进入 /var/mysql/data/这个目录然后查看
mysqldumpslow localhost-slow.log
[root@localhost data]# mysqldumpslow localhost-slow.log

Reading mysql slow query log from localhost-slow.log
Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows=0.0 (0), 0users@0hosts



因为为了性能考虑,一般general log不会开启。slow log可以定位一些有性能问题的sql,而general log会记录所有的SQL。
mysql5.0版本,如果要开启slow log、general log,需要重启,从MySQL5.1.6版开始,general query log和slow query log开始支持写到文件或者数据库表两种方式,并且日志的开启,输出方式的修改,都可以在Global级别动态修改。

mysql> select version();
+------------+
| version() |
+------------+
| 5.5.15-log |
+------------+
1 row in set (0.00 sec)

设置日志输出方式为文件(如果设置log_output=table的话,则日志结果会记录到名为gengera_log的表中,这表的默认引擎都是CSV):

mysql> set global log_output=file;
Query OK, 0 rows affected (0.00 sec)

设置general log的日志文件路径:

mysql> set global general_log_file='/tmp/general.log';
Query OK, 0 rows affected (0.00 sec)

 开启general log:

mysql> set global general_log=on;
Query OK, 0 rows affected (0.00 sec)

过一段时间后,关闭general log:

mysql> set global general_log=off;
Query OK, 0 rows affected (0.01 sec)

查看tmp/general.log的信息,可以大致看到哪些sql查询/更新/删除/插入比较频繁了。比如有些表不是经常变化的,查询量又很大,就完全可以cache;对主备延迟要求不高的表,读可以放到备库;等等


分享到:
评论

相关推荐

    MySQL服务器优化细解

    执行时间超过2秒的即为慢查询,系统显示有4148个慢查询,你可以分析慢查询日志,找出有问题的SQL语句,慢查询时间不宜设置过长,否则意义不大,最好在5秒以内,如果你需要微秒级别的慢查询,可以考虑给MySQL打补丁:...

    MySQL开启Slow慢查询的方法示例

    在mysql中slow query log是一个非常重要的功能,我们可以开启mysql的slow query log功能,这样就可以分析每条sql执行的状态与性能从而进行优化了。 本文就来给大家介绍了关于MySQL开启Slow慢查询的相关内容,下面话...

    五款常用mysql slow log分析工具的比较分析

    比较的五款常用工具mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter mysqldumpslow, mysql官方提供的慢查询日志分析工具. 输出图表如下: 主要功能是, 统计不同慢sql的 出现次数(Count...

    查找MySQL中查询慢的SQL语句方法

    这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用–log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,...

    使用MySQL Slow Log来解决MySQL CPU占用高的问题

    首先找到MySQL的配置文件my.cnf,根据不同版本的mysql开启慢查询的配置也不一样 mysql 5.0 [mysqld] long_query_time = 1 log-slow-queries = /var/log/mysql/slow.log mysql 5.1 [mysqld] long_query_time = 1 ...

    mysql记录耗时的sql实例详解

    mysql可以把耗时的sql或未使用索引的sql都记录在slow log里,供优化分析使用。 1.mysql慢查询日志启用: mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql...

    详解MySQL中SlowLog的配置方法(图文)

    mysql 日志系统上线有段时间了,前端在慢慢切站点过来写入,未雨绸缪 diy了套 mysql 监控工具. 分为 slave status ,sync,objec infot,userprivileges,job status ,slowlog. 这次说下slow_log mysql 1.5 开始支持 set...

    Mysql开启慢SQL并分析原因

    第一步.开启mysql慢查询 方式一:修改配置文件 Windows:Windows 的配置文件为 my.ini,一般在 MySQL 的安装目录下或者 c:\Windows 下。 Linux:Linux 的配置文件为 my.cnf ,...slow_query_log_file=mysql_slow_query

    MySQL slow_log表无法修改成innodb引擎详解

    从mysql.slow_log 获取慢查询日志很慢,该表是csv表,没有索引。 想添加索引来加速访问,而csv引擎不能添加索引(csv引擎存储是以逗号分割的文本来存储的),只能改存储引擎来添加索引了 mysql.slow_log表能改成...

    MySQL开启慢查询日志log-slow-queries的方法

    MySQL中提供了一个慢查询的日志记录功能,可以把查询SQL语句时间大于多少秒的语句写入慢查询日志,日常维护中可以通过慢查询日志的记录信息快速准确地判断问题所在

    高并发基础之-MySql性能优化.pdf

    目标 了解什么是优化 掌握优化查询的方法 掌握优化数据库结构的方法 掌握优化 MySQL 服务器的方法 2. 什么是优化? 合理安排资源、调整系统...查看你的 mysql 数据库是否有慢查询:SHOW STATUS LIKE 'Slow_queries'

    Mysql效率优化定位较低sql的两种方式

    通过慢查询日志定位那些执行效率较低的 SQL 语句,用 –log-slow-queries[=file_name] 选项启动时, mysqld 会 写一个包含所有执行时间超过 long_query_time 秒的 SQL 语句的日志文件,通过查看这个日志文件定位效率...

    根据mysql慢日志监控SQL语句执行效率

    根据mysql慢日志监控SQL语句执行效率 启用MySQL的log-slow-queries(慢查询记录)。

    Mysql sql慢查询监控脚本代码实例

    general_log=1#开启mysql执行sql的日志 slow_query_log=1#开启mysql慢sql的日志 #设置之后会影响general_log和slow_query_log, log_output=table,File#日志输出会写表,也会写日志文件,为了便于程序去统计,所以...

    MySQL网络培训精品班-Inside君姜承尧

    MySQL 数据类型和SQL查询 开发 day008-MySQL 数据类型 day009-精通JSON类型 day010-Employees 临时表的创建 外键约束 day011-SQL语法之SELECT day012-子查询 INSERT UPDATE DELETE REPLACE day013-作业讲解一 Rank ...

    MySQL SQL语句分析与查询优化详解

    设置的方法,可以通过MySQL命令行设置set global slow_query_log=on 或者修改/etc/my.cnf文件,添加slow_query_log=on 2、slow_query_log_file 指定慢查询日志的存储路径及文件 建议日志存储和数据存储分开存储 3、...

Global site tag (gtag.js) - Google Analytics