MySql数据库优化查询工具

一、MySql数据库监控工具 Profile

  • Profile工具
    用来统计SQL语句的执行时间。
  • 条件
    • Profile工具
    • MySql数据库
  • 步骤
    • 打开Profile

          # 打开Profile
          set profiling = 1;
      
    • 执行sql语句

          # 执行sql语句
      
    • sql语句分析

          # sql分析
          show profiles;
      

      如图:
      在这里插入图片描述

    • sql语句执行的每个过程的时间

           # sql语句执行的每个过程的时间
           show profile for query  5;
      

      如图:
      在这里插入图片描述

    • 分析过程

          # 分析过程
          show profile all for query 5;
      
    • 关闭监控

           set profiling = 0;
      

      如图:
      在这里插入图片描述

    • 缺陷

      • 只能在mysql客户端对sql进行性能分析。
  • 解决方案
    • 使用索引 sql语句的性能的提升全靠索引
    • 使用缓存
      • mysql本地缓存
      • 使用webapi [IMemoryCache]
      • 使用分布式缓存 [redis]

二、Sql查询技术工具 Explain [推荐使用]

  • 目的
    主要用来分析sql语句是怎么优化的。
  • 步骤
    • 开启 Explain

          explain 
            [sql语句];
          # 例如
          explain 
            select * from Table;
      

      如图:
      在这里插入图片描述

      • 表结构说明
        字段名称备注
        idsql执行顺序编号
        select_type查询类型
        table表名
        partitions分区
        type是否使用索引
        possible_keys可能使用的索引名称
        key最终决定要使用的索引名称
        key_len查询索引使用的字节数,通常是越少越好 尽量在INT类型上添加索引
        ref查询的列或常量
        rows需要扫描的行数
        filtered过滤
        extra额外的信息
        • 表字段属性
          • select_type [查询类型]
            • 单表查询:SIMPLE;
            • 联合查询:PRIMARY[联合查询的第一个sql];UNION[联合sql];
            • 子查询:PRIMARY[首先执行的sql语句];SUBQUERY[子查询];
            • 关联查询:PRIMARY[首先执行的sql语句];
            • DEPENDENT SUBQUERY[依赖子查询,必须主表查询出结果,副表依赖,不走索引,性能很慢];
            • DEPENDENT UNION[跟UNION相同,但依赖外层查询结果];DERIVED[临时表;用于FROM 中的子查询]
          • type [是否使用索引]
            • ALL:全表扫描;
            • const:常量[性能最高 1对1 查询,设置成主键或者设置成unqiue索引];
            • ref:某字段使用索引;
            • eq_ref:联合查询的时候使用了索引;
            • range:[索引范围查找];
            • index:[组合索引]
      • 使用查询计划的目的
        • 知道目标数据是从多少行中查出来
        • 查询目标数据是否使用的索引
        • 执行了多少sql语句

三、Sql慢查询日志分析

  • 慢查询的概念
    慢查询指的是记录执行时间比较长的sql语句。
  • 步骤
    • 查询系统是否开启了慢查询

          show variables like '%slow_query_log%';
      

      如图:
      在这里插入图片描述

    • 开启慢查询

          #开启   [0:关闭  1:开启] 
          set global slow_query_log = 1;
      

      如图:
      在这里插入图片描述

    • 可以过修改mysql配置文件设置慢查询的开启、文件的存储路径和监控时间,并重启mysql服务

    • 执行慢SQL语句

  • 缺陷
    • 在生产环境中并发量高了,生成很多的sql日志,排查慢sql会很麻烦。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataBaseTool: 简单的数据库查询、修改工具。 最新版本: 1.0.0.7 20190616 如不能正常执行,请运行 Regist.bat 注册必要的组件。 (在win7下可能由于权限的问题无法复制和注册文件到系统目录,解决方法是: 打开‘开始’菜单->‘所有程序’->‘附件’,右键点击‘命令提示符’,选择‘以管理员身份运行’, 启动命令行程序后,转到本程序目录,然后执行Regist.bat) 本程序可用的数据库可以是Access的.mdb文件,.xls文件,.csv文件,.txt文件等 也可用于打开SQL Server数据库和已建立ODBC数据源的其他数据库 若要打开mdb文件、xls文件、csv文件、txt文件,可以点“Browse”按钮定位文件,也可以直接把文件拖到MdbFile列表框中。 若要打开SQLServer数据库,则需要在MdbFile输入框中输入“sql:ServerName,DataBaseName,UserName,Password”, 其中 ServerName 是数据库服务器的名称或IP地址 DataBaseName 是数据库名称 UserName 是用户名称 Password 是用户密码 若要连接其他数据库,可以直接输入数据源的名称(DSN),格式为:“dsn:数据源的名称;uid=用户名;pwd=密码” Field1 和 Field2 是查询条件,所选表格的字段已列出,点选字段名、比较运算符,然后在后面输入条件 支持最多两个查询条件,如果需要更多查询条件或者构造更复杂的条件,请点击 “ExeSQL” 按钮,在那里可以自己输入任何合法的 SQL 命令,程序将帮您执行它! FieldToReplace 及下面两个输入框是用来把数据表中某一个字段中的特定字符串替换为其他字符串: StrTobeReplace 是需要被替换掉的字符串,StrToReplace 是用来替换的字符串! (不要奇怪为什么会提供如此奇怪的功能!是因为工作需要替换某个表中所有记录的某个字段的指定字符串,才写了这个程序,就是说这个功能是写这个程序的初衷!) 如果点选 Order 复选框,则会按照 Field1, Field2, FieldToReplace 的顺序排序,如果 Field1 或者 Field2 已经是 查询条件的一部分,则不参与排序。 如果点选 AutoUpdate 复选框,则在下面表格中修改的数据会自动更新到数据库中,如果仅修改一个单元格的数据,则修改完后需要按回车键确定才会存入数据库! 如果没有点选 AutoUpdate 复选框,并在表格中修改了数据,按“UpDate”按钮也可以把修改的数据更新到数据库中(这个不太常用!) 右侧的字段列表是查询时需要显示的列,如果一个也不选或者全选,则都将查询所有字段(即select *) 【常用的】 EXESQL 按钮: 可以直接输入一个简单的SQL命令并执行。 ‘Show queried data’ 选项: 指示所输入的 sql 命令是否会返回数据集,如果勾选,程序会尝试读取返回的数据集,如果不勾选,程序就只是执行命令并尝试返回受影响的行数。 程序会自动判断这个命令是否会返回数据集,如果判断为会返回数据集,比如输入的是一个 类似 select * from 的命令,则自动勾选‘Show queried data’。如果您确定命令会返回数据集但这个选项没有自动勾选,您可以手动勾选, 这样程序就会尝试读取并显示得到的结果。 ‘LongSQL’按钮: 如果您想要输入一个很长很复杂的命令,可以再按‘LongSQL’按钮,会弹出一个可以输入多行文字的新输入窗口,然后就可以在其中输入多行命令。 换行: 在这个输入控件中,直接按回车就是换行,如果按 Ctrl+回车 则相当于按‘OK’按钮,会立即执行输入的命令。 多个命令: 如果想要一次执行多个命令,比如几百几千行的 insert 命令,可以一次把所有这些命令都复制到 LongSQL 的输入框中, 每一命令之间用英文分号';'分隔,然后按 Ctrl+回车 或点击‘OK’按钮执行。 ‘Ignore errors’选项: 如果输入的多行命令可能有些会出错,比如 insert 了重复的数据,并且希望除出错的命令外其他的命令可以正常执行,可以选中这个选项, 这样的话,程序会跳过出错的命令并继续执行后面的命令。 数据导出: ‘Export’按钮: 如果想要导出查询或命令的结果,可以在结果显示出来后,按‘Export’按钮,程序会自动启动Excel并把数据导出到Excel中;如果电脑上没有 安装Excel,则这个按钮不起作用。 复制数据: 用户可以选择把数据复制到剪贴板上,复制有2种方式: 1) 复制所选行 按住 Ctrl 键并用鼠标点击每行的行首,可以选择多行(所选择的行并不要求相邻),选择完毕后,在所选行上点击鼠标右键选择 ‘Copy’菜单进行复制。 2) 复制所选列 点击需要复制的第一列的列标题,然后按住‘Shift’键再点击需要复制的最后一列的列标题(按列复制时要求这些列必须相邻), 选择完毕后,在所选行上点击鼠标右键选择‘Copy’菜单进行复制。 ‘Copy’菜单有2个,一个是 ‘Copy(Using Tab)’,另一个是‘Copy(Using ',')’, 如果选择‘Copy(Using Tab)’则复制的数据中,各字段值之间会用 Tab 分隔, 如果选择‘Copy(Using ',')’则复制的数据中,各字段值之间会用英文的逗号分隔。 ================================================================================== 特别的命令: 如果想查看每个表格中各有多少数据,可以执行: SELECT $TABLEINFO$ 如果想查看某个表格的字段定义,可以执行: SELECT $FIELDINFO$ where table=TableName,其中‘TableName’是您想查看的表格的名称 ================================================================================== 这个程序可以作为临时或不想打开庞大的数据库软件时查看或修改数据的小工具,也可以作为验证sql是否正确的工具! 或者通过在界面上点选查询条件,按 “Find” 按钮,然后再按 “ExeSQL” 按钮,然后把自动生成的sql命令复制出来用到其他地方,即把这个程序作为简便的生成sql命令的工具. win7 或 win10系统下,需要以管理员身份运行 Regist.bat 以注册所需的组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值