Strategie di unione per i database partizionati
Le strategie di unione per un ambiente di database con partizioni possono essere diverse dalle strategie per un ambiente di database senza partizioni. È possibile applicare ulteriori tecniche ai metodi di unione standard per migliorare le prestazioni.
La collocazione della tabella deve essere considerata per le tabelle che sono frequentemente unite. In un ambiente di database con partizioni, collocazione tabella fa riferimento a uno stato che si verifica quando due tabelle che hanno lo stesso numero di chiavi di partizionamento compatibili sono memorizzate nello stesso gruppo di partizioni del database. Quando ciò si verifica, l'elaborazione di unione può essere eseguita nella partizione del database in cui sono memorizzati i dati e solo la serie di risultati deve essere spostata nella partizione del database coordinatore.
Code tabella
- Coda tabella (a volte indicata come TQ) è un meccanismo per il trasferimento di righe tra partizioni del database o tra processori in un database a partizione singola.
- Coda tabella diretta (a volte indicata come DTQ) è una coda tabella in cui le righe vengono hash su una delle partizioni del database di ricezione.
- Coda tabella di trasmissione (a volte indicata come BTQ) è una coda tabella in cui le righe vengono inviate a tutte le partizioni del database di ricezione, ma non con hash.
- Da una partizione del database ad un'altra quando si utilizza il parallelismo tra partizioni
- All'interno di una partizione del database quando si utilizza il parallelismo intrapartizione
- All'interno di una partizione del database quando si usa un database a partizione singola
- Code tabella asincrone
Queste code di tabella sono note come asincrone, poiché leggono le righe prima di qualsiasi richiesta di richiamo da un'applicazione. Quando viene emessa un'istruzione FETCH, la riga viene richiamata dalla coda della tabella.
Le code della tabella asincrona vengono utilizzate quando si specifica la clausola FOR FETCH ONLY sull'istruzione SELECT. Se si stanno recuperando solo le righe, la coda della tabella asincrona è più veloce.
- Code tabelle sincrone
Queste code di tabelle sono note come sincrone, poiché leggono una riga per ogni istruzione FETCH emessa da un'applicazione. In ogni partizione del database, il cursore viene posizionato sulla riga successiva da leggere da tale partizione del database.
Le code di tabelle sincrono vengono utilizzate quando non si specifica la clausola FOR FETCH ONLY sull'istruzione SELECT. In un ambiente di database con partizioni, se si stanno aggiornando le righe, il gestore database utilizzerà code di tabelle sincrone.
- Unione di code di tabelle
Queste code tabella conservano l'ordine.
- Code di tabelle non di unione
Queste code di tabella, note anche come code di tabella regolari, non conservano l'ordine.
- Code tabella listener (a volte indicate come LTQ)
Queste code di tabella vengono utilizzate con sottoquery correlate. I valori di correlazione vengono trasmessi alla sottoquery e i risultati vengono passati al blocco di query principale utilizzando questo tipo di coda di tabella.