0

まったく異なるサーバー(DB2)にあるdbからdbにデータをアーカイブする必要があります。次の手順でそれを行うことができますが、パフォーマンスが問題です。アーカイブするデータが非常に大量にあります。とにかく、最適化されたアーカイブパフォーマンスでこれを行うには?

/* 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)
4

1 に答える 1

0

ソース テーブルとアーカイブ テーブルの両方を CREATED_TIME で分割します。その後、パーティションをソース テーブルから単純にデタッチし、それをアーカイブ テーブルにアタッチすることができます。これはほぼ瞬時に実行されます。

于 2013-08-12T11:48:58.010 に答える