五、看TOP SQL
看到这里豁然开朗,果然是回收站引起的问题,那么第一步就是关闭回收站;
找到第一个点以后,细心观察你会发现第二个点:
Execution=0 因为此AWR的生成间隔是一个小时,所以Execution等于0表示某些SQL一个小时都没有跑完;
不难看出这是一个OLAP的数据库,OLTP一般是不会有这种SQL的,OLAP跑这么慢很有可能是没有开启nologging模式;
OLAP如何解决慢的问题呢?
1、创建表的时候nologging:
--create table xxx nologging;
2、插入数据的时候开并行:
--insert /*+ append */;
3、开启会话级的DML并行:
--alter session enable parallel dml;
4、连接sql不走hash的让他强制走hash:
--sql hint 走hash
那么此数据库的优化方案是:
1、关闭收站;
2、开启nologing;
3、并行插入;
4、改hash。
回顾上面的过程,再分享一些架构设计经验:
OLAP的block块最好要设置为16K;
OLAP的PGA要尽量设置的够大,比如接近SGA的大小。