自己的mysql进行优化经历

原创 2012年03月23日 16:46:16

这两天项目里出现了部分的性能问题,尤其是有个自己负责的模块性能问题很严重,只好做一下sql优化。

但是sql优化自己从来没有做过,眼看着一条sql语句占满了屏幕的十多行,都不知道从哪里开始下手,没办法,只好请教组里的数据库牛人来帮忙优化一下了。

下面就讲讲这个优化的过程吧。

首先我们到web服务器上取下来mysql的慢日志,这种形式的日志记录的内容比较全面,里面设置可以找到我们曾经运行过的sql语句。

把需要优化的sql语句拿下来,先用mysql的explain工具查看一下,这个主要就是看sql扫描行的数目,以及是否使用了索引。按照mysql的建议,使用索引可以极大的提升查询效率,这点不容置疑。

结果拿下来我那个模块的sql一运行,发现基本上是对整个数据库表的全表扫描,该用到的索引竟然完全都没有用到,真的不知道为什么,这个肯定会慢得很啊!

后来再看一下数据库表本身有多大,发现总计路数也就才15000多条,按理说这么大的数据量并不会影响性能,但是事实上却因为一些sql语句的写法导致了性能的急剧下降。

首先,对于能够在子查询里面过滤掉的数据,我们最好还是别拿到外面来查询了,子查询的结果集越小,那么我们需要联合查询的集合就越小;

然后就是我们sql语句遇到的最大的性能问题,在使用inner join的同时使用了select子查询,这样据说会导致数据库做笛卡尔积查询,这样的查询方式即使数据量不是很大,那么最后需要扫描的数据行数也是相当的可观的啊!

所以按照大牛的说法,把join保留,把select子查询丢掉,性能会有不小的提升;

于是乎花了两个小时把自己的sql语句全部都改成了这样,调试一下,最后发现程序效率提升的真的不是一点点!

至此,优化算是告一段落了,其它的小部分的优化后续再做吧!


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

Mysql优化的一般步骤

一、数据库设计要合理 表的设计要符合3NF,有时需要适当的逆范式 1NF为属性的原子性约束,只要是关系型数据库均满足1NF。2NF对记录的唯一性约束,要求记录有唯一的标识(主键)。3NF在满足2...
  • lisongjia123
  • lisongjia123
  • 2016年04月17日 19:02
  • 724

提高mysql千万级大数据SQL查询优化30条经验

转自: http://www.jincon.com/archives/120/ 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 ...
  • py_xin
  • py_xin
  • 2016年06月06日 09:01
  • 2691

mysql中的SQL优化与执行计划

一,如何判断SQL的执行效率?      通过explain 关键字分析效率低的SQL执行计划。      比如: explain select sum(moneys) from sales a, c...
  • lijiaz5033
  • lijiaz5033
  • 2015年12月01日 15:32
  • 1161

【MySql性能优化二】利用explain进行查询和分析sql语句

在mysql数据库中为我们提供了explain方法可以通过它来帮助我们分析我们的sql语句。 登录mysql后,具体使用如下这里的了例子都以上篇博客中安装的实例数据库sakila为例: explain...
  • wangyy130
  • wangyy130
  • 2016年05月16日 11:38
  • 2060

一次mysql优化经历

某日运维突然说无线的频道页接口访问量很大,memcache缓存扛不过来,导致mysql并发查询量太大,导致服务器不停地宕机,不停地重启机器。遗憾的是运维并没有告诉mysql查询量具体有多大【无量化,比...
  • changdazhong
  • changdazhong
  • 2014年08月21日 12:25
  • 669

MySQL大数据使用limlit , 查询效率变低

1.   直接用limit start, count分页语句: select * from product limit start, count 当起始页较小时,查询没有性能问题,我们分别看下...
  • Weilikai_yezi
  • Weilikai_yezi
  • 2017年06月07日 15:46
  • 232

mysql优化小结(插入和查询)

说到mysql,我们立刻想起它体积小、速度快、还开源的特点,所以它应用颇广。今天我们来总结一下mysql中最频繁的两个操作:插入和查询,的优化方法。          插入:  一、文本导入 ...
  • jinzheng069
  • jinzheng069
  • 2014年03月07日 17:07
  • 2061

MySQL数据库优化之查询缓存(Query cache)

MySQL缓存机制: 当MySQL开启了缓存模式(query_cache_type=1)后,mysql会把查询语句和查询结果保存在一张hash表中,下一次用同样的sql语句查询时,mysql会先从这张...
  • kexiaoling
  • kexiaoling
  • 2015年11月27日 15:02
  • 874

一次优化web项目的经历记录(一)

一次web项目的优化记录这段时间以来的总结与反思 前言:最近很长一段时间没有更细博客了,忙于一堆子的项目开发,严重拖慢了学习与思考的进程。开水倒满了需要提早放下杯子,晚了就会烫手,这段时间以来,写...
  • zhengxiaoyao0716
  • zhengxiaoyao0716
  • 2016年07月31日 21:54
  • 1037

一次 MySQL 索引优化的经历

项目背景:一个类似云盘的工具,主服务器上的 MySQL(InnoDB 引擎) 存储文件 MD5 值,客户端需要在主服务器上查询文件的 MD5 来获取文件所在服务器的 IP 和文件路径。 问题:在...
  • wwh578867817
  • wwh578867817
  • 2016年03月02日 14:41
  • 1590
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自己的mysql进行优化经历
举报原因:
原因补充:

(最多只允许输入30个字)