环境: Windows 2003 server
Oracle 9i
Weblogic 8
硬件:IBM x346服务器
CPU:Xeon 3GHz 双CPU
内存:1GB DDR2
现象:有套应用在服务器上跑,2006年上线,最近一年用户称在查询显示结果时缓慢,要等待数分钟,
将查询的SQL语句直接在数据库里查询也是十分缓慢。
原以为是因为相关表内的数据过多导致,经用户同意,备份数据库后,将2013年之前的数据删除。
重启服务器和数据库,未开放用户访问的情况下,测试做同样的查询操作,只要15秒出结果。
开放用户访问,使用一段时间后,再次做同样的查询操作,又变得和原来一样显示查询结果缓,
直接在数据库里执行该sql 语句也要125秒以上才能显示结果(该SQL语句是对一个视图的查询
,该视图只涉及到两个表,查询出来的结果只有900条记录)
调整了SQL语句查询条件的位置,可以使查询时间缩短40秒,但是还是没有达到用户的期望值。问题: 1.是否是因为多用户访问应用导致数据库的查询效率降低?
2.是否可以通过优化SGA和PGA来提高数据库的查询性能?
3.是否需要升级服务器的内存或其他硬件,再配合优化SGA和PGA来提高数据库的查询性能?
4.有人建议直接换oracle11G,换了之后能否解决查询数据的性能?
oracle性能优化
Oracle 9i
Weblogic 8
硬件:IBM x346服务器
CPU:Xeon 3GHz 双CPU
内存:1GB DDR2
现象:有套应用在服务器上跑,2006年上线,最近一年用户称在查询显示结果时缓慢,要等待数分钟,
将查询的SQL语句直接在数据库里查询也是十分缓慢。
原以为是因为相关表内的数据过多导致,经用户同意,备份数据库后,将2013年之前的数据删除。
重启服务器和数据库,未开放用户访问的情况下,测试做同样的查询操作,只要15秒出结果。
开放用户访问,使用一段时间后,再次做同样的查询操作,又变得和原来一样显示查询结果缓,
直接在数据库里执行该sql 语句也要125秒以上才能显示结果(该SQL语句是对一个视图的查询
,该视图只涉及到两个表,查询出来的结果只有900条记录)
调整了SQL语句查询条件的位置,可以使查询时间缩短40秒,但是还是没有达到用户的期望值。问题: 1.是否是因为多用户访问应用导致数据库的查询效率降低?
2.是否可以通过优化SGA和PGA来提高数据库的查询性能?
3.是否需要升级服务器的内存或其他硬件,再配合优化SGA和PGA来提高数据库的查询性能?
4.有人建议直接换oracle11G,换了之后能否解决查询数据的性能?
oracle性能优化
主要是三大部分,一是操作系统一级的,二是数据库一级的,三是SQL一级的。
先使用一些分析工具,找出瓶颈在什么地方,然后进行有针对性的优化。
比如说磁盘I/O的竞争,交换,内存,数据库的参数设置,表、索引的碎片,表空间的碎片,具体SQL的执行效率等等,涉及的因素很多。
-------------------------
直接在数据库里执行该sql 语句也要125秒以上才能显示结果
-------------------------------------------
说明Sql语句本身有问题的。看执行计划,分析出什么地方耗时。