zoukankan      html  css  js  c++  java
  • Mysql优化--Show Profile

    Mysql 系列文章主页 

    ===============

    是Mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于Sql的调优的测量。默认情况下处于关闭状态,并保存最近 15 次的运行结果。

    查看功能是否开启:

    SHOW VARIABLES LIKE '%profiling%'

    如果关闭,则需要开启:

    SET profiling = on;

    1 准备数据

    1.1 建表、函数、存储过程

    执行 这篇(调用函数和存储过程批量插入数据) 文章的第 1-7 步,注意,不要执行第8步

    1.2 插入数据

    现在执行第8步

    CALL insert_employee(100000000, 500000);

    机器慢,跑的时候有点长;正好,用它来看看慢查询日志,也还是不错的,结果如下:

    2 运行Sql

    2.1 确保已开启 ShowProfile

    SHOW VARIABLES LIKE '%profiling%'

    2.2 执行Sql

    SELECT * FROM employee e GROUP BY e.id%10;

    Sql执行结果:

    用 ShowProfile 查看一下:

    SHOW PROFILES;

    结果:

    多执行几次Sql后再看效果:

    3 ShowProfile分析

    3.1 ShowProfile

    用 ShowProfile 查看一下  SELECT * FROM employee e GROUP BY e.id%10  这条Sql的执行情况:

    SHOW PROFILE cpu, block io FOR QUERY 3;

    结果如下:

    可以看到,创建临时表、拷贝数据、删除临时表均出现在了Sql生命周期内,且 Sending Data 就花费了 0.276851秒,这也是整个过程中耗时最长的部分。

    3.2 日常开发中需要注意的地方

    以下这些情况都很危险,如果出现,就一定需要注意了。

    • converting HEAP to MyISAM 查询结果太大,内存都不够用了,往磁盘上搬了

    • creating tmp talbe 创建临时表(拷贝数据到临时表,用完后删除)

    • copying to tmp table on disk 把内存中临时表复制到磁盘,危险

    • locked

  • 相关阅读:
    Java 基础
    Java 数据类型
    Spring 拦截器实现事物
    SSH 配置日记
    Hibernate 知识提高
    Jsp、Servlet
    leetcode 97. Interleaving String
    leetcode 750. Number Of Corner Rectangles
    leetcode 748. Shortest Completing Word
    leetcode 746. Min Cost Climbing Stairs
  • 原文地址:https://www.cnblogs.com/cyhbyw/p/8858346.html
Copyright © 2011-2022 走看看