===========================================================
今天给客户做了一次性能调整
===========================================================
作者: tigerfish(http://tigerfish.itpub.net)
发表于: 2004.11.13 23:10
分类:
Oracle数据库
出处: http://tigerfish.itpub.net/post/4/5023
---------------------------------------------------------------
客户是一危险品管理系统,JSP+Weblogic+Oracle db的架构
问题:
1 输入雷管信息时,由于生产量大,不可能逐条输入,他们采取输入开始、结束号码的方法,在前台产生一张号码列表供用户审核剔除缺号,再提交到数据库,但问题是这一提交在几万发雷管的情况下居然需要15分钟,让人等的不耐烦。
2 对于某指定单位的雷管列表查询要等几分钟才出结果,速度也慢
解决:
1 经与开发人员交谈和观察程序,发现他们在列表出来并经用户剔除缺号后的提交是用前台循环语句进行的,5万雷管就是5万次循环,每次循环都向db发出一条不同的sql语句,导致db不断的parse新的sql(Oracle只对文本内容完全相同的sql才使用cache中缓存的解析结果),在这里耗费了大量时间。后来建议他们改用存储过程,把起始值和终止值传递给存储过程,由存储过程直接在数据库里插入行,这样只须对存储过程解析一次,节省大量不必要的开销,实验后,所需要的时间缩短到几秒钟
2 这个问题很简单,在雷管信息表里对单位id列建立索引,使查询几乎可以瞬间完成
tigerfish
发表于:2004.11.13 23:10
::分类:
(
Oracle数据库
)
::阅读:(34129次)
::
评论
(9)
[回复]
husthxd
评论于: 2004.11.18 16:52

厉害呀
[回复]
jlandzpa
评论于: 2004.12.17 21:28
[回复]
有做秀嫌疑 
myhuaer@sohu.com
评论于: 2005.08.31 11:20

hh
[回复]
fsm
评论于: 2005.10.21 09:53

hh
[回复]
太少了吧,就这一篇!你应该向Eygle那小老虎看齐,别光学吹牛啊^_^.
fsm
评论于: 2005.10.21 09:58

^_^
[回复]
现在很久没做过Oracle方面的技术活了,只是偶尔作为一种闲时的消遣而已,而在花在ITPUB网站上的技术活又太琐碎,实在没心情一一写下,留给将来年轻人去写吧
老虎
评论于: 2005.11.03 20:29
[回复]
brajxm
评论于: 2005.11.09 13:41

?
[回复]
chance
评论于: 2006.02.13 11:08