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

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

网易的Mysql优化作的很好,并且还写了本书和你们分享这些经验《深刻浅出MySQL数据库开发优化与管理维护》。 sql

文章里面大多数写的是咱们日常不多想到的硬件方面的优化,仍是很深刻的。其中提到的《面向程序员的数据库访问性能优化法则》引发了个人关注。一直以为,程序员应该会写好的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来讲,索引增长的额外开销开始变得不容忽视。 spa

索引对于Insert性能下降56% .net

索引对于Update性能下降47% 架构设计

索引对于Delete性能下降29%

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

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

关于Mysql的书籍不少,例如:

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

  • 《Mysql_Explain_语法详细解析》

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

  • 《高性能MySQL》

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

相关文章
相关标签/搜索