Udostępnij przez


Kodowanie energooszczędny transakcji

Ważne jest zachować możliwie najkrótsze transakcji.Po rozpoczęciu transakcji systemu zarządzania bazami (danych DBMS) musi posiadać wiele zasobów do czasu zakończenia transakcji do ochrony niepodzielność, spójność, izolacja i trwałości (ACID) właściwości transakcji.Jeśli dane są modyfikowane, zmodyfikowanych wierszy musi być chronione przy użyciu wyłącznej blokady uniemożliwiających inne transakcje z wierszy do czytania i muszą znajdować się wyłącznej blokady, aż do chwili, kiedy transakcja jest przekazana lub wycofana.W zależności od ustawień poziom izolacji transakcji instrukcji SELECT, może uzyskać blokad, które muszą być przechowywane aż do chwili, kiedy transakcja jest przekazana lub wycofana.Szczególnie w systemach z wielu użytkowników transakcje należy zachować możliwie zmniejszyć blokowania rywalizacji o zasoby między jednoczesnych połączeń krótki.Mało wydajna, długim transakcji nie może być problem z małej liczby użytkowników, ale są one powodowania w systemie z tysiące użytkowników.

Wskazówki dotyczące programowania

Są to zasady kodowania efektywne transakcji:

  • Nie wymagają danych wejściowych od użytkowników podczas transakcji.

    Pobierz wszystkie wymagane dane wejściowe od użytkowników przed rozpoczęciem transakcji.Dane wprowadzone przez użytkownika dodatkowych jest wymagane podczas transakcji, cofnąć bieżącej transakcji i uruchomić ponownie transakcji po danych wprowadzanych przez użytkownika jest dostarczana.Nawet wtedy, gdy użytkownicy odpowiadają natychmiast, ludzi czasy reakcji są zasadniczo mniejsza od szybkości komputera.Wszystkie zasoby utrzymywane przez transakcję są przetrzymywane przez bardzo długi czas, może potencjalnie spowodować problemy blokujące.Jeśli użytkownicy nie odpowiadają, transakcja pozostaje aktywny, blokowanie krytycznych zasobów do czasu ich odpowiedzi, które może się zdarzyć nie przez kilka minut lub nawet godziny.

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

    Nie należy uruchamiać transakcji, dopóki nie zostanie zakończona analizę wstępne dane.

  • Zachować możliwie najkrótsze transakcji.

    Po znasz modyfikacje, które mają być wykonane, uruchomić transakcję, wykonać instrukcje modyfikacji i następnie natychmiast przekazać lub wycofać.Nie należy otwierać transakcji, zanim stanie się konieczna.

  • Aby zmniejszyć blokowanie, warto rozważyć użycie poziom izolacji na przechowywanie wersji wiersza do kwerendy tylko do odczytu.Aby uzyskać więcej informacji zobaczZa pomocą wiersza oparte na wersji poziomy izolacji.

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

    Wiele aplikacji może być łatwo kodowane używać poziom izolacji transakcji popełnionych odczytu.Nie wszystkie transakcje wymagają poziom izolacji transakcji możliwy do serializacji.

  • Sprawdź inteligentne użycia kursor niższe współbieżność opcje, takie jak opcje optymistycznej współbieżność.

    W systemie z niskim prawdopodobieństwo równoczesnych aktualizacji obciążenie związane z zajmujących sporadyczny błąd "ktoś inny zmienił dane po przeczytaniu jego" może być znacznie niższa niż koszty zawsze zablokowania wierszy, ponieważ są one odczytywane.

  • Dostęp do co najmniej ilość danych, można jednocześnie w ramach transakcji.

    To rozluźnia liczby wierszy zablokowane, a tym samym zmniejszenia rywalizacji między transakcjami.

Unikanie Współbieżność i problemy dotyczące zasób

Aby zapobiec współbieżność i problemy z zasobami, zarządzanie transakcjami niejawna ostrożnie.Podczas korzystania z transakcji niejawne, przy następnym Transact-SQL Instrukcja po zatwierdzanie lub ROLLBACK automatycznie rozpoczyna nową transakcję. Może to spowodować, że nowa transakcja ma zostać otwarty, gdy aplikacja przegląda dane lub nawet wtedy, gdy wymaga danych wejściowych od użytkownika.Po zakończeniu ostatniej transakcji wymaganych do ochrony danych, modyfikacje, należy wyłączyć niejawna transakcji, dopóki transakcja ponownie jest wymagany do ochrony modyfikacji danych.Ten proces umożliwia SQL Server Database Engine tryb automatycznego zatwierdzania w czasie, gdy aplikacja jest przeglądanie danych i uzyskiwanie dane wejściowe od użytkownika.

Ponadto gdy poziom izolacji migawka jest włączona, mimo że jest nowa transakcja nie będzie wyświetlał blokady, transakcji długim uniemożliwi stare wersje usunięcie z tempdb.

See Also

Concepts