性能的一些解决方案总结

来源:互联网 发布:java表单重复提交问题 编辑:程序博客网 时间:2024/05/21 18:31

1. Web端

1) 富客户端 - 客户端缓存,expire etag

2)Load on demand

3)  集群

 - DNS分发

 - R_proxy

 -JK

 - session共享或者复制,粘性session或者非粘性session

4)CDN分发和Cookie隔离

5) SSI, ESI and CSI

6)  IP 分发

- NAT 强大的反向代理,集中控制,

- IP-Tuning - 路由

- DR 同一网段

7)减少模板大小 
– 压缩空白字符 - 程序的DWR?
– 合幵相同数据 - 很多循环丢到客户端用javascript去做
– 异步渲染,利用专用服务器的优势 

- Char to Byte


2. 服务器端

1) 禁用session

2) 读写隔离

1) 数据库级读写隔离 - 所有client都写,多个client支持读

2) 应用级读写隔离 - multiple data source in hibernate

- 只读情境下的不用锁 ( HQL, list )

- 编辑时乐观锁和悲观锁使用 (load, get, iterator)

3) 应用cache

1) Hibernate一级cache

2) 二级cache - 同步问题?

4)灵活运用异步处理

- 少用全局事务

- 非核心更新使用JMS机制,注意核心更新和JMS事务

5)合理的事务级别:

 - 串行事务 - 避免

- 可重复读 - 如果写操作中不包含其他的读锁操作

- 读commit - 如果写操作中不包含本身写锁操作

- 读脏数据 - 脏数据处理

6) Java小心处理强应用,尽量使用弱引用(soft, weak),小心处理图,树的内存释放,小心finalize的处理


3. 数据库级

1) 建立索引,尤其是外键关联,前导列一定要是使用最频繁的列。 

2)少用游标,push down logic to store precudure

3)SQL语法

 - in 内存操作,exsit DB操作

 - count(*) 代替 count(1)

 - group by 和order by

 - union all如果你比较确定,比union好

 - is null对于索引无效

0 0
原创粉丝点击