加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

mysql数据库SQL执行计划分析

(2020-01-11 13:55:31)
标签:

it

教育

时评

文化

杂谈

分类: 数据库

1、什么是sql执行计划

执行计划,就是mysql如何执行一条Sql语句,包括sql查询的顺序、是否使用索引、以及使用索引的信息等,一条SQL性能的好坏,可以通过查看执行计划很直观的看出来,执行计划提供了各种查询类型与级别,方便我们进行查看以及为作为性能分析的依据。

2、sql的执行过程

数据库本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层。

应用层:这一层是和客户端打交道的,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求。

逻辑层:主要负责查询处理、事务管理等其他数据库功能处理。

物理层:实际物理磁盘上存储的文件,主要分为数据文件,日志文件。

以查询为例,首先应用层接受到查询sql之后,数据库会立即分配一个线程对其进行处理;第一步查询处理器会对SQL查询进行优化,优化后会生成执行计划;然后交由计划执行器来执行。计划执行器需要访问更底层的存储管理器,存储管理器来操作数据,他们各自的分工各有不同;最终通过调用物理层的文件获取到查询结构信息,将最终结果响应给应用层。


mysql数据库SQL执行计划分析

mysql数据库SQL执行计划分析

mysql数据库SQL执行计划分析

mysql数据库SQL执行计划分析

3、执行计划分析

在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,如下:

explain

SELECT

   gc.*,u.user_name,u.head

FROM

   tb_goods_comment gc,tb_goods gd,tb_user u

WHERE

   gd.sid = 3

AND

   gc.gid = gd.gid

AND

   u.uid = gc.uid

ORDER BY gc.dateline DESC

————————————————

mysql数据库SQL执行计划分析

表头分析:

id:表示一个查询中各个子查询的执行顺序。id相同执行顺序由上至下;id不同,id值越大优先级越高,越先被执行;id为null时表示一个结果集,不需要使用它查询,常出现在包含union等查询语句中。

select_type:表示查询类型,常见值如下

mysql数据库SQL执行计划分析

table:输出结果集的表(表别名)

type:访问类型,常见访问类型如下:

mysql数据库SQL执行计划分析

possible_keys: 表示查询可能使用的索引

key: 实际使用的索引

key_len: 使用索引字段的长度

ref: 使用哪个列或常数与key一起从表中选择行。

rows: 扫描行的数量

filtered: 存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例(百分比)

Extra: 执行情况的说明和描述,包含不适合在其他列中显示但是对执行计划非常重要的额外信息,最主要的有一下三种

mysql数据库SQL执行计划分析

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有