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

Le descrizioni delle tecniche di unione in un ambiente di database con partizioni utilizzano la seguente terminologia:
  • 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.
Una coda di tabella viene utilizzata per trasmettere i dati della tabella:
  • 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
Ogni coda tabella passa i dati in una singola direzione. Il compilatore decide dove sono richieste le code di tabella e le include nel piano. Quando il piano viene eseguito, le connessioni tra le partizioni del database iniziano le code della tabella. Le code della tabella vengono chiuse al termine dei processi.
Esistono diversi tipi di code di tabelle:
  • 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.