标签:
和大多数关系型数据库一样,mysql也具有以下几种类型的SQL语句:
DML语句:主要用于新增,修改,删除和查询数据库的记录,关键字:insert,update,delete和select
DCL语句:主要用于控制数据库对象(库,表,字段、用户等对象)的访问,关键字:grant,revoke
DDL语句:主要用于定义和修改数据库对象的结构,常用关键字:create,drop,alter
注:DML(DELETE,UPDATE,SELECT)才 是我们关注的重点,而其中DELETE,UPDATE语句都可以转换为SELECT(查询)语句进行检查和优化,本ppt所有优化涉及语句默认都是SELECT语句。
客户端发送一条查询语句给服务器
服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段;
服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划;
MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;
解析器:对sql语句进行语法解析,验证,比如检查是否使用错误的关键字,使用关键字的顺序是否正确等。
预处理器:在上一步完成的基础上,进一步检查数据表或数据列是否存在,字段是否存在,表的别名、字段是否有效。
查询执行引擎:接收到查询优化器最终确定的最优执行计划,并开始按执行计划执行,在执行过程中,会调用存储引擎(innodb,myisam,memory等)的接口来实现各种操作。
注:各种引擎共有的特性是由服务器层来实现的,比如存储过程、 触发器、各种日期时间函数和字符串函数等。
该工具可以简单而有效的查看当前mysql服务器的线程目前的状态,通常作为问题排查的入口之一,以下是执行结果的重点列说明:
explain结果显示MySQL如何使用处理select语句以及连接表。
这条命令有助于我们检查表的索引情况,是所有查询调优的基础。以下是执行结果的重点列说明:
标签:
原文地址:http://www.cnblogs.com/skyline1011/p/5939566.html