设为首页 加入收藏

TOP

MySQL优化之――日志(七)
2015-07-24 10:20:06 来源: 作者: 【 】 浏览:4
Tags:MySQL 优化 ―日志
操作因此在用户查询、更新频繁的情况下,通用查询日志会增长得很快。DBA可以定期删除比较早的通用日志,以节省磁盘空间,可以用直接删除日志文件的方式删除通用查询日志。要重新建立新的日志文件,可使用语句

?

mysqladmin -flush logs

?

直接删除log文件

\

执行 flush logs

\

log文件重新生成了

\


慢查询日志

慢查询日志是记录查询时长超过指定时间的日。慢查询日志主要用来记录执行时间较长的查询语句通过慢查询日志,可以找出执行时间较长、执行效率较低的语句,然后进行优化

1、启动和设置慢查询日志

mysql中慢查询日志默认是关闭的,可以通过配置文件my.ini或my.cnf中的log-slow-queries选项打开,也可以在mysql服务启动的时候使用--log--slow-queries[=file_name]启动慢查询日志。启动慢查询日志时,需要在my.ini或者my.cnf文件中配置long_query_time选项指定记录阀值,如果某条查询语句的查询时间超过了这个值,这个查询过程将被记录到慢查询日志文件中。

在my.ini或者my.cnf文件中开启慢查询日志的配置如下:

?

[mysqld]

log-slow-queries[=path/[filename]]
long_query_time=n

?

path为日志文件所在目录路径,filename为日志文件名。如果不指定目录和文件名称,默认存储在数据目录中文件名为hostname-slow.log,hostname是mysql服务器的主机名。参数n是时间值,单位是秒。如果没有设置long-query_time选项,默认时间为10秒

开启慢查询日志

?

[mysqld]
log-slow-queries
long_query_time=1

?

2、查看慢查询日志

mysql的慢查询日志是以文本形式存储的,可以直接使用文本编辑器查看。在慢查询日志中,记录着执行时间较长的查询语句,用户可以从慢查询日志中获取执行效率较低的查询语句,为查询优化提供重要的依据

查看慢查询日志的一些参数

show variables like '%slow%';

\

?

查看慢查询日志文件里的内容,使用文本编辑器打开数据目录下的WIN7U-20130414Z-slow.log文件

\

?

E:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.19-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time                 Id Command    Argument
# Time: 140802  0:02:29
# User@Host: root[root] @ localhost [::1]
# Query_time: 7.578125  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
use test;
SET timestamp=1406908949;
SELECT BENCHMARK (10000000,PASSWORD ('newpwd'));

?

可以看到这里记录了一条慢查询日志。执行该条语句的帐户是root @ localhost 查询时间是Query_time: 7.578125秒查询语句是 SELECT BENCHMARK (10000000,PASSWORD ('newpwd')); 该语句查询时间大大超过了设置值1秒,因此被记录在慢查询日志文件中

BENCHMARK函数简介:http://database.51cto.com/art/201010/229366.htm

3、删除慢查询日志

和通用查询日志一样,慢查询日志也可以直接删除。删除后在不重启服务器的情况下,需要执行

?

mysqladmin -u root -p flush logs

?

重新生成日志文件,或者在客户端登录到服务器执行 flush logs; 语句重建日志文件官方mysql的慢查询日志在这里有一个缺陷,就是查询阀值只能是1秒或以上,如果要设置一秒以下就无能为力了,这时候如果想找出1秒以下的慢查询SQL,可以使用percona提供的microslow-patch来突破限制,将慢查询时间阀值减小到毫秒级别


平时应打开哪些日志

日志既会影响mysql的性能,又会占用大量磁盘空间。因此,如果不必要,应尽可能少地开启日志。根据不同的使用环境,考虑开启不同的日志。例如开发环境中优化查询效率低的语句,可以开启慢查询日志,或者生产环境中发现某些SQL执行特别慢也可以开启如果磁盘空间不是特充足可以在高峰期间开启,在捕获到查询慢的SQL之后再关闭慢查询日志,如果需要搭建复制环境,那么就一定要开启二进制日志,如果数据特别重要也建议开启二进制日志,以便数据库损坏的时候也可以通过二进制日志,挽救一部分数据

通用日志无论在哪种情况下,一般不建议开启


总结

本文简单的阐述了MYSQL的日志面的内容,MYSQL的日志系统还是比较完善的,希望这篇文章对大家有帮助

首页 上一页 4 5 6 7 下一页 尾页 7/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇辛星让mysql跑的更快第一节之优化.. 下一篇MYSQL利用Navicat对含有Bold字段..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Python 数据分析与可 (2025-12-26 21:51:20)
·从零开始学Python之 (2025-12-26 21:51:17)
·超长干货:Python实 (2025-12-26 21:51:14)
·为什么 Java 社区至 (2025-12-26 21:19:10)
·Java多线程阻塞队列 (2025-12-26 21:19:07)