数据库性能调优
我们的业务系统用的是oracle,原来运行了6个月都比较正常,现在近几天总是发现数据库负载很高,我想各位高手们能不能给提供个排查的思路和方法,比如说提供个性能优化的工具之类的让我大概有个解决问题的方向。
我知道我表达的也不是很清楚,还望大侠指点一下!
------解决方案--------------------看看数据库中有多少锁,并着重看看等待的时间有多少。我的理解是,数据库的负载高不是问题,问题是如果都是在等同一个资源,那就有问题了。
------解决方案--------------------这个东西复杂了,说起来有点像废话。
但归根结底就是分析OS和ORACLE的统计数据。
既可以用oem也可以用各种dbms包。
查看这些数据的目的就是为了知道哪些对象出问题了(先不考虑OS),
例如是否因为更多事务,或者部分的SQL变得低效等等,通过工具这些都很容易获得的。
锁定了对象就可以找更具体原因,总之基本的方法就是逐个排查。
------解决方案--------------------发一些业务高峰的awr给我,我大概给你看下 dba@xifenfei.com
------解决方案--------------------
从外到内,从上到下
检查网络情况,主机的负载情况,例如CPU的空闲时间\使用率\是否有大量的虚拟内存操作
检查是否有大量排序\是否有大量的硬解析\ORACLE的若干进程是否正常\PGA SGA SHARED_BUFFER DATA_CACHE_BUFFER LOG_BUFFER大小设置情况\检查PFILE
打开AWR报告,能够反映基本情况\检查表空间的大小是否满足现在需求,最好不是autoextend的形式
检查SQL执行情况\是否需要做表分析\索引是否建立的过多\执行过程中是否利用了索引,执行计划是否是最优的\是否有不合理的定时任务\触发器\是否有不合理的业务需求\是否有表未分区\垃圾回收中是否存在大量数据
其他调优...例如 是否可以换一种思路写sql\是否可以将大表切割为小表\有的存储过程是否需要替换为更简略的形式........
从一个点很难解答你的问题,如同中医把脉,必须根据不同的病症,根据ORACLE运行的机制调理或者下药.
------解决方案--------------------AWR
Oracle内置的性能调优工具
------解决方案--------------------无非就是根据业务需要、当前的硬件环境及操作系统来优化数据库和应用中的SQL语句。(如还有中间件则要优化中间件的设置)。数据库方面需要优化的参数主要有sessions,processes,memory_max_target,memory_target等