mysql优化之sql执行流程及表结构(schema)对性能的影响

Posted hungryforknowedge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql优化之sql执行流程及表结构(schema)对性能的影响相关的知识,希望对你有一定的参考价值。

part 1 sql执行流程(如下图所示)

1、客户端发送一条查询到服务器。

2、服务器通过权限检查后,先检查查询缓存,命中则直接返回结果。否则进入3。

3、服务器进行sql解析,预处理,再由优化器根据该sql涉及到的数据表的信息计算,生成执行计划。

4.、mysql根据优化器生成的执行计划,调用存储引擎的API来执行查询;
5.、将结果返回给客户端。

总结:SQL执行的最大瓶颈在于磁盘的IO,即数据的读取;不同SQL的写法,会造成不同的执行计划的执行,而不同的执行计划在IO的上面临完全不一样的数量级,从而造成性能的差距;优化SQL,其实就是让查询优化器根据你所希望的执行过程来选择匹配的执行计划,减少查询中产生的IO

 技术分享图片

part 2 表结构(schema)对性能的影响

1、数据库三范式,适当设置冗余数据

1NF:是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,不满足第一范式的数据库不是关系型数据库。

2NF:数据库表中的每个实例或行必须可以被惟一地区分。

3NF:数据库表中只包含其它表中的主关键字信息。 (不允许有冗余数据)

2、大表拆小表,有大数据的列单独拆成小表

3、把常用属性分离成小表 ,这样可以减少查询常用属性需要查询的列,便于常用属性的集中缓存



以上是关于mysql优化之sql执行流程及表结构(schema)对性能的影响的主要内容,如果未能解决你的问题,请参考以下文章

读薄《高性能MySql》Schem与数据优化

MySQL之SQL优化详解

数据库基础之SQL查询语句执行流程

MySQL之--一条更新的SQL如何执行

Mysql导出表结构及表数据 mysqldump用法

mysql之性能优化