在一次性能优化中,作为方案的主要参与者,我做了如下分析:
API(提供给其他模块调用)中操作都是单次,
而这个API的DB操作如下:
A.查询是否重复
B.调用其他模块API检查数据合法性:
C.取
D.插入主表
E.插入日志记录
基本上是五个DB操作,发现当这个API循环200次的时候耗时太多
采用单元测试的方式测试:
测试笔数:200笔
测试硬件:本地
方式:直接调用直连API函数,200笔循环增加,耗时121秒;
然后按照上面的步骤
拆分5步骤做测试:
步骤A:耗时:33718毫秒,约33秒
步骤B:耗时:15327毫秒,约15秒
步骤C:耗时:15687毫秒,约15秒
步骤D:耗时:73810毫秒,约73秒
步骤E:耗时:7656毫秒,约7秒
合计约151秒左右。
采用预编译 + 批量提交的JDBC编程方式,可以大量提高提交的性能问题。这个方案就是预先设想的方式。测试的结果也证明了采用这种方式至少可以减少60%的时间。
但是,问题来。这个API是在所有流程中的一环,前面还有2步,后面还有一步,而最后的一步会最终决定所有环节中的事物,也就是是说中间任何一个环节出问题,所有的事物回滚。
如果在这个API环节修改成批量,那么在所有的环节中都要修改成批量,这就有可能造成事物过长,引起不可预知的后果;而且对于批量提交,如果有一条数据操作有问题,是否所有的都回滚?这个处理起来也会比较麻烦。所以这个方案最终遭到了其他模块的同事的反对,这样一个优化方案就死掉了。
此系统的环境如下:UNIX + JDK1.5 + DB2
分享到:
相关推荐
1. **平台独立性**:Java的核心优势之一就是其“一次编写,到处运行”的能力。这得益于Java编译后的字节码可以在任何支持JVM的操作系统上运行。 2. **自动内存管理**:Java提供了一种自动化的内存管理机制,称为垃圾...
- Java是一种跨平台的面向对象的编程语言,它的“一次编写,到处运行”特性使得它成为开发桌面应用、网页应用和手机应用等的理想选择。 - 游戏开发通常涉及到图形用户界面(GUI)的创建,Java中的Swing和JavaFX库...
一、Java线程的概念与创建 1. 线程定义:线程是程序执行的最小单位,一个进程可以有多个线程,它们共享进程的资源,但各自拥有独立的执行流。 2. 创建线程: - 继承Thread类:创建一个新的类,继承自Thread类,并...
Java版本不兼容问题在软件开发过程中是一个常见的挑战,尤其是在维护旧项目或集成不同系统时。这个问题通常发生在尝试在新版本的Java环境中运行原本为旧版本Java设计的应用程序时。Java的每次更新都会引入新的特性、...
《BitterJava》一书由Bruce Tate撰写,深入剖析了Java开发过程中常见的陷阱与误区,旨在帮助中级Java程序员、分析师或架构师避免重蹈前人失败的覆辙。本书不仅是一份详尽的服务器端Java编程错误案例集,还探讨了这些...
通常,项目开发会经历多个版本迭代,每个版本可能包含新功能、性能优化或bug修复。源代码文件通常包含类、方法、变量等编程元素,通过阅读和理解这些代码,我们可以了解到系统的工作原理和实现细节。 在实际开发中...
8. **性能优化**:如果游戏包含大量拼图,或者允许用户自定义拼图,那么性能优化就很重要。例如,可以使用缓存来存储已计算的拼图状态,减少重复计算。 9. **用户交互设计**:设计直观的用户界面和合理的操作流程,...
"软件开发人成长经历(转载)"这个主题,旨在分享一位软件开发者从初学者到专业人士的蜕变过程,帮助那些渴望在这一行业中提升自己的人们找到方向。通过阅读《程序员感语.pdf》这样的资料,我们可以学习到许多关键的...
8. **并发性能优化** - **减少上下文切换**:过多的线程切换会带来性能开销,合理使用线程池和并发工具可以减少这种开销。 - **内存模型**:理解Java内存模型(JMM)有助于编写高效且正确的多线程代码。 通过深入...
在这一年中,作为一名Java开发者,我经历了多个项目的开发和测试,从中积累了丰富的经验和技能。以下是对过去一年工作的详细总结: 1. **联通116114门户网站开发**: - 该项目涉及了网站登录、注册、公告模块以及...
18. 你对失败的看法:描述一次失败的经历,以及你从中学到的教训,展示你的成长心态和韧性。 19. 工作中的创新:分享你在 Java 开发中实施的创新点,如何通过技术创新提高工作效率或产品质量。 20. 处理复杂问题的...
对于Java高级工程师,他们期望听到关于大型项目的经验,特别是在解决复杂问题、优化系统性能和团队协作上的贡献。 2. **项目架构设计**:描述项目的主要模块和结构图是展示技术实力的重要环节。面试者需要清晰地...
此外,作者可能也分享了在调试和优化Maven+Tomcat配置时的一些技巧,比如使用Maven的profile来管理不同的环境配置,或者通过调整Tomcat的JVM参数来优化性能。还有可能讨论了如何处理日志记录、安全管理、负载均衡等...
- **性能优化**:线程池可以复用已存在的线程,减少线程创建和销毁带来的开销,提高响应速度。 - **线程控制**:线程池可以限制最大线程数量,避免过多线程导致系统资源耗尽。 - **异常处理**:线程池提供了更好的...
- **经典与现代技术结合**: 尽管操作系统经历了多次升级,但游戏依然保持原貌,显示出其经典性。 **1.2 系统概述** - **功能实现**: 包括开始游戏、自定义游戏设置、挖雷、标记雷区等。 - **运行环境**: Java SE ...
在“SWFloadup的一次尝试”中,博主可能分享了自己使用SWFUpload集成到Struts1框架项目中的经历和经验。 Struts1是Apache组织开发的一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它帮助开发者构建...
此外,他还可能讨论了在工作中遇到的技术难题,如系统架构设计、性能优化、代码重构等,以及如何在团队中成长并影响他人。 回忆录还可能涉及个人成长和心理调适的部分,ACrush可能分享了面对压力、保持学习动力、...