mysql 开启慢查询、二进制日志
对于SQL调优,其中关键的一点是开启慢查询日志。MYSQL会记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,
才能更好的优化数据库系统的性能。
MYSQL慢查询日志默认是关闭的。需要通过在 /etc/my.cnf 配置中添加如下参数:
#开启慢查询日志 slow_query_log=ON #慢查询的阈值,默认为10秒,最小为0,精度可以到微妙 long_query_time=3 #日志记录文件如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。 slow_query_log_file=slow_query.log
配置修改后,重启数据库
# service mysqld restart
验证开启慢日志查询:
第一种直接通过变量来确认是否开启。
mysql> show variables like 'slow_query%'; +---------------------+----------------+ | Variable_name | Value | +---------------------+----------------+ | slow_query_log | ON | | slow_query_log_file | slow_query.log | +---------------------+----------------+ 2 rows in set (0.00 sec) mysql> show variables like 'slow_query_time%'; Empty set (0.00 sec) mysql> show variables like 'long_query_time%'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 3.000000 | +-----------------+----------+ 1 row in set (0.00 sec)
第二种是直接通过查看慢日志文件内容来确认:
执行超过3s的查询语句。
查看慢查询日志内容:
这样我们就能通过慢日志拿到SQL,从而再对SQL进行索引排查,进行SQL优化。
二进制文件:记录数据变化
binlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容,语句以事件的形式保存,描
述了数据的变更顺序,binlog还包括了每个更新语句的执行时间信息。如果是DDL语句,则直接记录到
binlog日志,而DML语句,必须通过事务提交才能记录到binlog日志中。 生产中才开启二进制日志。
主要作用:数据备份、恢复、主从
开启二进制日志:
在 /etc/my.cnf 配置中添加如下配置:
log-bin=mysql-bin
执行 service mysqld restart 重启数据库。查看数据库目录
出现了mysql-bin文件,后面的序号是备份次数,文件会在数据库备份、重启时,都会为当前的数据进行备份。
比如我再执行多两次重启数据库,会生成这样的文件。