Udostępnij za pośrednictwem


Minimalizowanie zakleszczenia

Chociaż nie można całkowicie uniknąć zakleszczenie, po niektórych konwencje kodowania można zminimalizować prawdopodobieństwo generowania zakleszczenie.Minimalizowanie zakleszczenia można zwiększyć przepustowość transakcji i zmniejszyć obciążenie systemu, ponieważ są mniej transakcji:

  • Wycofana, cofanie wszystkie prace wykonywane przez transakcję.

  • Ponowne przesłanie przez aplikacje, ponieważ zostały one wycofywany po zakleszczone.

Aby zminimalizować zakleszczenia:

  • Obiekty programu Access w takiej samej kolejności.

  • Uniknięcia interakcji użytkownika w transakcjach.

  • Zachowaj transakcji krótkich i jednej partia.

  • Użyj niższy poziom izolacji.

  • Użyj wiersza na podstawie wersji poziom izolacji.

    • Ustaw opcję bazy danych READ_COMMITTED_SNAPSHOT do transakcji popełnione odczytu Włącz używania wersji wiersza.

    • Użyj izolacji migawka.

  • Stosowanie związanych połączenia.

Obiekty programu Access w takiej samej kolejności

Jeśli wszystkie transakcje równoczesnych dostępu do obiektów w tej samej kolejności, zakleszczenia są mniej prawdopodobne.Na przykład, jeśli dwa jednoczesnych transakcji uzyskać blokada na dostawcy tabela a następnie na części tabela, jedna transakcja jest zablokowany na dostawcy tabela do momentu zakończenia innych transakcji.Po pierwszej transakcji zatwierdza lub wycofuje, drugi kontynuuje i Zakleszczenie występuje.Przy użyciu procedury przechowywane dla wszystkich modyfikacji danych można standaryzacji kolejność dostępu do obiektów.

Diagram pokazujący sposób unikania zakleszczenia

Uniknięcia interakcji użytkownika w transakcjach

Unikaj pisania transakcje obejmujące interakcji użytkownika, ponieważ szybkość partii bez interwencji użytkownika jest znacznie szybsze niż szybkość, z jaką użytkownik musi ręcznie odpowiadać na kwerendy, takie jak odpowiadanie na monit dla parametru żądanych przez aplikację.Na przykład jeśli transakcja jest oczekiwanie na dane wejściowe użytkownika i użytkownik przechodzi do obiad lub nawet home dla weekend, użytkownik opóźnia ukończenie transakcji.Obniża wydajność systemu, ponieważ wszystkie blokady przechowywane przez transakcji są dopuszczone tylko wtedy, gdy transakcja jest przekazana lub wycofana.Nawet jeśli zakleszczenie nie powstać sytuacja, inne transakcje, dostęp do tych samych zasobów są blokowane podczas oczekiwania na zakończenie transakcji.

Zachowaj transakcji krótkich i jedną partię

Zakleszczenie występuje zazwyczaj, gdy kilka transakcji długim wykonać jednocześnie w tej samej bazy danych.Dłuższy transakcji dłuższy blokad wyłączne lub aktualizacji są utrzymywane, blokowanie innych działań i prowadzące do sytuacji możliwe zakleszczenie.

Prowadzenie transakcji w jednej partia minimalizuje natężenie ruchu w sieci podczas transakcji, zmniejszając możliwych opóźnień w wykonanie transakcji i zwalnianie blokad.

Użyj niższy poziom izolacji

Określić, czy w dolnym można uruchomić transakcji poziom izolacji.Wykonawczych odczytać popełnione umożliwia transakcji do odczytu danych wcześniej odczytu (nie zmodyfikowane) przez inną transakcję bez oczekiwania na pierwszej transakcji zakończyć.Przy użyciu niższego poziomu izolacji, takich jak Odczyt zatwierdzone, takich jak posiada blokady współużytkowane przez okres krótszy niż wyższy poziom izolacji możliwy do serializacji.Zmniejsza to blokowanie rywalizacja.

Użyj wiersza na podstawie wersji poziom izolacji

Gdy opcja READ_COMMITTED_SNAPSHOT bazy danych jest zestaw , transakcji w odczytu popełnione wersji wiersza używa poziomu izolacji zamiast współużytkowane blokady podczas operacji odczytu.

Ostrzeżenie

Niektóre aplikacje opierają się na blokowanie i blokowanie zachowanie odczytu popełnione izolacji.Te aplikacje niektórych zmian jest wymagane przed włączeniem tej opcji.

Migawki izolacji używa również wersji wiersza, w której blokady współużytkowane nie jest używany podczas operacji odczytu.Zanim transakcji można uruchomić w izolacji migawka, opcja ALLOW_SNAPSHOT_ISOLATION bazy danych musi być zestaw ON.

Wdrożenie tych poziomów izolacji, aby zminimalizować zakleszczenia, które mogą występować między odczytu i operacji zapisu.

Stosowanie związanych połączenia

Korzystanie z połączeń związanych połączenia dwóch lub więcej otwartych przez ten sam wniosek może współpracować ze sobą.Wszystkie blokady nabyte przez pomocnicze połączenia są utrzymywane, jak gdyby zostały one nabyte podstawowego połączenia i odwrotnie.Dlatego nie były blok siebie nawzajem.