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

  • 相关阅读:
    开启sentry权限控制hue
    hive_server2的权限控制
    自带的simple认证
    tableau备份
    tableau分布式添加节点
    升级tableau版本
    tableau日常管理
    mavn Nexus Repository Manager漏洞
    第3章:打造命令行工具
    基于从库+binlog方式恢复数据
  • 原文地址:https://www.cnblogs.com/cyhbyw/p/8858346.html
Copyright © 2011-2022 走看看