mysql配置调优

工作中,会遇到需要查看mysql的top 20 慢sql,逐个进行优化,加上必要的索引这种需求,这时就需要开启数据库的慢查询日志的功能

1.查询当前慢查询日志的状态

# 默认为关闭状态

1mysql 2---------------------------- 3show variables like "%slow_query_log%"; 4----------------------------

# 实例演示:

1mysql> show variables like "%slow_query_log%"; 2+---------------------+-------------------------------------------+ 3| Variable_name | Value | 4+---------------------+-------------------------------------------+ 5| slow_query_log | OFF | 6| slow_query_log_file | /usr/local/mysql/data/1055-mysql-slow.log | 7+---------------------+-------------------------------------------+ 82 rows in set (0.00 sec)

# 可以看到,慢查询日志的状态和默认的慢查询日志的文件

1[root@1055-mysql ~]# cd /usr/local/mysql/data/ 2[root@1055-mysql data]# ll 3总用量 568888 4-rw-r----- 1 mysql root 5888 117 2016 1055-mysql.err-rw-rw---- 1 mysql mysql 56 117 2016 auto.cnf 5-rw-rw---- 1 mysql mysql 281018368 124 11:15 ibdata1 6-rw-rw---- 1 mysql mysql 50331648 124 11:15 ib_logfile0 7-rw-rw---- 1 mysql mysql 50331648 1212 2017 ib_logfile1 8drwx------ 2 mysql mysql 4096 117 2016 mysql 9-rw-rw---- 1 mysql mysql 120 124 11:15 mysql-bin.000123 10-rw-rw---- 1 mysql mysql 120 124 11:15 mysql-bin.000124 11-rw-rw---- 1 mysql mysql 78 124 11:15 mysql-bin.index 12drwx------ 2 mysql mysql 4096 117 2016 performance_schema

# 但实际在该位置并未生成慢查询日志的文件

2.手动开启慢查询日志

# 登陆mysql进行设置

1mysql 2---------------------------- 3set global slow_query_log=on; 4----------------------------

# 实例演示:

1mysql> set global slow_query_log=on; 2Query OK, 0 rows affected (0.02 sec) 3 4mysql> show variables like "%slow_query_log%"; 5+---------------------+-------------------------------------------+ 6| Variable_name | Value | 7+---------------------+-------------------------------------------+ 8| slow_query_log | ON | 9| slow_query_log_file | /usr/local/mysql/data/1055-mysql-slow.log | 10+---------------------+-------------------------------------------+ 112 rows in set (0.00 sec)

# 可以看到,慢查询日志的状态更改了

1[root@1055-mysql data]# ll 2总用量 568892 3-rw-r----- 1 mysql root 5888 117 2016 1055-mysql.err 4-rw-rw---- 1 mysql mysql 175 122 18:23 1055-mysql-slow.log-rw-rw---- 1 mysql mysql 56 117 2016 auto.cnf 5-rw-rw---- 1 mysql mysql 281018368 124 11:15 ibdata1 6-rw-rw---- 1 mysql mysql 50331648 124 11:15 ib_logfile0 7-rw-rw---- 1 mysql mysql 50331648 1212 2017 ib_logfile1 8drwx------ 2 mysql mysql 4096 117 2016 mysql 9-rw-rw---- 1 mysql mysql 120 124 11:15 mysql-bin.000123 10-rw-rw---- 1 mysql mysql 120 124 11:15 mysql-bin.000124 11-rw-rw---- 1 mysql mysql 78 124 11:15 mysql-bin.index 12drwx------ 2 mysql mysql 4096 117 2016 performance_schema

# 检查文件发现自动生成了慢查询日志的文件

3.修改mysql配置文件保证永久生效

# 由于慢查询日志记录的信息比较多,会影响mysql的性能,所以生产环境不建议长期开启

1vim /etc/my.cnf 2----------------------------------- 3slow_query_log=1 4slow_query_log_file=/usr/local/mysql/data/slow-query.log 5-----------------------------------

# 其他可用的配置参数

1long_query_time=1           # 慢查询日志的时间定义(秒),默认为10秒,多久就算慢查询的日志 2log_queries_not_using_indexes=1 # 将所有没有使用带索引的查询语句全部写到慢查询日志中

# 修改完配置重启即可生效

==== 完毕,呵呵呵呵 ====

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''

mysql配置调优 - HelloWorld