读《面向程序员的数据库访问性能优化法则》

刚刚看了一下2014年中国数据库技术大会(DTCC)PPT,网易杭州研究院的一位同学介绍了一下数据库的优化与调优。

网易的Mysql优化做的很好,而且还写了本书和大家分享这些经验《深入浅出MySQL数据库开发优化与管理维护》。

文章里面大多数写的是我们平常很少想到的硬件方面的优化,还是很深入的。其中提到的《面向程序员的数据库访问性能优化法则》引起了我的关注。一直觉得,程序员应该会写好的SQL,就像应该写好的代码一样。我们读过《Effective C++》等语言类的经典书籍,也可以读一下数据库的优化的文章和书籍,例如:《Effective MySQL 之 SQL语句最优化》。

《面向程序员的数据库访问性能优化法则》从SQL语句,应用到业务上,都给了我们一些建议。其中最核心的应该就是,尽可能减少数据量,减轻延时。例如

  • 写出具体字段 select a , b ,c from xx,还不是用  select * from xx ;

  • 减少连接次数,使用批量提交,或者使用 select xxx where id in ( 1, 2 , 3 )来查询少量的集合数据,而不用 for i in n{ select xxx from t where id = i ;  }

  • 优化业务逻辑,使数据量减到最小;就像我们写for循环的时候,将时间复杂度尽量降低。


文章中讲述的索引让我不得不反思了之前建立索引的方式。以前盲目地以为需要查询的条件都加上索引,系统便会加快。但对于大量数据的CRUD来说,索引增加的额外开销开始变得不容忽视。

索引对于Insert性能降低56%

索引对于Update性能降低47%

索引对于Delete性能降低29%

文中对一些经常使用的字段建立索引给了一些指导性建议,感觉挺实用的。

另外,关于SQL的执行计划和statement绑定变量的描述也让我受益,不知原理,很难做到最优。

关于Mysql的书籍很多,例如:

  • 《Effective+MySQL之SQL语句最优化》

  • 《Mysql_Explain_语法详细解析》

  • 《MySQL性能调优与架构设计》

  • 《高性能MySQL》

读万卷书,行万里路,深入原理后,MySQL才能更好的为我们服务。当然,不管NoSQL如何侵入数据库体系,只要在各自的场景用好,就实现了它们的价值。


你可能感兴趣的:(mysql,mysql优化)