数据库性能优化思路
定位问题所在
1、开发反馈指定SQL语句或者根据AWR报告查看,定位到性能最差的速度最慢过程或SQL
一、先大体看SQL的复杂性和规模,再看执行计划
2、EXPLAIN PLAN FOR 语句,查看有没有走索引
如果没走索引:
查看SQL本身有没有可优化的余地,比如一些不规范的写法导致不走索引,不合理的连接方式GROUP BY字段
如果加上了索引,SQL语法也优化了还是不走索引,
查看数据库的统计信息是否是最新的,有时数据库统计信息过时,也会导致优化器判断失误,有索引而不走索引,更新指定表的统计信息后,重新查看执行计划
如果走了索引,SQL也没有可优化的空间:
从服务器本身检查磁盘I/O,内存,CPU使用率,有没有资源方面性能瓶颈,如果数据库占用持续90%以上,考虑扩容
如果服务器资源没有瓶颈,查看是否有等待事件,从AWR报告入和跟踪日志入手,启动会话级别跟踪,看SQL执行过程种是否有等待事件
也不是等待事件导致,只单纯是数据量大导致的慢,考虑对业务表进行定时归档,分表,分区去以空间换时间