一次使用暫存資料表最佳化資料處理的過程

來源:互聯網
上載者:User
一次使用暫存資料表最佳化資料處理的過程

 

 

 

 

 

 

 

 

 

 

寫了一個資料處理程式,從遠端一資料庫中,將符合要求的資料過濾後插入到本機資料庫中。資料涉及兩張表A,B,其中A表的記錄六十萬條左右,B表的記錄二十萬條左右。

需要從A表中,查詢某種交易類型(每種交易類型有若干“套”(即幾條記錄的集合,類似會計分錄),每套中有若干條記錄),然後將得到的結果的每一條,再和該交易類型內的一套記錄中尋找該套內是否有對應的記錄,有的話才算一條滿足要求的記錄。對B表的處理類似。要求A表中處理四種交易類型,B表中處理一種交易類型。

1.遠端資料庫是生產庫,不允許私自串連,只能通過DBLINK。

2.兩表上只有主鍵,沒有我查詢需要使用的索引,無法建立索引。

3.A,B兩表不可以建立在本地。

寫了一個資料處理程式,使用遊標,將查詢得到的結果迴圈處理。查詢某種交易類型的資料的遊標開啟就要二分鐘。然後迴圈在套中校正資料的時候,都要使用全表掃描,五種交易類型處理下竟然要用四個多小時,處理的記錄數大概有兩百多萬條。得到大概一千五百條滿足條件的記錄。

 

 

 

 

 

 

 

 

 

 

 

需要改寫程式。不能建立索引,不能將資料存到本地,於是就想到了使用暫存資料表。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

建立會話級暫存資料表,在會話退出時Truncata 暫存資料表。並在建立的暫存資料表上建立幾個索引,資料處理的時候要用的索引。

 

 

 

 

 

 

 

 

 

 

drop table vhh;

 

 

 

 

 

 

 

 

 

 

drop table txn;

 

 

 

 

 

 

 

 

 

 

create global temporary table vhh on commit preserve rows as select * from A@dblink_Remote where 1=2;

 

 

 

 

 

 

 

 

 

 

create global temporary table txn on commit preserve rows as select * from B@dblink_Remote where 1=2;

 

 

 

 

 

 

 

 

 

 

drop index vhh_0;

 

 

 

 

 

 

 

 

 

 

drop index vhh_1;

 

 

 

 

 

 

 

 

 

 

drop index vhh_2;

 

 

 

 

 

 

 

 

 

 

drop index vhh_3;

 

 

 

 

 

 

 

 

 

 

create index vhh_0 on vhh(vchdat,apcode,curcde);

 

 

 

 

 

 

 

 

 

 

create index vhh_1 on vhh(apcode,vchdat);

 

 

 

 

 

 

 

 

 

 

create index vhh_2 on vhh(curcde,vchdat);

 

 

 

 

 

 

 

 

 

 

create index vhh_3 on vhh(orgidt,tlrnum,vchset,vchdat);

 

 

 

 

 

 

 

 

 

 

drop index txn_0;

 

 

 

 

 

 

 

 

 

 

create index txn_0 on txn(boknum,txndat);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

建立預存程序,將遠程庫中的資料插入到本機資料庫中,及一百萬的記錄,差不多需要十分鐘多一點。然後接著使用本地的暫存資料表,執行資料的處理。速度比直接使用DBLINK到遠程庫進行處理提高了很多。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

資料的處理整個過程就由原來的4小時15分鐘,縮短到了1449.995 seconds,也就是25分鐘。

 

 

 

 

 

 

 

 

 

 

在處理遠端資料或因磁碟空間不夠又要處理大量資料的時候,就可以考慮使用暫存資料表。暫存資料表的使用和普通表一樣操作。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.