Domanda

Quali sono i rischi o degrado delle prestazioni quando si utilizza SET TRANSACTION ISOLATION LEVEL REPEATABLE LEGGI?

Abbiamo alcuni SP che sono chiamati dai servizi BizTalk. Stiamo ottenendo stallo volte. Se si cambia il livello di isolamento, quali sono i rischi e le possibili degradazioni perfomance?

È stato utile?

Soluzione

Lettura ripetibile metterà serrature su tutte le righe che hanno stata scaricata. In situazioni in cui si sta lavorando cursori che vanno a prendere grandi quantità di dati può causare contesa con altri utenti perché non possono ottenere blocchi per aggiornare le righe lette da cursori con Lettura ripetibile fino a quando il cursore è chiuso.

Il rischio di degrado delle prestazioni è che le operazioni possono subire un aumento del numero di timeout e / o situazioni di stallo. Questo rischio è proporzionale alla probabilità che due operazioni hanno bisogno di lettura / aggiornare le stesse righe contemporaneamente. Un altro fattore che possono influenzare la vostra applicazione è la dimensione del blocco presa. Se serrature sono prese a livello di pagina, allora contesa può verificarsi se i dati diversi le operazioni hanno bisogno di accedere si trovano sulla stessa pagina -. non necessariamente sulla stessa riga

D'altra parte, quando si utilizza un livello di isolamento più basso, cursore di stabilità per esempio, si lascia aperta la possibilità che le righe avete precedentemente recuperati durante la transazione possono essere aggiornato da altre operazioni prima unità di lavoro ha completata.

Altri suggerimenti

Da provare. Non c'è modo siamo in grado di dirvi che cosa i potenziali rischi o problemi di prestazioni si potrebbe incorrere in un unico punto di dati (TRANSACTION ISOLATION LEVEL). Non sappiamo niente altro circa i dati, il volume di dati, TPS, dipendenze dei dati. Ogni volta che le prestazioni è una domanda, provare, misurarla. Non c'è altra risposta.

Per aggiungere a quanto è stato già detto: non è possibile eliminare i punti morti del tutto. Tutto quello che puoi fare è ridurre al minimo la probabilità per loro di accadere.

lettura ripetibile non sollevare blocchi condivisi dopo le letture erano state fatte.

Questo significa che se è stata eseguita una SELECT in una transazione RR, le transazioni concorrenti non saranno in grado di aggiornare le righe bloccate dal tuo SELECT.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top