泗水县建设局的网站怎么打开,北京论坛建站模板,烟台网站开发公司,济宁房产网站建设2 慢查询
2.1 慢查询介绍
MySQL的慢查询日志是MySQL提供的一种日志记录#xff0c;它用来记录在MySQL中响应时间超过阀值的语句#xff0c;具体指运行时间超过long_query_time值的SQL#xff0c;则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL…2 慢查询
2.1 慢查询介绍
MySQL的慢查询日志是MySQL提供的一种日志记录它用来记录在MySQL中响应时间超过阀值的语句具体指运行时间超过long_query_time值的SQL则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL则会被记录到慢查询日志中。long_query_time的默认值为10意思是运行10秒以上的语句。由他来查看哪些SQL超出了我们的最大忍耐时间值比如一条sql执行超过5秒钟我们就算慢SQL希望能收集超过5秒的sql结合之前explain进行全面分析
2.2 慢查询步骤
问题如何从一个大项目中迅速的定位执行速度慢的语句.(定位慢查询)
1首先我们了解mysql数据库的一些运行状态如何查询(比如想知道当前mysql运行的时间一共执行了多少次selecthupdate/delete,当前连接)
当前时间show status like uptime;共执行多少次selectshow stauts like com_select;共执行多少次updateshow stauts like com_update;共执行多少次deleteshow stauts like com_delete;
show [session/global] status like ... 如果你不写 [session/global] 默认是session会话指取出当前窗口的执行如果你想看所有(从mysql启动到现在则应该global)
当前MySQL连接数show status like connections;显示慢查询次数show status like slow_queries;
2开启慢查询日志
操作说明
默认情况下MySQL数据库没有开启慢查询日志需要我们手动来设置这个参数。
当然如果不是调优需要的话一般不建议启动该参数因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件。
查看是否开启及如何开启
默认 SHOW VARIABLES LIKE %slow_query_log%; [ˈveəriəbls]开启set global slow_query_log1;只对当前数据库生效如果MySQL重启后则会失效
如果要永久生效就必须修改配置文件my.cnf(其它系统变量也是如此)
修改my.cnf文件[mysqld] 下增加或修改参数slow_query_log和slow_query_log_file后然后重启MySQL服务器。也即将如下两行配置进my.cnf文件
slow_query_log 1
slow_query_log_file/var/lib/mysqatguigu-slow.log关于慢查询的参数slow_query_log_file它指定慢查询日志文件的存放路径系统默认会给一个缺省的文件host_name-slow.log如果没有指定参数slow_query_log_file的话
3开启了慢查询日志后什么样的SQL才会记录到慢查询日志里面呢
这个是由参数long_query_time控制默认情况下long_query_time的值为10秒命令SHOW VARIABLES LIKE long_query_time%; 可以使用命令修改也可以在my.cnf参数里面修改。
假如运行时间正好等于long_query_time的情况并不会被记录下来。也就是说在mysql源码里是判断大于long_query_time而非大于等于。
命名修改慢SQL阈值时间set global long_query_time3; [ˈɡləʊbl] 看不到修改情况的话重开连接或者换一个语句show global variables like long_query_time; 4记录慢SQL并后续分析
假设我们成功设置慢SQL阈值时间为3秒set global long_query_time3;。
模拟超时SQLselect sleep(4);
查询当前系统中有多少条慢查询记录show global status like %Slow_queries%; [ˈsteɪtəs] 在配置文件中设置慢SQL阈值时间永久生效
#[mysqld]下配置:
slow_query_log1;
slow_query_log_file/var/lib/mysql/atguigu-slow.log
long_query_time3;
log_outputFILE;