读书人

sys_uuid()罗致oracle的session缓慢增

发布时间: 2012-08-30 09:55:54 作者: rapoo

sys_uuid()导致oracle的session缓慢增长

最近负责的数据交换平台性能测试,发现数据库连接有缓慢增长的现象,通过调试发现是oracle的sys_uuid()方法导致的,感觉非常奇怪,只好先将sys_uuid()改成java里的uuid生成方法,详细说明如下:

?

软件环境:

java jdk1.4.2/Red Hat 3.4.6-2

oracle 9i/Red Hat 3.4.6-2

oracle驱动采用的是ojdbc14.jar

?

通过如下方法查询oracle 的 session 连接占用:

select count(1)
? from v$session v
?where v.USERNAME = 'EDIENTJOIN'
?? and v.MACHINE = 'web'
?? and v.OSUSER = 'mqm'

?

java程序的原来的调用方法是:

String insertSql = "INSERT INTO EDI_ALARM_RESPONSE(ALARM_RESPONSE_ID,ALARM_REQUEST_DETAIL_ID,ALARM_TYPE,QUANTITY,CREATE_TIME) VALUES "
????+ "(SYS_GUID(),?,?,?,SYSDATE)";

?

后续改成:

String insertSql = "INSERT INTO EDI_ALARM_RESPONSE(ALARM_RESPONSE_ID,ALARM_REQUEST_DETAIL_ID,ALARM_TYPE,QUANTITY,CREATE_TIME) VALUES "
????+ "(?,?,?,?,SYSDATE)";

?

第一个参数采用如下方式取值:

String uuid = UUIDKeyGenerator.getInstance().generateKey();//公司框架子封装的方法,貌似新版的jdk里提供类似的方法

?

?

读书人网 >编程

热点推荐