由儿童故事引申出的ORACLE优化思路剖析

近期做了不少相关ORACLE培训,同时也处理了非常多的案例,越来越深刻的发现,其实优化和生活中的道理是一样的。我反复的和学员、同事、朋友说这些,就为了说明这个简单的道理:其实优化和生活是一样一样一样的!
   无非就是意识+技能。
   我发现我每10个优化案例中,就会有5个左右是不需要ORACLE技能,而仅需要意识的,然后另外5个呢,是需要技能+意识。
   比如如下几个工作中的小例子:

1. 某天,有人找我,系统运行很慢,怎么办啊怎么办?
     后来发现是一系列后台JOB的SQL在运行,很占资源,仔细看看这些SQL,居然有写时间>2005年 <2006年,有点奇怪,怎么一直是运行历史的记录,后来得知是当时测试阶段的进程,早就该停了,那如何优化,一个字,剁!

2. 再某天,有人找我,说XX过程运行很慢,怎么办?
    过程中的某个模块运行很慢,我还没调测的时候就发现,这个模块和顶端的SQL逻辑重复了,如果上面成立,下面就不必再判断了,下面成立,上面也就不必判断了。但是运行也不影响结果,因为重复判断也无妨,所以一直没人发现这个问题。那后来如何优化,很简单,问清楚后,把慢的这个模块的SQL就两个字,剁剁!

3. 再再某天,局方让我优化一个SQL
   我看了以后说,某SQL因为该表记录太大而运行缓慢。一直保留到2008年,你真的需要这么多吗?局方说,真的吗?我只需要最近3个月就可以了。 怎么优化,删除所有3个月以前的记录(后续将表分区),就是三个字,剁剁剁!

4. 再再再某天,有人问我某SQL插入很慢,怎么办?
   看了以后,我发现几个问题:
  1. 一个FOR LOOP循环的INSERT 插入,并带有一定的逻辑,发现 LOOP带ORDER BY 的排序。
    我问他,你很想顺序的插入吗,回答YES,那你取数的时候不需要ORDER BY查吗,他回答那也要,因为他后来知道其实要顺序查询一定要ORDER BY的。那你又何必ORDER BY的插入呢?
  2. 一堆的索引
     问,你这个索引这么多,都有用到吗? 回答是,暂时没用,先建起来,以后看看,说不定要用到。
  咋解决,剁剁剁剁!刀都砍缺了。

因此,优化有的时候真的是意识很重要,并不仅仅是技能,生活也是如此。就是少做事,不做事。不过看上去简单的道理,其实不见得在具体工作中能明白, 因此我写了这个小文,让大家加深印象,也输出我的方法论。

5. 再再再再某天,有人说几个晚上了都无法清理某个表成功?
   咋清理啊,遇到啥问题啊?哦,是这样的,大表记录8千万,要删除一些没用的记录,但是删除了4个小时还没结束,而且老遇到锁的问题,只好一直放弃。
  那你要删除多少啊?---答曰删除大部分。
  那保留多少啊?--答曰 保留,没想过,哦,大致只有几万吧。
  那你就新建一张表出来吧。还会慢吗,还会锁表吗?答曰:哦,对啊,那原来的表就可以。。。。。
YES ,剁剁剁剁剁。。。。。。。刀完全砍坏了。

不说了,开始讲故事了,这个买鱼系列故事是我某天晚上即兴编了然后说给我宝宝听的,幼儿园中班的小朋友都听的懂的故事来描述ORACLE优化方法论,我觉的没人听不懂。宝宝还回答了我不少问题,基本正确,甚至还会联想!哇塞,感觉很开心,孩子没傻。
 

你可能感兴趣的:(oracle,优化,资源,如何,怎么办)