小贝_mysql sql语句优化过程

sql语句优化

一、SQL优化的一般步骤

(1)、通过show status命令了解各种SQL的执行频率。

(2)、定位执行效率较低的SQL语句-(重点select)

(3)、通过explain分析低效率的SQL语句的执行情况

(4)、确定问题并采取相应的优化措施

(1) 通过showstatus命令了解各种SQL的执行频率

MySQL客户端连接成功后,通过使用show[session|global] status 命令可以提供服务器状态信息。其中的session来表示当前的连接的统计结果,global来表示自数据库上次启动至今的统计结果。默认是session级别的。

下面的例子: show status like ‘Com_%’;

其中Com_XXX表示XXX语句所执行的次数。

重点注意:

Com_select,Com_insert,Com_update,Com_delete通过这几个参数,可以容易地了解到当前数据库的应用是以插入更新为主还是以查询操作为主,以及各类的SQL大致的执行比例是多少。

参数说明:

com_xxx表示每个xxx语句的执行次数.如:

com_select 表示执行select操作的次数,一次查询只累计加1

com_update 表示执行update操作的次数

com_insert 表示执行insert操作的次数,对批量插入只算一次

com_delete 表示执行delete操作的次数

只针对innodb存储引擎的参数

Innodb_rows_deleted执行delete操作所影响的行数

Innodb_rows_inserted执行insert操作所影响的行数

Innodb_rows_read执行select操作所影响的行数

Innodb_rows_updated执行update操作所影响的行数

还有几个常用的参数便于用户了解数据库的基本情况。

connections:试图连接MySQL服务器的次数(成功or失败都会进行累加)

uptime:服务器工作的时间(单位秒)

slow_queries:慢查询的次数 (默认是10)

(2)、定位执行效率较低的SQL语句

通过开启慢查询

(3)、通过explain分析低效率的SQL语句的执行情况

(4)、确定问题并采取相应的优化措施

The quieter you become,the more you are able to hear!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-06 03:38:32

小贝_mysql sql语句优化过程的相关文章

小贝_mysql优化学习

mysql优化 简要: 1.数据库设计优化 2.sql语句优化 3.表分割 4.读写分离技术 一.数据库设计优化 1.表设计要符合三范式,当然,有时也需要适当的逆范式 2.什么是三范式 一范式: 具有原子性,不可再分割 二范式: 在满足一范式的基础上,我们考虑是否满足二范式.只要表的记录满足唯一性,也是说,同一张表,不可能出现完全相同的记录,一般说,在表中设计一个主键即可. 三范式: 在满足二范式的基础上,我们考虑是否满足三范式.只要表满足没冗余性. 二.SQL语句优化 1.sql优化的一般步骤

SQL语句优化技术分析

摘自  http://www.cnblogs.com/wxj1020/archive/2008/04/27/1173638.html 最近几周一直在进行数据库培训,老师精湛的技术和生动的讲解使我受益匪浅.为了让更多的新手受益,我抽空把SQL语句优化部分进行了整理,希望大家一起进步. 一.操作符优化 1.IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格.但是用IN的SQL性能总是比较低的,从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以

ORACLE性能优化之SQL语句优化

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 操作环境:AIX +11g+PLSQL 包含以下内容: 1.  SQL语句执行过程 2.  优化器及执行计划 3.  合理应用Hints 4.  索引及应用实例 5.   其他优化技术及应用 1.SQL语句执行过程 1.1 SQL语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限. 3)视图转换,将涉及视图的查询语句转

Oracle SQL语句优化34条

非常好用的SQL语句优化34条 1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基 础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACL

对SQL语句优化的思考

软件在研发的过程中自始至终都在留意着系统的可扩展性,但与此同时也在关注着系统的性能,SQL语句作为系统性能的一环不容忽视,从今天开始结合开发的经验,谈一下我对SQL语句优化的理解和认知: 1.在联合查询语句中做到小表驱动大表: 联合查询是常用到的一种查询方式,左连接.右连接.内连接等等时不时地被应用在查询语句中,然而在这一过程中如果能判明各表的数据量,那就再好不过了,在这种情况下from后面应该紧跟数据量小的表,为什么?呵呵呵,比如a表有1000条数据,b表有20条数据,使用左连接进行联合查询如

提高系统性能——对SQL语句优化的思考

软件在研发的过程中自始至终都在留意着系统的可扩展性.但与此同一时候也在关注着系统的性能,SQL语句作为系统性能的一环不容忽视.从今天開始结合开发的经验,谈一下我对SQL语句优化的理解和认知: 1.在联合查询语句中做到小表驱动大表: 联合查询是经常使用到的一种查询方式,左连接.右连接.内连接等等时不时地被应用在查询语句中,然而在这一过程中假设能判明各表的数据量,那就再好只是了,在这样的情况下from后面应该紧跟数据量小的表.为什么?呵呵呵,比方a表有1000条数据,b表有20条数据.使用左连接进行

oracle学习笔记 SQL语句执行过程剖析讲课

oracle学习笔记 SQL语句执行过程剖析讲课 这节课通过讲述一条SQL语句进入数据库 和其在数据库中的整个的执行过程 把数据库里面的体系结构串一下. 让大家再进一步了解oracle数据库里面的各个进程.存储结构以及内存结构的关联关系. 首先来讲整个体系中有客户端.实例和数据库 数据库里有三类文件 控制文件ctl.数据文件dbf.日志文件log 实例中SGA有六大池子 第一大内存区shared pool即共享池 第二大内存区buffer cache 第三块是redo log 我们主要讲上面的三

sql语句优化方案

怎么加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引. 建立索引不是建的越多越好,原则是: 第一:一个表的索引不是越多越好,也没有一个具体的数字,根据以往的经验,一个表的索引最多不能超过6个,因为索引越多,对update和insert操作也会有性能的影响,涉及到索引的新建和重建操作. 第二:建立索引的方法论为: 1.多数查询经常使用的列:2.很少进行修改操作的列:3.索引需要建立在数据差异化大的列上 利用以上的基础我们讨论一下

小贝_mysql分区理论学习

mysql分区 简要: 一.为什么需要mysql分区 二.mysql分区的类型 三.mysql分区技术对比 一.为什么需要mysql分区 1.首先,业务数据增大时,必然会影响数据操作.通常针对大数据,有如下优化方法: a.大表拆小表 b.sql语句优化 2.不足: a.sql语句优化可以通过增加索引等来调整,但是随着数据量增大时将会导致索引的维护代价增大 b.大表拆分小表可以在细分为垂直or水平分表.但是需要实现逻辑操作.即选择那张表 3.总结: 针对大数据,添加索引会导致索引文件大以及维护索引