Spiegazione: Quando viene eseguita una chiamata di database dall'interno di
un nodo flusso di messaggi, il flusso costruisce l'istruzione SQL appropriata e questa viene inviata utilizzando
ODBC al gestore di database. Come parte di questo processo, l'istruzione SQL è
preparata utilizzando la funzione SQLPrepare e un handle di istruzione viene acquisito in modo che
l'istruzione SQL possa essere eseguita. Ai fini delle prestazioni,
una volta preparata l'istruzione, questa e l'handle vengono salvati in una
cache per ridurre il numero di chiamate alla funzione SQLPrepare. Se l'istruzione è
già nella cache, l'handle di istruzione viene restituito in modo che possa essere
eseguito nuovamente con parametri appena associati.
La stringa dell'istruzione
viene utilizzata per eseguire la ricerca della cache. Utilizzando stringhe SQL protette che differiscono
leggermente per ciascun messaggio, l'istruzione non viene trovata nella cache e viene eseguita sempre
una funzione SQLPrepare (e viene aperto un nuovo cursore ODBC).
Quando si utilizzano istruzioni PASSTHRU, utilizzare indicatori di parametri in modo che la stessa istruzione SQL preparata possa essere utilizzata per ciascun messaggio elaborato, con i parametri associati in fase di runtime. Questo metodo è più efficace in termini di risorse di database e, per istruzioni che vengono eseguite ripetutamente, risulta
più veloce.
Tuttavia, non è sempre possibile utilizzare indicatori di parametri oppure si potrebbe voler
creare dinamicamente le stringhe di istruzioni SQL in fase di runtime.
Questo potenzialmente conduce all'inserimento nella cache di molte istruzioni SQL univoche. La cache
stessa non aumenta molto in quanto tali istruzioni non sono generalmente grandi, ma diverse piccole assegnazioni di memoria possono produrre la frammentazione della memoria.