Database
 sql >> Database >  >> RDS >> Database

Suggerimenti per i blocchi di lettura/scrittura a seconda del livello di isolamento della transazione in MSSQL

Leggi senza impegno

  • Se i dati vengono modificati in una transazione, la selezione di questi dati (in un'altra transazione o senza transazione) non attenderà fino al termine della prima transazione e restituirà le voci di dati delle transazioni non vincolate.
  • Se i dati vengono letti in una transazione, gli aggiornamenti di questi dati nell'altra transazione non attenderanno fino al termine della prima transazione.
  • I blocchi condivisi non vengono utilizzati. Identico all'impostazione t lui NOLOCK suggerimento per tutte le selezioni in Read Committed.
  • I blocchi esclusivi vengono abilitati durante l'esecuzione dell'istruzione e disabilitati alla fine di del transazione .

Lettura impegnata + read_committed_snapshot off
(modifica database xxx imposta read_committed_snapshot off)

  • Se i dati vengono modificati in una transazione, la selezione di questi dati (in un'altra transazione o senza transazione) attenderà fino al termine della prima transazione. Seleziona Clicca con il NOCHECK suggerimento restituirà dati modificati, ma non vincolati.
  • Se i dati vengono letti in una transazione, gli aggiornamenti di questi dati nell'altra transazione non attenderanno fino al termine della prima transazione.
  • I blocchi condivisi vengono abilitati durante l'esecuzione dell'istruzione e disabilitati alla fine dello stato non esecuzione .
  • I lock esclusivi vengono abilitati durante l'esecuzione dell'istruzione e disabilitati al termine della transazione .

Leggi Impegnato + read_committed_snapshot su
(modifica il database xxx imposta read_committed_snapshot su)

  • Se i dati vengono modificati in una transazione, la selezione di questi dati (in un'altra transazione o senza transazione) non attenderà fino al termine della prima transazione e restituirà valori al momento t di il inizio transazione . Seleziona con il Suggerimento NOCHECK restituirà dati modificati, ma non vincolati.
  • Se i dati vengono letti in una transazione, gli aggiornamenti di questi dati nell'altra transazione non attenderanno fino al termine della prima transazione.
  • I blocchi condivisi non vengono utilizzati. Viene invece utilizzato il meccanismo di controllo delle versioni delle righe:i dati dei record aggiornati vengono archiviati in tempdb .
  • I blocchi esclusivi vengono abilitati durante l'esecuzione dell'istruzione e vengono disabilitati al termine della transazione .

Lettura ripetibile

  • Se i dati vengono modificati in una transazione, la selezione di questi dati (in un'altra transazione o senza transazione) attenderà fino al termine della prima transazione. Selezionare con il Il suggerimento NOLOCK restituirà dati modificati, ma non vincolati.
  • Se i dati vengono letti in una transazione, gli aggiornamenti di questi dati nell'altra transazione attenderanno fino al completamento della prima transazione.
  • I blocchi condivisi vengono abilitati durante l'esecuzione dell'istruzione e disabilitati alla fine della transazione , a differenza di Read Committed.
  • I lock esclusivi vengono abilitati durante l'esecuzione dell'istruzione e disabilitati al termine della transazione .

Serializzabile

  • Se i dati vengono modificati in una transazione, la selezione di questi dati (in un'altra transazione o senza transazione) attenderà fino al termine della prima transazione. Seleziona con il Il suggerimento NOLOCK sarà restituire dati modificati, ma non vincolati.
  • Se i dati vengono letti in una transazione, gli aggiornamenti di questi dati nell'altra transazione attenderanno fino al completamento della prima transazione.
  • I blocchi condivisi vengono abilitati durante l'esecuzione dell'istruzione e disabilitati al termine della transazione .
  • I blocchi esclusivi vengono abilitati durante l'esecuzione dell'istruzione e vengono disabilitati al termine della transazione.
  • I blocchi di intervallo esclusivi vengono abilitati per le chiavi che soddisfano l'intervallo di criteri di query. Non sono consentiti inserimenti di nuovi record che rientrano in questo intervallo. Identico all'impostazione il HOLDLO CK suggerimento per tutti i SELECT in Leggi Impegnato.

Istantanea
(modifica il database xxx imposta allow_snapshot_isolation su)

  • Se i dati vengono modificati in una transazione, la selezione di questi dati (in un'altra transazione o senza transazione) non attenderà fino al termine della prima transazione. e restituirà valori al momento di il inizio transazione . Seleziona con il Il suggerimento NOLOCK sarà restituire dati modificati, ma non vincolati.
  • Se i dati vengono letti in una transazione, gli aggiornamenti di questi dati nell'altra transazione non attenderanno fino al termine della prima transazione.
  • I blocchi condivisi non vengono utilizzati. Viene invece utilizzato il meccanismo di controllo delle versioni delle righe:i dati dei record aggiornati vengono archiviati in tempdb .
  • I blocchi esclusivi vengono abilitati durante l'esecuzione dell'istruzione e disabilitati al termine della transazione.

Testato su MSSQL 2014.