在项目中,我们都经常面临所开发的产品性能问题。然而这些问题都不是很容易解决。大多性能问题追根究底都是系统架构或者说是设计问题。推翻了重做是不可能的,怎么从这些问题中吸取经验教训才是正道。来看看我遇到的设计问题。
案例: 企业级应用系统,技术使用了JSF 数据库Oracle. 主页面范围超慢,大概半分钟。
问题很多,主要有一下几点:
1. 数据库设计严格遵守了范式设计,导致表关联很多。页面数据大多需要从至少10张表联合获取。
2. 重度使用JSF 组件树过大。
3. 代码上冗余逻辑,大量没有必要的处理。
如何解决呢
1. 对于第一个问题, 还是多学习学习数据库设计以及如何写出高效的SQL,推荐一本书 SQL反模式 可以指导如何进行数据库设计。毕竟大多数应用系统需要数据库的支持。写SQL同时想想是不是这个SQL是最优的。 资深的程序员应该对SQL优化有一定的了解。
2. 在设计开发应用系统初期,就要多了解你选技术的不足,尽量避免由技术不足带了的问题。毕竟任何技术都有其优势和不足。 比如问题2,尽量减少组件树,或者使用facelet来build UI .
3. 问题3就纯粹是程序员个人问题和团队流程问题了。 无论是用任何方式 比如测试驱动 结对编程等 流程毕竟是流程,程序员的个人素质与修养是整个产品质量的保证。 这点我还是相信找到合适的程序员让他喜欢或者对自己开发的产品有认同感才是最好的解决方式。如果连自己做的都不感兴趣,就靠流程,也是仅仅保证少许问题而不是高质量的产品。
以上就是我的一点看法。welcome to other idea . Thanks
2012/11/20 Beijing