前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL定位慢查询

MYSQL定位慢查询

原创
作者头像
MonroeCode
修改2018-03-24 16:47:59
7.2K4
修改2018-03-24 16:47:59
举报
文章被收录于专栏:Java技术分享Java技术分享

在web开发中,我们经常会写出一些SQL语句,一条糟糕的SQL语句可能让你的整个程序都非常慢,超过10秒一般用户就会选择关闭网页。

如何优化SQL语句将那些运行时间比较长的SQL语句找出呢?

MySQL给我们提供了一个很好的功能,那就是慢查询!所谓的慢查询就是通过设置来记录超过一定时间的SQL语句!

那么如何应用慢查询呢? 一、开启MySQL的慢查询日志功能

show variables like 'slow_query%'; 查询就是否开启慢查询,如图:

默认情况下,MySQL是不会记录超过一定执行时间的SQL语句的。要开启这个功能,我们需要修改MySQL的配置文件:

windows下修改my.ini,Linux下修改my.cnf文件。

在[mysqld]最后增加如下命令:     set GLOBAL slow_query_log =ON ;    表示开启慢查询日志功能

    set long_query_time = 1;  表示设置慢查询的时间为1S,默认为10S,有查询超过了这个时间,将会被记录到慢查询日志中,高版本的可以设置小数。

    slow_query_log_file=c:/slow.log    表示慢查询日志存放的目录文件,默认在mysql的data目录下生成“主机名_slow.log”的文件来存放日志。 上面配置修改好后,重启动MYSQL服务吧!然后开始测试咯! 1、在MYSQL控制台输入命令:select sleep(2) mysql> select sleep(2); +----------+ | sleep(2) | +----------+ | 0| +----------+ 1 row in set (2.00 sec) 2、再查看慢查询的日志文件,会看到以下信息。 # Time: 141014 14:28:52 # User@Host: root[root] @ localhost[::1] Id: 1 # Query_time: 2.000114 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 SET timestamp=1413268132; select sleep(2);

二、MYSQL数据库查看状态的命令:

show [session|global]status 注:不写默认的为session..session只取出当前会话的状态,global会取出从数据库启动到现在的状态。 show status 查看数据库状态,这里面的状态有很多,DBA应该了解大多数。 show status like ‘uptime’ 数据库启动时间(S) show status like ‘com_select’ 数据库执行了多少次查询 show status like ‘com_update’ 数据库执行了多少次更新 show status like ‘com_delete’ 数据库执行了多少次删除 show status like ‘com_insert’ 数据库执行了多少次插入 show status like 'connections' 试图连接mysql的连接数; 另外可用cmd下的netstat –an查看是那些IP连接到3306上,即连接到MYSQL数据库上。

show status like 'slow_queries'; 慢查询次数。默认情况下,超过10S的为慢查询。控制台下修改MYSQL默认的慢查询时间 show variables like 'long_query_time' 查询默认的慢查询时间 set long_query_time = 1 设置默认的慢查询时间

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档