Specifica del blocco di righe per ridurre il sovraccarico

Il blocco righe, supportato per tutte le istruzioni e i tipi di dati (inclusi i tipi di dati LOB), riduce il sovraccarico del gestore database per i cursori richiamando un blocco di righe in una singola operazione.

Informazioni su questa attività

Questo blocco di righe rappresenta un numero di pagine in memoria. Non si tratta di un blocco di tabella MDC (multidimensional clustering) o ITC (insert time clustering), che è fisicamente associato a un'estensione sul disco.

Il blocco delle righe è specificato dalle seguenti opzioni nel comando BIND o PREP :
BLOCCO DI TUTTI
I cursori dichiarati con la clausola FOR READ ONLY o che non sono specificati come FOR UPDATE verranno bloccati.
NUMERO BLOCCO
I cursori non verranno bloccati.
BLOCCO UNAMBIG
I cursori dichiarati con la clausola FOR READ ONLY verranno bloccati. I cursori che non sono dichiarati con la clausola FOR READ ONLY o FOR UPDATE, che non sono ambigui o che sono di sola lettura, verranno bloccati. I cursori ambigui non verranno bloccati.
I seguenti parametri di configurazione del gestore database vengono utilizzati durante il calcolo della dimensione blocco.
  • Il parametro aslheapsz specifica la dimensione dell'heap del livello di supporto dell'applicazione per le applicazioni locali. Viene utilizzato per stabilire la dimensione del blocco I/E quando viene aperto un cursore di blocco.
  • Il parametro rqrioblk specifica la dimensione del buffer di comunicazione tra le applicazioni remote e i relativi agenti database sul server di database. Viene anche utilizzato per stabilire la dimensione del blocco I/O sul client di runtime del server di dati quando viene aperto un cursore di blocco.

Prima di abilitare il blocco dei dati riga per tipi di dati LOB, è importante comprendere l'impatto sulle risorse di sistema. Una maggiore quantità di memoria condivisa verrà utilizzata sul server per memorizzare i riferimenti ai valori LOB in ciascun blocco di dati quando vengono restituite le colonne LOB. Il numero di tali riferimenti varia in base al valore del parametro di configurazione rqrioblk .

Per aumentare la quantità di memoria assegnata all'heap, modificare il parametro di configurazione del database database_memory :
  • Impostazione del valore su AUTOMATIC
  • Aumento del valore di 256 pagine se il parametro è attualmente impostato su un valore numerico definito dall'utente

Per aumentare le prestazioni di un'applicazione SQL integrata esistente che fa riferimento a valori LOB, eseguire di nuovo il bind dell'applicazione utilizzando il comando BIND e specificando la clausola BLOCKING ALL o la clausola BLOCKING UNAMBIG per richiedere il blocco. Le applicazioni integrate richiameranno i valori LOB, una riga alla volta, dopo che un blocco di righe è stato richiamato dal server. Le funzioni definite dall'utente (UDF) che restituiscono i risultati LOB potrebbero far sì che il server Db2® ritorni al richiamo dei dati LOB su una singola riga quando vengono utilizzate grandi quantità di memoria sul server.

Procedura

Per specificare il blocco riga:

  1. Utilizzare i valori dei parametri di configurazione aslheapsz e rqrioblk per stimare il numero di righe restituite per ciascun blocco. In entrambe le formule, orl è la lunghezza della riga di output, in byte.
    • Utilizzare la formula seguente per le applicazioni locali:
         Rows per block = aslheapsz * 4096 / orl
      Il numero di byte per pagina è 4096.
    • Utilizzare la formula seguente per le applicazioni remote:
         Rows per block = rqrioblk / orl
  2. Per abilitare il blocco riga, specificare un valore appropriato per l'opzione BLOCKING nel comando BIND o PREP .

    Se non si specifica l'opzione BLOCKING , il tipo di blocco della riga predefinito è UNAMBIG. Per il CLP (command line processor) e la CLI (call - level interface), il tipo di blocco riga predefinito è ALL.