|
原帖由 gaofeixmrs 于 2008-4-10 17:19 发表 ![]()
前些日子,公司进口图书部新开发的Mis系统上线后,速度特慢,捕捉到最占资源的sql语句,在后台执行该sql同样很慢,排除中间件websphere的问题,初步怀疑是sql语句写的效率不高,所以系统外包公司的开发人员一段时间里一直再优化sql,但效果不明显,开发人员中没有对oracle优化研究较熟悉的。当时web服务器和db服务器临时在一台windows2003的服务器上运行,有时候发现oracle的进程占cpu很高,于是决定将web和db分开,当时我准备把我负责的中文联采系统项目的数据库 从9i迁移到10g上,OS 是solaris,10g装好后领导决定先把进口图书的库移过去,移过去后神奇发生了,同样的sql在9i里执行需要52秒,而在10g里执行只需要0.几秒。Sql语句和在9i和10g里的执行计划见附件,执行计划有很大的差别,语句比较复杂关联了10多张表。而且不光是该sql原来执行慢的sql全部变得神奇的快了。
因为我不是DBA,学习oracle都是自己的爱好,还没有时间学10g的新特征,想问一下各位高手10g是如何实现sql选择最优的执行计划的?是不是只要装了10g,开发人员写sql时也不用考虑优化的问题了?
不能这么神奇吧,检查一下如下列表:
1、升级到10g后,系统环境是否改变,是否使用更好的服务器?更多的内存?更多的CPU个数?
2、9i的数据库是否没有进行表分析,9i不能自动分析表结构的。
3、另外,你从9i到10g的过程中,数据迁移是否使用的是imp、exp?
4、升级10g后,数据文件的存储是否更加均衡?
等等,都会对sql的执行计划造成影响的,可以肯定的是,10g绝对没有你想想的那么神奇,呵呵,性能问题需要常抓不懈的。 |
|