Share via


Impostazione del livello di isolamento delle transazioni

Per impostare il livello di isolamento delle transazioni, un'applicazione usa l'attributo di connessione SQL_ATTR_TXN_ISOLATION. Se l'origine dati non supporta il livello di isolamento richiesto, il driver o l'origine dati possono impostare un livello superiore. Per determinare quali livelli di isolamento delle transazioni sono supportati da un'origine dati e qual è il livello di isolamento predefinito, un'applicazione chiama SQLGetInfo rispettivamente con le opzioni SQL_TXN_ISOLATION_OPTION e SQL_DEFAULT_TXN_ISOLATION.

Livelli più elevati di isolamento delle transazioni offrono la massima protezione per l'integrità dei dati del database. Le transazioni serializzabili sono sicuramente non interessate da altre transazioni e pertanto garantiscono di mantenere l'integrità del database.

Tuttavia, un livello superiore di isolamento delle transazioni può causare prestazioni più lente, perché incrementa le probabilità che l'applicazione dovrà attendere il rilascio dei blocchi sui dati. Un'applicazione può specificare un livello di isolamento inferiore per migliorare le prestazioni nei casi seguenti:

  • Quando è possibile garantire che non esistano altre transazioni che potrebbero interferire con le transazioni di un'applicazione. Questa situazione si verifica solo in circostanze limitate, ad esempio quando una persona di una piccola società gestisce file dBASE contenenti dati del personale in un computer e non condivide questi file.

  • Quando la velocità riveste un ruolo più cruciale rispetto all'accuratezza ed è probabile che eventuali errori siano di dimensioni ridotte. Si supponga, ad esempio, che un'azienda effettui molte piccole vendite e che le vendite di grandi dimensioni siano rare. Una transazione che stima il valore totale di tutte le vendite aperte potrebbe usare in modo sicuro il livello di isolamento Read Uncommitted. Anche se la transazione include gli ordini che vengono aperti o chiusi e successivamente viene eseguito il rollback, questi in genere si annullano l'uno con l'altro e la transazione sarà molto più veloce perché non viene bloccata ogni volta che incontra tale ordine.

Per altre informazioni, vedere Concorrenza ottimistica.