優化過程詳解 1.1. 第一次優化處理龐" name="description" />

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 如何給Large Delete操作提速近千倍?(二)

    發表于:2007-05-25來源:作者:點擊數: 標簽:Large千倍delete提速操作
    本文已經發表在ITPUB優化技術叢書,未經許可,不得轉載。 本文已經發表在ITPUB優化技術叢書,未經許可,不得轉載。 1. MI LY: 宋體; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">優化過程詳解 1.1. 第一次優化處理龐

     本文已經發表在ITPUB優化技術叢書,未經許可,不得轉載。

     本文已經發表在ITPUB優化技術叢書,未經許可,不得轉載。

    1.   MILY: 宋體; mso-ascii-font-family: "Times New Roman"; mso-hansi-font-family: "Times New Roman"">優化過程詳解

    1.1. 第一次優化——處理龐大的IN-LIST操作

    回到我們最初的需求,首先看看這個刪除工作的基本語句,請注意這個IN 操作,由于這個TEMP_MID_HUBEI 表有130多萬行記錄,這將是一個多么龐大的IN-LIST!

     

     

    DELETE from SSF

          WHERE mid IN (SELECT mid

                          FROM TEMP_MID_HUBEI);

     

     

     

     

    下面,我們在測試環境下看看,系統機器空閑,資源極大豐富,數量比真實環境小很多的情況下,這條刪除語句的執行效率:

    SQL> DELETE from SSF WHERE mid IN (SELECT mid FROM TEMP_MID_HUBEI);

     

     

    18 rows deleted.

     

     

    Elapsed: 00:05:35.79

    SQL>rollback;

     

     

    我你們看到原始的刪除語句需要大約5分半鐘。

     

     

    現在,我們使用RBO(加上 RULE HINT),觀察一下語句的執行情況:

    SQL> DELETE /*+ RULE */ from SSF WHERE mid IN (SELECT mid FROM TEMP_MID_HUBEI);

     

     

    18 rows deleted.

     

     

    Elapsed: 00:00:47.27

    SQL>rollback;

     

     

     

     

    我們看到,這條語句的執行時間縮短到只需要47秒鐘,單條語句的執行效率提高了7倍以上,這也就是我們常說的,對付IN-LIST或者大量OR條件的一大有利武器。

     

     

    好了,我們現在如果在生產庫上直接運行修改后的delete語句來刪除數據性能會提高多少呢?會是我們看到的7倍么?

    我將刪除操作所涉及到的所有表的操作寫成一個腳本,首先使用少量行刪除的操作做測試,得到如下的測試結果:

    oracle@db02:/oracle/lunar > cat nohup.out

     

     

    SQL*Plus: Release 9.2.0.4.0 - Production on Mon Mar 7 12:37:56 2005

     

     

    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

     

     

     

     

    Connected to:

    Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production

    With the Partitioning and Real Application Clusters options

    JServer Release 9.2.0.4.0 - Production

     

     

     

     

    37 rows deleted.                 henan_SUBSO

     

     

    Elapsed: 00:06:39.81

     

     

    Commit complete.

     

     

    Elapsed: 00:00:00.01

     

     

    4 rows deleted.                      hubei_SUB

     

     

    Elapsed: 00:02:42.71

     

     

    Commit complete.

     

     

    Elapsed: 00:00:00.01

     

     

    1 row deleted.                       hubei_SUBSC

     

     

    Elapsed: 01:31:51.25

     

     

    Commit complete.

     

     

    Elapsed: 00:00:00.01

     

     

    18727 rows deleted.              hubei_SUBNFO

     

     

    Elapsed: 00:01:35.55

     

     

    Commit complete.

     

     

    Elapsed: 00:00:00.01

     

     

    21 rows deleted.                 fujian_SUINFO

     

     

    Elapsed: 00:00:15.49

     

     

    Commit complete.

     

     

    Elapsed: 00:00:00.01

     

     

    35423 rows deleted.              GINFO

     

     

    Elapsed: 00:02:19.80

     

     

    Commit complete.

     

     

    Elapsed: 00:00:00.04

    Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production

    With the Partitioning and Real Application Clusters options

    JServer Release 9.2.0.4.0 - Production

    oracle@db02:/oracle/lunar >

     

     

    嗯,看到上面可喜的結果,我決定進行第二次優化,分段處理,也就是將所有超過10000條以上的刪除操作拆分成小段操作(比如,以10000條記錄為標準刪除記錄,然后提交)。

     

     

     

     


    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>