Udostępnij za pośrednictwem


Kodowanie efektywne transakcji

Należy koniecznie zachować transakcji możliwie jak najkrótszy.Rozpoczęcie transakcji system zarządzania bazami danych (DBMS) musi posiadać wiele zasobów do zakończenia transakcji do ochrony niepodzielność, spójność, izolacji i trwałości (kwas) właściwości transakcji.Jeśli dane są modyfikowane, zmodyfikowanych wierszy musi być chroniony z wyłącznej blokady uniemożliwiających innych transakcji z wierszy do czytania i wyłącznej blokady muszą się odbyć, dopóki transakcja jest przekazana lub wycofana.W zależności od poziom izolacji transakcji ustawienia instrukcji SELECT może nabywać blokad, które muszą być utrzymywane do czasu transakcji jest przekazana lub wycofana.Szczególnie w systemach wielu użytkownikom transakcji muszą być utrzymywane tak krótkie jak jest to możliwe zmniejszenie blokowania rywalizacja o zasoby między jednoczesnych połączeń.Długotrwały, nieefektywne transakcji nie może być problem z małej liczby użytkowników, ale są one powodowania w systemie tysięcy użytkowników.

Wytyczne dotyczące programowania

Wytyczne dotyczące kodowania efektywne transakcje są:

  • Nie wymaga od użytkowników podczas transakcji.

    Aby uzyskać wszystkie wymagane dane wejściowe od użytkowników przed rozpoczęciem transakcji.Podczas transakcji jest wymagana interwencja użytkownika dodatkowe, wycofać transakcji bieżących i uruchomić ponownie transakcji po dostarczonych danych wejściowych użytkownika.Nawet jeśli użytkownicy odpowiadać natychmiast, ludzi czasy reakcji są znacznie wolniejsze od szybkości komputera.Wszystkie zasoby utrzymywane przez transakcję są utrzymywane przez bardzo długi czas, która może potencjalnie spowodować problemy z blokowaniem.Jeśli użytkownicy nie odpowiadają, transakcja pozostaje aktywna, blokowania zasobów krytyczna, dopóki nie odpowiedzą, co może się zdarzyć nie przez kilka minut lub nawet godziny.

  • Nie należy otwierać transakcji podczas przeglądania danych, to jeśli możliwe.

    Transakcje nie powinna być uruchamiana, dopóki wszystkie analizy wstępne dane zostały zakończone.

  • Zachowanie transakcji możliwie jak najkrótszy.

    Znając modyfikacje, które mają być dokonane, uruchomić transakcję, wykonać instrukcje modyfikacji, a następnie natychmiast zatwierdzanie lub wycofać.Nie otwieraj transakcji przed jest wymagany.

  • Aby zmniejszyć blokowanie, rozważyć poziom izolacji oparte na wersji wiersza kwerend tylko do odczytu.Aby uzyskać więcej informacji, zobacz Wiersz wersji na podstawie poziomów izolacji.

  • Wykorzystywać inteligentnego transakcji niższych poziomów izolacji.

    Wiele aplikacji można łatwo kodowane używać poziom izolacji transakcji zobowiązał się do odczytu.Nie wszystkie transakcje wymagają serializować poziom izolacji transakcji.

  • Wykorzystywać inteligentnego kursor niższe współbieżność opcje, takie jak opcje optymistycznej współbieżność.

    W systemie niskie prawdopodobieństwo równoczesnych aktualizacji narzutów zajmowanie okazjonalne "ktoś zmieniony danych po przeczytaniu go" błąd może być znacznie niższa niż obciążenie zawsze blokowania wiersze, jak są one odczytywane.

  • Dostęp do co najmniej ilość danych możliwe podczas transakcji.

    Rozluźnia liczby wierszy zablokowane, skracając rywalizacja między transakcjami.

Unikanie problemów zasobów i współbieżności

Aby uniemożliwić współbieżność i problemów z zasób, zarządzanie transakcjami niejawna ostrożnie.Podczas używania transakcji niejawne, następnej Transact-SQL instrukcja po COMMIT lub ROLLBACK automatycznie rozpoczyna nową transakcję.Może to spowodować nowej transakcji otwarcia podczas stosowania przegląda dane lub nawet wtedy, gdy wymaga interwencji użytkownika.Po zakończeniu ostatniej transakcji, które są wymagane do ochrony danych, modyfikacje, należy wyłączyć niejawna transakcji, dopóki transakcja jest ponownie wymagane do ochrony modyfikacji danych.Proces ten umożliwia Aparat baz danych programu SQL Server za pomocą tryb autozatwierdzania w czasie, gdy aplikacja jest przeglądanie danych oraz uzyskiwanie wejściowych od użytkownika.

Ponadto, jeśli poziom izolacji migawka jest włączone, chociaż nowa transakcja nie będzie zawierać blokad, transakcji długim uniemożliwi stare wersje usuwana z tempdb.

Zobacz także

Koncepcje