`
kakaluyi
  • 浏览: 438872 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

性能方面应该注意的地方(持续更新)

 
阅读更多

1 重型的对象,比如数据库的connection,和一些JMSFactory,尽量做到重用,不要用的时候在new,可以先用起来,复用的时候直接从缓存中拿

2 不要用Exception控制流程,因为new 一个Exception的开销是非常大的

3 生命周期长的对象,如果用不着可以在用完后设置为null,便于垃圾回收

4 数据库能批量则批量处理,循环crud是很费IO的

5 加锁尽量细粒度,感觉concurrent的锁对象性能不错,有空纤细研究下concurrent类

6 数据库对于经常查询的数据的条件,index是必要的,但是过多的index会减慢update和insert的速度。

7 io中尽量用buffer,减少IO交互次数.

8 使用缓存,内存数据库,或者集群来提高系统的吞吐量和性能。

9 一般系统产生大量数据后,瓶颈经常是数据库io产生的,前面的index只是一种小的手术。要在结构上提高数据库读写性能,还是拆分数据库,读写分离,数据库大数据表分拆成多个分布式小数据表,等等具体的思路还是拆分,分布式。

10 旧的IO API,因为是阻塞式的,如果处理socket,请启用多线程去handle,否则如果一个请求没有结束,其他的请求会被阻塞住,这样已经很接近非阻塞IO的处理速度了。

今天懒了,不想了。。。

分享到:
评论
2 楼 kakaluyi 2012-04-18  
一般主键都会有索引,加上另外的索引update的时候性能损耗就比较小。以前有碰到项目一个表多个(大于10)非必须字段都加上索引,拿掉非5,6个不必要的索引后update性能至少上升50%。但是如果你查询的时候某个where条件没有索引的话,那查询减慢的速度500%都有可能,所以如何权衡就看你自己了
1 楼 yxb1990 2012-04-18  
想问一下,如果一张表只有一个索引,那么在update的时候也会降低速度吗?

相关推荐

Global site tag (gtag.js) - Google Analytics