2013-08-12 29 views
0

我需要將數據從數據庫歸檔到位於完全不同服務器(DB2)的數據庫中。我可以通過以下步驟來做到這一點,但表現是問題所在。我有非常大量的數據要歸檔。無論如何要做到這一點與優化存檔性能?DB2在其他服務器上對舊數據進行DB2歸檔

/* TEST WITH 1 TABLE */ 

--1. RETRIEVE IDs AND SAVE IN LIST - [USE LOOP TO PUSH RECORDS BASED ON IDs IN AN ARRAY] 
SELECT ID FROM TABLE_1 
WHERE CREATED_TIME >= '2013-08-07 10:06:22' AND CREATED_TIME <= '2013-08-07 11:09:43' 
ORDER BY A.ID ASC 




--2. DROP INDEXES [TOO SLOW!!!] 
ALTER TABLE TABLE_1_ARC DROP PRIMARY KEY 




--3. INSERT RECORDS INTO ARC TABLE [STORED PROCEDURE TO INSERT IN ALL TABLES???] 
INSERT INTO TABLE_1_ARC 
SELECT * FROM TABLE_1 
WHERE CREATED_TIME >= '2013-08-07 10:06:22' AND CREATED_TIME <= '2013-08-07 11:09:43' 
ORDER BY ID ASC 
--LOOPING THROUGH ARRAY FROM STEP 1 WILL BE USED HERE INSTEAD OF WHERE 


--4. DELETE ARCHIVED RECORDS FROM OPERATIONAL TABLE [STORED PROCEDURE TO DELETE EVERY FEW RECORDS???] 
DELETE FROM TABLE_1 
WHERE CREATED_TIME >= '2013-08-07 10:06:22' AND CREATED_TIME <= '2013-08-07 11:09:43' 
--LOOPING THROUGH ARRAY FROM STEP 1 WILL BE USED HERE INSTEAD OF WHERE 



--5. PUT INDEXES BACK [TOO SLOW!!!] 
ALTER TABLE TABLE_1_ARC ADD PRIMARY KEY (ID) 
+0

讓我補充一點,在這種情況下數據庫切換由第三方工具處理 –

+1

如果存檔表位於不同的數據庫中,那麼2個數據庫如何通過聯邦進行對話? –

+0

完成從數據庫讀取後,使用工具切換數據庫源,並開始插入。 –

回答

0

通過CREATED_TIME對源表和歸檔表分區。然後,您將能夠簡單地從源表中分離分區並將其附加到歸檔表中,這幾乎是瞬間的。

+0

OP希望在「完全不同的服務器」上存檔。當然,你可能會很快分離出一個分區,但是你不必將它分配到另一個分區,然後你可以將它分配到檔案中?另請注意,所顯示的時間範圍僅超過63分鐘。我們不知道選擇截止時間或保存記錄的時間有多長。這可能是相當大數量的分區。 – WarrenT

+0

我在開始時想到了分區,但它需要耗費時間。我的主要問題在於刪除過程。請隨時提出一個不同的方法來高效地歸檔大量數據。 –

相關問題