数据库使用优化的一点心得
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/330)的形式标明文章原始出处和作者信息及本声明。在生产系统中,数据库经常会成为瓶颈,给管理员带来无穷麻烦,所以dba才那么值钱啊。但对一些中小型的应用来说,也许没有好的dba来从数据库本身机制管理上来进行优化,或者现有系统特性不允许太大的改动,加上数据库不像web服务器那样可以简单的通过集群来扩容,这样就需要从应用程序的角度来进行优化了,尤其是应用程序使用数据库的方式:
- 减少复杂的sql,多用简单的sql。
- 在sql中减少运算的使用,除了count(1)。
- 索引和条件中,多用int类型,少用string类型。
- 尽量不要用触发器,无必要不要用存储过程,慎用事务。
- 注意where条件的顺序。
从系统设计思路上来说:
- 将大型的操作拆分为小型的操作,用比sql更灵活的web语言来实现部分内容。
- 程序对数据库连续取数据进行操作的时候,可以考虑对已经取过的数据适当的进行缓存,减少重复执行sql的过程。
- 常用但不常更新的页面,可以考虑静态化,减轻数据库压力。
- 控制图片的数量和体积,善用css,启动服务器端压缩以节约带宽。
从数据库自身设计来说:
- 配合常用查询,对索引进行优化改进。
- 在数据库设计中适当保留冗余,针对访问速度进行优化。
最后一点教训:最好在设计初期就开始考虑性能的问题,贯穿整个开发进程,否则投入使用以后再进行修改,就要花费数倍的精力了;而设计时最不易发现问题的原因就是数据量小、访问量小,数据可以进行造假,访问量可以用ab等压力测试工具来模拟,但这些都和真实环境有相当大的偏差,不要太相信就是了。
以上只是一点拙见,抛砖引玉,欢迎拍砖。

Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
sk*rt
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend
If you like this then please subscribe to the