MySQL优化技术:定位慢查询

来源:互联网 发布:张晓东 大数据 编辑:程序博客网 时间:2024/05/01 01:11

一、什么是慢查询?

        在执行数据库增、删、改、查操作时,耗时较大,超过MySQL数据库指定的操作时间,将会将其定义为一种慢的查询。MySQL默认时间为10秒,即一次超过10秒的数据库操作,将被定义为慢查询;这个时间是可以认为设置的。

二、MySQL常用的状态操作

  • 1、格式

        show [session | global] status

        默认参数是session,表示取出当前窗口的执行;如果你希望知道从数据库启动到现在的所有信息,则需要传递global参数,如:

show global status like 'com_select'

  • 2、show status like 'uptime'

        查看mysql启动的时间

  • 3、show status like 'com_select'

        一共进行了多少次查询

  • 4、show status like 'com_insert'

        一共进行了多少次insert操作

  • 5、show status like 'com_delete'

        一共进行了多少次delete操作

  • 6、show status like 'com_update'

        一共进行了多少次update操作

  • 7、show status like 'connections'

        查看mysql的连接数

  • 8、show status like 'slow_queries'

        查看有哪些慢查询

  • 9、show variables like 'long_query_time'

        查看当前慢查询设置的时间

  • 10、set long_query_time = 1

        设置慢查询时间为1秒,这个整数值是可以任意定义的

三、定位慢查询实战

需求:

        将数据库操作(增、删、改、查)时间超过1秒钟的都记录到MySQL日志中

实现

  • 1、修改MySQL默认的慢查询时间,设置为1秒钟

         set long_query_time = 1

  • 2、构建一个400万数据的大表

        400万数据大表脚本

  • 3、把慢查询的SQL记录到MySQL日志中

        文件的默认目录是MySQL数据库安装目录下的data文件夹下

(1)先停止mysql服务

在cmd中输入:net stop mysql


(3)定位到MySQL目录

在cmd中输入:cd mysql安装路径


(2)通过安全的方式启动MySQL,并记录日志

在cmd中输入:bin\mysqld.exe --safe-mode --slow-query-log


(3)执行耗时的SQL操作

查询员工表中的信息,select * from emp where empno=345679

(4)查看日志文件

查看mysql安装路径下的data文件夹下的日志文件