MYSQL性能分析,Explain,Show Profile
创始人
2024-05-29 06:09:11
0

文章目录

  • 一、MYSQL常见瓶颈
  • 二、Explain
    • Explain是什么
  • 三、Show Profile
  • 四、慢查询日志和全局查询日志


一、MYSQL常见瓶颈

  1. CPU: CPU饱和
  2. IO:磁盘IO速度过慢。
  3. 服务器的硬件性能瓶颈。

二、Explain

Explain是什么

使用explain关键字可以模拟优化器执行sql查询语句,从而知道mysql如何处理你的sql语句.使用方法是explain + sql语句
得到的结果的表头如下:
请添加图片描述

该表的各个属性的含义如下:

  • id : id指的是select查询的序列号,包含一组数字,表示在查询中执行select 子句或操作表的顺序。 id相同,执行顺序由上至下;id不同,id越大优先级越高 (如果是子查询subquery,id的序号会递增);越先被执行;id相同不同,同时存在
    请添加图片描述
    如上图中mysql的执行顺序为t3 -> t1 -> t2.

请添加图片描述

如上图中mysql的执行顺序是t3 -> derived2 -> t2. 注意两个id是1的可以视为一组: t2 和

  • select_type : 主要常见值如下:请添加图片描述

    1. simple: 简单的select查询,查询中不包子查询或者union。
    2. primary: 嵌套查询的最外面一部分
    3. subquery: 子查询
    4. derived: 在from列表中还包含的子查询会被标记为derived,mysql会递归执行这些子查询。
    5. union : 若第二个select出现在union之后,则会被标记为union,若union包含在from子句的子查询中,外层select会被标记为derived。
    6. union result:
  • table: 当前是在哪个表

  • type: 访问类型排列.包括八种值: all, index, range, ref, eq_ref,(const,system),NULL
    显示查询使用了何种类型,从最好到最差依次是: system(单表单行) > const > eq_ref(唯一性索引扫描,即对于每一个索引键,表中只有一条记录和之匹配) > ref(非唯一性索引扫描,返回匹配某个单独值的所有行) > range > index(索引) > ALL(全表扫描). 一般来说,得保证查询达到range级别,最好能达到ref级别。

  • possible_keys : 显示可能应用在这个表上的索引,一个或多个,查询涉及到的字段若存在索引则会被列出,但是不一定会被查询实际使用。

  • key: 实际使用的索引,如果为NULL,则没有使用索引; 查询中若使用了覆盖索引,则该索引仅出现在key列表中。

  • key_len: 索引中使用的字节数,长度越短越好。key_len显示的值为索引字段的最大可能长度而并非实际使用长度。

  • ref: 显示索引的哪一列被使用了,如const常量,sharedz_t2_col1(t1.id = t2.id)等

  • rows: 估算找到所需的记录所要读的行数。

  • Extra: 额外信息。 要避免在extra出现using file sort, using temporary。

三、Show Profile

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

show profiles; //输出最近15次的sql语句和运行时间
show profile cpu,block io for query 3;//分析三号查询的完整查询周期

五种低性能的profile属性:

  1. Converting HEAP to MYISAM. //查询结果太大,内存都不够用了要往磁盘装
  2. Creating tmp table. //创建临时表,用完再删除。
  3. Copying to tmp table on disk. //把内存中的临时表复制到磁盘
  4. Copying to tmp table. //拷贝数据到临时表
  5. locked.

四、慢查询日志和全局查询日志

sql中内置了慢查询日志(记录查询时间超过了阈值的sql语句,禁止在生产环境使用因为会大大降低sql性能)和 全局查询日志 (禁止在生产环境使用同样也会大大降低sql性能 ).

在mysql的my.cnf中设置: general_log = 1, general_log_file = /path/logfile, log_output = FILE.

通过select * from mysql.general_log; 来查询general_log中的内容。


相关内容

热门资讯

安卓系统的总体框架,架构与核心... 你有没有想过,你的手机里那个神奇的安卓系统,它到底是怎么运作的呢?今天,就让我带你一探究竟,揭开安卓...
谁的安卓系统好,谁家的安卓系统... 说到安卓系统,这可是个热门话题呢!你有没有想过,这么多安卓手机品牌,哪个的操作系统最让你心动?今天,...
安卓系统信付通,安全无忧的移动... 你知道吗?在安卓手机的世界里,有一个超级好用的支付工具,它就是信付通。今天,就让我带你来全方位了解一...
小米官方系统安卓包,深度解析与... 亲爱的数码爱好者们,你是否曾为手机系统而烦恼?市面上那么多手机品牌,各种操作系统让人眼花缭乱。今天,...
自制安卓手机双系统,自制安卓手... 你有没有想过,自己的手机可以同时运行两个操作系统呢?没错,就是那种安卓手机双系统!听起来是不是很酷?...
小米安卓系统怎么设置,科技前沿... 小米手机的用户们,是不是觉得安卓系统有点复杂,设置起来有点头疼呢?别担心,今天就来手把手教你如何轻松...
点歌系统支持安卓系统么,安卓用... 你有没有想过,在手机上点歌听歌,是不是也能像在KTV里那样随心所欲呢?现在,就让我来告诉你一个超级酷...
原版安卓系统刷机,解锁无限可能 你有没有想过,你的安卓手机其实可以焕然一新?没错,就是那种原汁原味的安卓系统,让你的手机重新找回当初...
欧尚改装安卓系统,打造智能驾驶... 你有没有想过,你的欧尚汽车其实也可以变身成为智能座驾呢?没错,就是那个你每天上下班的伙伴——欧尚,现...
安卓系统最新事件,揭秘最新重大... 你知道吗?最近安卓系统可是发生了一件超级大事件,简直让人兴奋得心跳加速!这不,我就迫不及待地来和你分...
早期电话手表安卓系统,安卓系统... 你有没有想过,小时候那些看似简单的玩具,现在竟然也能玩出花来?比如,早期的电话手表,那时候的功能可真...
安卓老系统手机游戏,安卓老系统... 你有没有发现,那些安卓老系统手机,虽然看起来有点古老,但它们在游戏界可是有着自己独特的魅力呢!想象那...
安卓系统重启还是开关,重启与开... 手机突然卡壳了,是不是又该给安卓系统来个重启大法了?别急,今天就来聊聊这个让人又爱又恨的“安卓系统重...
安卓系统刷入iso,轻松实现个... 你有没有想过,你的安卓手机其实可以像变形金刚一样,换上全新的“皮肤”?没错,就是刷入ISO系统!这可...
安卓机系统无法关机,探究原因与... 最近我的安卓手机怎么啦?总是关机不成功,真是让人头疼啊!这可怎么办呢?别急,让我来帮你分析找出解决这...
安卓什么系统广告最多,揭秘最新... 你有没有发现,每次打开安卓手机,广告就像无处不在的小精灵,跳来跳去,让人眼花缭乱?今天,就让我带你一...
禁止中国使用安卓系统,“安卓系... 你知道吗?最近互联网上掀起了一股热议,那就是关于中国是否应该禁止使用安卓系统的话题。这可不是闹着玩的...
如何分辨ios系统和安卓系统,... 你有没有想过,你的手机里装的是iOS系统还是安卓系统呢?这两种系统各有千秋,但分辨它们其实并不难。今...
如何查询安卓系统版本,安卓系统... 你有没有想过,你的安卓手机里隐藏着一个小秘密——那就是它的系统版本!知道这个秘密,不仅能让你更好地了...
lg电视系统和安卓系统比较,性... 你有没有发现,现在家里的电视已经不再是那个傻乎乎的“大盒子”了?它变得聪明起来,能和你互动,能上网,...