当前位置:文档之家› java系统性能优化手册PPT课件

java系统性能优化手册PPT课件

上面条件单独使用会导致全表检索。要和其他条件组合使用,避免 全表检索。
专业的IT服务
12.索引列运算: 对于索引列进行函数运算会导致索引无效。 × SELECT ENAME FROM EMP WHERE TO_CHAR( UPD_DT, ‘YYYYMMDD’ ) = ‘20000803’ ○ SELECT ENAME FROM EMP WHERE UPD_DT = TO_DATE( ‘20000803’, ‘YYYYMMDD’ )
中间件服务器:weblogic9
最大支持并发数: 7600
专业的IT服务
系统参数
1. 避免在循环中定义局部变量,会导致大量的内存占用。 2. ArrayList性能要好于Vector。
Vector是线程安全的,而ArrayList是非线程安全的。且Vector内部存 储了多余数据。 3. HashMap性能要优于Hashtable因为后者是线程安全的。 4. Iterator遍历要比直接遍历集合慢。
专业的IT服务
以上的方法都是向字符串缓冲区“追加”元素,但是,这个“元素”参 数可以是布尔量、字符、字符数组、双精度数、浮点数、整型数、长 整型数对象类型的字符串、字符串和StringBuffer类等。如果添加的 字符超出了字符串缓冲区的长度,Java将自动进行扩充。
专业的IT服务
7.从ResultSet取得字段值时,尽量使用对应类型的get方法,避免潜在 的类型转换。 8.尽量只检索必要的字段,避免过多冗余数据检索,避免出现”select * from tableName”类型语句。 9.如果可能,将多次检索数据的SQL语句合并成一个进行检索。 10.为'Vectors' 和 'Hashtables'定义初始大小
oracle索引的合并条件: (1) 多个相等比较的索引
两个同级别索引被合并,只取出索引中与where条件相同的列 合并。 (2) 相等比较和范围比较的索引
专业的IT服务
6. 字符串连接操作尽量使用StringBuffer,使用StringBuffer时指定合适的 初始容量可以优化性能, JDK1.5以上,使用StringBuilder比StringBuffer更 高效,但是非线程安全。
StringBuffer append(boolean b) StringBuffer append(char c) StringBuffer append(char[] str)
WEB2: CPU:Xeon二颗四核 NL230D 主频:1.6G 内存:4G
WEB3: CPU:Xeon二颗四核 主频:2.0G 内存:2G
WEB4: CPU:Xeon二颗四核 主频:2.0G 内存:2G TIODB1: Xeon MP 3.0GHz*8/8GB/73G*3
TIODB2: Xeon MP 3.0GHz*8/8GB/73G*3
技术研讨会
——系统性能优化
赵伟 2010-09-28
专业的IT服务
研发背景
基于《河南省人口与计划生育利益导向管理信息系统》测试、试运 行及正式上线阶段的系统调试和优化过程,将所进行的优化处理方法 进行梳理总结,供大家参考学习。
专业的IT服务
系统参数
WEB1:CPU:Xeon二颗四核 NP370G2 主频:3.0G 内存:2G
NULL的回避: null值不存储在索引中,所以使用IS (NOT)NULL 会导致全表检索。
专业的IT服务
13.联合索引的场合,要注意索引字段的次序。单独使用后面的索引 字段无效。 14. 别名的使用: 给表指定别名,能够减少SQL解析的时间。 15. FROM表的次序:
Oracle从后往前处理数据表,取得数据少,条件精确的表放到 后面可以提高SQL执行的性能。 16. 数据类型的统一:
专业的IT服务
5. 异常处理要比普通处理速度慢,因此避免使用异常来控制程序逻辑, 避免在循环中使用异常。
把try/catch块放入循环体内,会极大的影响性能,如果编译JIT被关 闭或者你所使用的是一个不带JIT的JVM,性能会将下降21%之多。
JIT: just in time,即时编译技术。使用该技术,能够加速java程序的 执行速度。当JIT编译启用时(默认是启用的),JVM读入.class文件解 释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码,
专业的IT服务
StringBuffer append(char[] str, int offset, int len) StringBuffer append(double d) StringBuffer append(float f) StringBuffer append(int i) StringBuffer append(long l) StringBuffer append(Object obj) StringBuffer append(String str) StringBuffer append(StringBuffer sb)
Oracle数据库将把检索条件左边的部分转型为右边数据的类型进 行比较。这样可能导致索引失效。因此要避免自动的类型转换。 检索条件中有OR的情况,尽量使用UNION将OR的条件拆分成多个SQL后 连接起来操作。
专业的IT服务
17.索引的合并
当Where从句中含有多个索引时,oracle可能合并索引来使用。合 并索引由于要读取多个索引所以比联合索引性能要差。
JVM为Vector扩充大小的时候需要重新创建一个更大的数组,将原原先数 组中的内容复制过来,最后,原先的数组再被回收。可见Vector容量的扩 大是一个颇费时间的事。通常,默认的10个元素大小是不够的。你最好能 准确的估计你所需要的 全表检索: COL1 >[=] COL2(相同表) COL1 <[=] COL2(相同表) COL1 IS[NOT] NULL COL1 NOT IN COL1 LIKE ‘%PATTERN%’ COL1 LIKE ‘%PATTERN’ NOT EXISTS
相关主题