Questione : Cambiamenti di prestazione in un programma DB2

Ciao tutti, il

We stanno usando un programma dell'archivio dove avevamo identificato una lista delle tabelle che hanno dovuto archivare. Il più vecchio metodo era: il

1) ha avuto un programma in COBOL Che ha cancellato dalle tabelle un
2) che le tabelle con poche annotazioni sono state cancellate using una singola cancellazione. Per esempio CANCELLAZIONE DA TABLE_FIRST DOVE DATA < DATE
3) per le tabelle con il numero delle annotazioni significativo noi ha avuto un cursore che ha andato a prendere le annotazioni. Per ogni annotazione che andato a prendere stavamo facendo funzionare una cancellazione query.
4) quando l'AMPIEZZA per il cursore è stata funzionata, noi ha andato a prendere 5000 file alla volta per esempio VANNO A PRENDERE CSR_CURSOR PER 5000 FILE. I dati sono stati memorizzati in un allineamento con 5000 file. Le annotazioni sono state lette dall'allineamento uno alla volta e la cancellazione è stata effettuata using questi valori. Dopo che le prime 5000 file sono cancellate, andiamo a prendere il blocco seguente di 5000 per questo anno che di table.

This abbiamo un requisito in cui siamo stati chiesti di rimuovere la codificazione dura specifica della tabella dal programma. Dobbiamo generare un tipo file che contiene una lista della tabella da cancellare ed i test di verifica da usare per l'omissione. Ciò ha richiesto una revisione al nostro programma. Ciò è il metodo che abbiamo per ora:

1) effettuiamo la cancellazione sulle tabelle paralelamente. Un programma del CL è funzionato per leggere dal tipo file e per ogni tabella ha elencato un programma di cancellazione è submitted.
2) il programma di cancellazione è un programma in COBOL dinamico di DB2 In cui in primo luogo troviamo che fuori la chiave primaria per un table.
3) una domanda PRESCELTA È PREPARATA using i campi nel key.
4) usiamo SQLDA per caricare l'indirizzo di immagazzinaggio per l'insieme differente delle chiavi primarie che possono occur.
5) per ogni annotazione che è andata a prendere (using gli indici chiave primari del Th), noi fanno funzionare una dichiarazione di CANCELLAZIONE. La dichiarazione di AMPIEZZA è l'AMPIEZZA CSR_CURSOR USING IL DESCRITTORE: SQLDA.

What che non posso realizzare using la dichiarazione di AMPIEZZA nel point# 5 è DI ANDARE A PRENDERE per 5000 FILE. È la mia comprensione che otterrò la migliore prestazione se VADO A PRENDERE nei blocchi di 5000 (questo è appena un numero che casuale abbiamo scelto) e nella CANCELLAZIONE di funzionamento per ciascuna delle 5000 annotazioni andate a prendere che facendo funzionare un'AMPIEZZA e un funzionamento semplici una CANCELLAZIONE per ogni annotazione che è restituita dall'AMPIEZZA. il
Please raccomanda se sono corretto nel supporre che “l'AMPIEZZA in un blocco di 5000 e nella CANCELLAZIONE„ sarà più veloce che “ANDARE A PRENDERE TUTTI ed a CANCELLAZIONE„. Se sì, come che cosa è la sintassi da andare a prendere nei blocchi quando usando lo SQLDA descriptor.

Thanks per il

Regards
Ali.
di aiuto in anticipo. class= del

Risposta : Cambiamenti di prestazione in un programma DB2

Penso che questo potrebbe essere un littlle più facile di avete realizzato -- potete fare un'unione fra le due tabelle del temp e denominarli fatta:
-- Qui è il contenuto della vostra tabella finale…
Selezionare il paese di Col1 Col2 Col3 Col4 Col5 Col6 Col7 DSTRecID
da DBO.PROC1_TBL
unione
selezionare il paese di Col1 Col2 Col3 Col4 Col5 Col6 Col7 DSTRecID
da DBO.PROC2_TBL

-- Potete inserirli nella vostra tabella finale come:
Inserto in dbo.final_table (paese di Col1 Col2 Col3 Col4 Col5 Col6 Col7 DSTRecID)
Selezionare il paese di Col1 Col2 Col3 Col4 Col5 Col6 Col7 DSTRecID
da DBO.PROC1_TBL
unione
selezionare il paese di Col1 Col2 Col3 Col4 Col5 Col6 Col7 DSTRecID
da DBO.PROC2_TBL


Altre soluzioni  
 
programming4us programming4us