mysql 、慢查询、到底如何玩
在项目开发中,那些开发大佬经常会写出一些SQL语句,一条糟糕的SQL语句可能让你测试的整个程序都非常慢,超过10秒的话,我觉得一般用户就会选择关闭网页,如何优化SQL语句将那些运行时间 比较长的SQL语句找出呢?MySQL给我们提供了一个很好的功能,那就是慢查询!所谓的慢查询就是通过设置来记录超过一定时间的SQL语句!那么如何应用慢查询呢?
1、开启MySQL的慢查询日志功能
默认情况下,MySQL是不会记录超过一定执行时间的SQL语句的。要开启这个功能,我们需要修改MySQL的配置文件,Windows下修改my.ini,如果是linux的话,需要Linux下修改my.cnf文件,在[mysqld]最后增加如下命令:
slow_query_log
long_query_time = 1
2、测试慢查询日志功能
进入MySql控制台,执行如下语句:
mysql> select sleep(3);
+----------+
| sleep(3) |
+----------+
| 0 |
+----------+
1 row in set (3.01 sec)
是不是感觉非常慢,如果慢 说明已经开启了慢查询
3、注意点
a、slow_query_log 这句是开启记录慢查询功能,slow_query_log=0关闭;slow_query_log=1开启(这个1可以不写)
b、long_query_time = 1 这句是记录超过1秒的SQL执行语句
4、如何记录低于1s的慢查询记录呢?
进入MySql控制台,执行如下语句:
mysql>set global long_query_time=0.1 设置记录慢查询超过时间100ms的SQL,记住要重启mysql才能生效!
延伸点:
进入到控制台了,接下来,我们查看下MySQL默认配置中多少秒才算慢查询
mysql> show variables like 'long%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
所以系统默认的慢查询时间上限是10秒
接下来 我们改成1秒
mysql> set long_query_time=1; 注: 我设置了1, 也就是执行时间超过1秒的都算慢查询。
Query OK, 0 rows affected (0.00 sec)
判断MySQL开启慢查询日志记录没有?
mysql> show variables like 'slow%';
| Variable_name | Value |
+------------------------------------+-------------------------------+
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_always_write_time | 10.000000 |
| slow_query_log_file | /mysql/carry-slow.log |
| slow_query_log_timestamp_always | OFF |
| slow_query_log_timestamp_precision | second |
| slow_query_log_use_global_control | |
+------------------------------------+-------------------------------+
7 rows in set (0.00 sec)
从slow_query_log 可以知道开关是关闭状态的,
slow_query_log 是否打开日志记录
slow_query_log_file 日志存放位置
MySQL默认没有开启慢查询,下面我们来开启下:
mysql> set global slow_query_log='ON';
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
mysql>
看来是没权限了啊,于是我去找老大申请了权限
然后再次执行
mysql> set global slow_query_log='ON';
Query OK, 0 rows affected (0.00 sec)
ok了,打完收工!
最新文章
- Python之import
- hdu 5446 Unknown Treasure Lucas定理+中国剩余定理
- access的查询中具体到时间的时候使用“#”
- WCF传输Dataset大数据量 -压缩
- Linux性能监控分析命令
- A Tour of Go Concurrency
- [React Native] Error Handling and ActivityIndicatorIOS
- 利用PHPExcel转Excel柱形图
- 阿里云部署Docker(5)----管理和公布您的镜像
- hexo常用命令笔记
- Dubbo常用配置文件分析及核心源码阅读(SPI.Extension)
- leetcode — longest-common-prefix
- solr7.4 tomcat环境下搭建(windows)
- 网络抓包神器-Charles使用指南
- OSS命令行工具ossutil
- 动态规划模板2|LCS最长公共子序列
- TPO-20-Apply for the undergraduate research fund
- P1776 宝物筛选_NOI导刊2010提高(02)&;&; 多重背包二进制优化
- Dubbo学习笔记1:使用Zookeeper搭建服务治理中心
- Vue2 轮播图组件 slide组件
热门文章
- 20155230 实验二《Java面向对象程序设计》实验报告
- 20155233 2006-2007-2 《Java程序设计》第3周学习总结
- 20155319 2016-2017-2 《Java程序设计》第一周学习总结
- #20155331 2016-2017-2 《Java程序设计》第3周学习总结
- PostgreSQL Streaming Replication的FATAL ERROR
- hive 数据导入
- 在docker中执行linux shell命令
- Siki_Unity_3-8_Lua编程(未完)
- Zabbix自动发现之fping
- 网络流小结(HNOI2019之前)