2009年3月4日星期三

性能问题来自什么

最近,看了看公司产品的源代码,从第一天看的时候,我就清醒的认识到这个产品会有很严重的性能问题,主要问题在以下几个方面:

1 documentum的dql语句会被转化为SQL语句在ORACLE中执行,根据我对这个产品的研究,所有的dql都没有对应的绑定变量方式,因此可能造成严重的性能问题和共享池碎片。

2 所有的全文检索都是使用like '*string*'型的查询来完成,这样的话数据库根本没有办法使用索引,完全使用蛮力来完成工作。

3 对很多方法都进行了过度包装,我曾经分析下载功能,发现居然包装了17层,每次看到这里,就想起《Unix编程思想》里的那句话,如果你很清楚你要做什么,那么分3层足够了,如果你不清楚自己要做什么,17层也没什么帮助。

4 历史代码问题,公司产品里积压了好多年的历史代码,不慢才怪。

解决方法:

1 继续寻找使用绑定变量的方法。
2 使用ORACLE全文检索技术来替代dql,或者看看like操作能不能被查询重写成contains操作。
3 重写代码。

没有评论: