Database
 sql >> Baza danych >  >> RDS >> Database

Wskazówki dotyczące blokad odczytu/zapisu w zależności od poziomu izolacji transakcji w MSSQL

Czytaj bez zobowiązań

  • Jeżeli dane są zmieniane w jednej transakcji, wybór tych danych (w innej transakcji lub bez transakcji) nie będzie czekał na zakończenie pierwszej transakcji i zwróci wpisy danych niezatwierdzonych transakcji.
  • Jeśli dane są odczytywane w jednej transakcji, aktualizacje tych danych w innej transakcji nie będą czekać do zakończenia pierwszej transakcji.
  • Blokady współdzielone nie są używane. Identyczne z ustawieniem t on NOLOCK wskazówka dla wszystkie wybory w Odczytie zatwierdzonym.
  • Blokady na wyłączność są włączane podczas wykonywania instrukcji i wyłączane na końcu w transakcja .

Przeczytaj zatwierdzone + read_committed_snapshot wyłączone
(zmień bazę danych xxx wyłącz read_committed_snapshot)

  • Jeżeli dane są zmieniane w jednej transakcji, wybór tych danych (w innej transakcji lub bez transakcji) poczeka na zakończenie pierwszej transakcji. Wybierz ct z NOCHECK wskazówka zwróci zmodyfikowane, ale niezaangażowane dane.
  • Jeśli dane są odczytywane w jednej transakcji, aktualizacje tych danych w innej transakcji nie będą czekać do zakończenia pierwszej transakcji.
  • Współdzielone blokady są włączane podczas wykonywania instrukcji i wyłączane na końcu instrukcji nie wykonanie .
  • Wyłączne blokady są włączane podczas wykonywania wyciągu i wyłączane pod koniec transakcji .

Przeczytaj zatwierdzone + read_committed_snapshot włączone
(zmień bazę danych xxx włącz read_committed_snapshot)

  • Jeżeli dane są zmieniane w jednej transakcji, zaznaczenie tych danych (w innej transakcji lub bez transakcji) nie będzie czekać na zakończenie pierwszej transakcji i zwróci wartości w tej chwili t z rozpoczęcie transakcji . Wybierz za pomocą Podpowiedź NOCHECK zwróci zmodyfikowane, ale niezaangażowane dane.
  • Jeśli dane są odczytywane w jednej transakcji, aktualizacje tych danych w innej transakcji nie będą czekać do zakończenia pierwszej transakcji.
  • Blokady współdzielone nie są używane. Zamiast tego używany jest mechanizm wersjonowania wierszy – dane zaktualizowanych rekordów są przechowywane w tempdb .
  • Wyłączne blokady są włączane podczas wykonywania wyciągu i są wyłączane na koniec transakcji .

Powtarzalny odczyt

  • Jeżeli dane są zmieniane w jednej transakcji, wybór tych danych (w innej transakcji lub bez transakcji) poczeka na zakończenie pierwszej transakcji. Wybierz za pomocą Podpowiedź NOLOCK zwróci zmodyfikowane, ale niezatwierdzone dane.
  • Jeśli dane są odczytywane w jednej transakcji, aktualizacje tych danych w innej transakcji będą czekać do zakończenia pierwszej transakcji.
  • Współdzielone blokady są włączane podczas wykonywania wyciągu i wyłączane na koniec transakcji , w przeciwieństwie do odczytu zatwierdzonego.
  • Wyłączne blokady są włączane podczas wykonywania wyciągu i wyłączane pod koniec transakcji .

Możliwość serializacji

  • Jeżeli dane są zmieniane w jednej transakcji, wybór tych danych (w innej transakcji lub bez transakcji) poczeka na zakończenie pierwszej transakcji. Wybierz za pomocą Podpowiedź NOLOCK będzie zwróć zmodyfikowane, ale niezaangażowane dane.
  • Jeśli dane są odczytywane w jednej transakcji, aktualizacje tych danych w innej transakcji będą czekać do zakończenia pierwszej transakcji.
  • Współdzielone blokady są włączane podczas wykonywania wyciągu i wyłączane na koniec transakcji .
  • Wyłączne blokady są włączane podczas wykonywania wyciągu i są wyłączane pod koniec transakcji.
  • Wyłączne blokady zakresu są włączone dla kluczy spełniających zakres kryteriów zapytania. Wstawianie nowych rekordów mieszczących się w tym zakresie jest niedozwolone. Identyczne z ustawieniem WSTRZYMAJ CK wskazówka dla wszystkich SELECT w Przeczytaj Zaangażowane.

Migawka
(zmień bazę danych xxx włącz allow_snapshot_isolation)

  • Jeżeli dane są zmieniane w jednej transakcji, wybór tych danych (w innej transakcji lub bez transakcji) nie będzie czekał na zakończenie pierwszej transakcji. i zwróci wartości w tej chwili z rozpoczęcie transakcji . Wybierz za pomocą Podpowiedź NOLOCK będzie zwróć zmodyfikowane, ale niezaangażowane dane.
  • Jeśli dane są odczytywane w jednej transakcji, aktualizacje tych danych w innej transakcji nie będą czekać do zakończenia pierwszej transakcji.
  • Blokady współdzielone nie są używane. Zamiast tego używany jest mechanizm wersjonowania wierszy – dane zaktualizowanych rekordów są przechowywane w tempdb .
  • Wyłączne blokady są włączane podczas wykonywania wyciągu i wyłączane pod koniec transakcji.

Testowane na MSSQL 2014.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ScaleGrid na liście finalistów programu Cloud Awards 2017-2018

  2. Przywróć kopię swojej bazy danych

  3. Schemat płatka śniegu

  4. Porównywanie obiektów według wartości. Część 6:Wdrażanie równości struktury

  5. Jak osiągnąć automatyczne przełączanie awaryjne dla TimescaleDB?