首页 > Linux操作系统 > Linux操作系统 > 今天给客户做了一次性能调整
问题:
1 输入雷管信息时,由于生产量大,不可能逐条输入,他们采取输入开始、结束号码的方法,在前台产生一张号码列表供用户审核剔除缺号,再提交到数据库,但问题是这一提交在几万发雷管的情况下居然需要15分钟,让人等的不耐烦。
2 对于某指定单位的雷管列表查询要等几分钟才出结果,速度也慢
解决:
1 经与开发人员交谈和观察程序,发现他们在列表出来并经用户剔除缺号后的提交是用前台循环语句进行的,5万雷管就是5万次循环,每次循环都向db发出一条不同的sql语句,导致db不断的parse新的sql(Oracle只对文本内容完全相同的sql才使用cache中缓存的解析结果),在这里耗费了大量时间。后来建议他们改用存储过程,把起始值和终止值传递给存储过程,由存储过程直接在数据库里插入行,这样只须对存储过程解析一次,节省大量不必要的开销,实验后,所需要的时间缩短到几秒钟
2 这个问题很简单,在雷管信息表里对单位id列建立索引,使查询几乎可以瞬间完成
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/2/viewspace-17542/,如需转载,请注明出处,否则将追究法律责任。