• MySQL优化(四) 慢查询的定位及优化


    一、SQL语句优化的一般步骤:

    (1)通过 show status 命令了解各种 SQL 的执行效率;

    (2)定位执行效率较低的 SQL 语句(重点是 Select);

    (3)通过 explain 分析低效率的 SQL 语句的执行情况;

    (4)确实问题并采取相应的优化措施;

    二、优化

    1、show status 命令

     格式: show [session | global] status like ... 

       如果不写[session | global],默认的是session,即取出当前回话的执行情况;

     如果想查询所有的(即MySql启动到现在的信息), 则增加 global 参数;

    show status like "uptime"  //查询MySql启动的时间;
    show status like "com_select" //查询MySql的查询次数
    show status like "com_insert" //查询MySql的插入次数
    show status like "com_update" //查询MySql的更新次数
    show status like "com_delete" //查询MySql的删除次数 
    show global status like "uptime"  //查询MySql启动的时间;
    show global status like "com_select" //查询MySql的查询次数
    show global status like "com_insert" //查询MySql的插入次数
    show global status like "com_update" //查询MySql的更新次数
    show global status like "com_delete" //查询MySql的删除次数 
    show global status like "connections" //查询MySQL的连接数
    show global status like "slow_queries" //获取慢查询的次数

     

    2、如何查看和修改慢查询的时间?

    默认情况下,MySql认为超过 10 秒才是一个慢查询;

    (1)显示当前慢查询设置的时间:show variables like "long_query_time" ;

    (2)修改慢查询的设置时间为1秒:set long_query_time=1

    这时如果出现一条语句执行时间超过 1 秒, 就会统计到 show global status like "slow_queries" 查询的结果中;

    3、如何把慢查询的 sql 记录到日志中?

    默认的情况下,mysql不会记录慢查询的 sql 日志;

    慢查询的启动:https://www.cnblogs.com/luyucheng/p/6265594.html

    慢查询的启动及慢查询日志分析:https://blog.csdn.net/timchen525/article/details/75268151

    扩展知识

    (1)一般情况下,分号作为命令结束符;在写的存储过程或函数中也有分号,如果不将命令结束符修改,则会使存储过程或函数提前结束;所以为了存储过程或函数能够正常执行,我们需要修改命令结束符。

      delimiter $$

    (2)删除自定义函数 rand_string 

      drop function rand_string $$

     

  • 相关阅读:
    ASPJSPNET 清空IE缓存
    asp.net __doPostBack详细解释,用法示例
    httpModules与httpHandlers
    mssql中的标量值函数和表函数的用法
    SQL利用Case When Then多条件判断
    .net发送邮件
    Cookie总结
    asp.net中web.config配置节点大全详解
    Java中打印输出
    Java中new关键字创建对象
  • 原文地址:https://www.cnblogs.com/yufeng218/p/10029862.html
Copyright © 2020-2023  润新知