mysql配置调优

Wesley13
• 阅读 671

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

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

# 默认为关闭状态

mysql
----------------------------
show variables like "%slow_query_log%";
----------------------------

# 实例演示:

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

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

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

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

2.手动开启慢查询日志

# 登陆mysql进行设置

mysql
----------------------------
set global slow_query_log=on;
----------------------------

# 实例演示:

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

mysql> show variables like "%slow_query_log%";
+---------------------+-------------------------------------------+
| Variable_name       | Value                                     |
+---------------------+-------------------------------------------+
| slow_query_log      | ON                                        |
| slow_query_log_file | /usr/local/mysql/data/1055-mysql-slow.log |
+---------------------+-------------------------------------------+
2 rows in set (0.00 sec)

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

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

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

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

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

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

# 其他可用的配置参数

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
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
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
PostgreSQL死锁进程及慢查询处理
1、死锁进程查看:SELECTFROMpg_stat_activityWHEREdatname'数据库名称'andwaitingtrue;pid进程id。2、慢查询SQL:selectdatname,pid,usename,application_name,client_addr,client
Stella981 Stella981
2年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这