数据库使用优化的一点心得

在生产系统中,数据库经常会成为瓶颈,给管理员带来无穷麻烦,所以dba才那么值钱啊。但对一些中小型的应用来说,也许没有好的dba来从数据库本身机制管理上来进行优化,或者现有系统特性不允许太大的改动,加上数据库不像web服务器那样可以简单的通过集群来扩容,这样就需要从应用程序的角度来进行优化了,尤其是应用程序使用数据库的方式:

  • 减少复杂的sql,多用简单的sql。
  • 在sql中减少运算的使用,除了count(1)。
  • 索引和条件中,多用int类型,少用string类型。
  • 尽量不要用触发器,无必要不要用存储过程,慎用事务。
  • 注意where条件的顺序。

从系统设计思路上来说:

  • 将大型的操作拆分为小型的操作,用比sql更灵活的web语言来实现部分内容。
  • 程序对数据库连续取数据进行操作的时候,可以考虑对已经取过的数据适当的进行缓存,减少重复执行sql的过程。
  • 常用但不常更新的页面,可以考虑静态化,减轻数据库压力。
  • 控制图片的数量和体积,善用css,启动服务器端压缩以节约带宽。

从数据库自身设计来说:

  • 配合常用查询,对索引进行优化改进。
  • 在数据库设计中适当保留冗余,针对访问速度进行优化。

最后一点教训:最好在设计初期就开始考虑性能的问题,贯穿整个开发进程,否则投入使用以后再进行修改,就要花费数倍的精力了;而设计时最不易发现问题的原因就是数据量小、访问量小,数据可以进行造假,访问量可以用ab等[压力测试工具](http://httpd.apache.org/test/)来模拟,但这些都和真实环境有相当大的偏差,不要太相信就是了。

以上只是一点拙见,抛砖引玉,欢迎拍砖。

参考

  • [存储过程编写经验和优化措施](http://www.lotsir.com/Blog/article.asp?id=140)

Leave a Reply

Your email address will not be published. Required fields are marked *