TRANSACTOIN-READ-COMMITTED:防止对正在被其他处理修改的数据执行写锁定;
TRANSACTION-READ-UNCOMMITTED:允许处理读入未受权的数据以及允许在向结果中添加记录时可以忽略处理。
以上隔离水平依次降低,效率和性能依次提高。因此,建议选用满足在业务数据完整性要求前提下水平最低的隔离级别。
对于事务属性的设置也是如此,对于删除、修改和插入操作设置为Required,而对于只读操作设置为Supports或者NotSupports。
2.6.3 其他一些小技巧
1. 利用finders-load-bean的默认值true,既可以避免“n+1”的查询问题,又可以提高系统的性能;
2. 使用delay-updates-until-end-of-tx参数的默认值true,除非应用程序对某些变化有特别的要求;
3. 应用程序在每个业务方法调用后不需要进行存在性检查,将check-exists-on-method设定为false,以提高程序的性能;
4. 同一应用内, 将enable-call-by-reference设置为 true;
5. reentrant设置为false,避免事先加载子数据。
第三章 调优
3.1.1 Oracle性能优化
Oracle9i的性能优化除了调整kernal之外就是主要对Oracle启动文件的调整,即调整SGA的参数。注意,不同操作系统不同位数的机器最优的参数不是一样的,这里主要有windows和unix之分,32位和64位之分。
首先需要调大进程数和游标数,一般默认的值对实际应用来说都比较小,比如说,进程数可以调到300,游标数可以调到500。
其次,看一个经验公式: OS 使用内存+ SGA + session*(sort_area_size + hash_area_size +2M)<0.7RAM,通常认为此时的SGA比较合理。这里sort_area_size为64k, hash_area_size为128k(当排序多的时候需要增大sort_area_size,按调整后的值计算),session表示最大并发进程数,假设100个。假如1G内存的机器,OS占用200M,PGA占用200M左右,那么SGA可以设为400-500M,如果2G内存可以1G给SGA,8G可以5G给SGA。不过对于32位来说,通常最多只能使用1.7G内存。
然后,SGA内参数设置的基本原则是:data buffer 通常可以尽可能的大,shared_pool_size 要适度,log_buffer 通常大到几百K到1M就差不多。具体的:data buffer 1G内存可以设置500M,2G设为1.2G,8G可设为5G 。shared_pool_size不易过大,通常应该控制在200M--300M,如果使用了大量的存储过程,可以根据SGA的值增大到500M,如果增大后命中率得不到提高,则增加是无益的。具体的:1G内存可以设置100M,2G设为150M,8G可设为300M。如不使用Java,java_pool_size 10-20M即可。large_pool_size如果不设置MTS,在20M -30M 即可,假如设置 MTS,可以考虑为 session * (sort_area_size + 2M)。
最后,关于内存的设置可根据statspack信息和v$system_event,v$sysstat,v$sesstat,v$latch 等view信息来考虑微调。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-34413-9.html
好暖心哈哈哈哈
您太开放了
不明白的是号称民主国家的美国竟不顾天下苍生