2012-12-13 16 views
6

Mam działanie w mojej aplikacji .net, która tworzy rekord w dwóch różnych tabelach serwera sql. Jaka jest tutaj najlepsza praktyka?2 połączenia lub pojedyncze połączenie z serwerem sql

Czy jedna procedura składowana powinna utworzyć oba rekordy? LUB Czy inna procedura składowana powinna utworzyć każdy rekord w odpowiedniej bazie danych i zawijać oba wywołania w transakcji, więc jeśli jeden z nich się nie powiedzie, to obydwa zawodzą?

Który jest bardziej wydajny?

+12

Prawdopodobnie chcesz tran saction. Jest to prawie na pewno przedwczesna optymalizacja; rób to w sposób, który jest czystszy. Uruchom profilera, używając obu podejść, aby uzyskać prawdziwe statystyki wydajności w swoim środowisku operacyjnym, jeśli jesteś naprawdę ciekawy. –

Odpowiedz

1

Przechowywany proces będzie zdecydowanie bardziej wydajny. Doprowadzi to również do mniejszego kodu, który musisz napisać po stronie serwera. Wadą jest to, że musisz albo wiedzieć, jak napisać SQL sam, albo mieć DBA, z którym pracujesz, kto może napisać to dla ciebie.

Jeśli chodzi o twoje drugie pytanie, będzie to 1 zapisany proces, który zostanie wstawiony do obu tabel.

Kolejna sprawa do rozważenia: JEŚLI musisz zrobić mnóstwo takich rzeczy w całym kodzie, może warto nauczyć się dobrej ORM i zrobić to wszystko w kodzie (opcja 2). Ale jeśli jest to rodzaj jednorazowej rzeczy, którą robisz tylko w garści miejsc, zapisany proces będzie mądrzejszy.

0

Lepiej jest mieć swoją logikę w procedurze przechowywanej w SQL Serverze i zdefiniować zakres transakcji, a kiedy to działanie zostanie uruchomione w aplikacji .net, wykonaj operację w procedurze przechowywanej i jeśli te dwie akcje zakończyły się pomyślnie, prześlij transakcję, w przeciwnym razie ta transakcja jest wycofana. Ponieważ w ten sposób masz lepszą wydajność. za pomocą procedury przechowywanej według dokumentów Microsoft ma pewne zalety, jak wymienione poniżej:

  • wykonania planu zatrzymywania i ponownego
  • Zapytanie auto-parametryzacji
  • Encapsulation zasad i polityk gospodarczych
  • modularyzacja Zastosowanie
  • Udostępnianie logika aplikacji między aplikacjami
  • Dostęp do obiektów bazy danych, które są zarówno bezpieczne, jak i jednolite:
  • spójne, bezpieczne dane modyfikacji
  • ochrona pasma
  • Network
  • Wsparcie dla automatycznego wykonywania w systemie start-up
  • Rozszerzone możliwości sprzętowe i programowe
  • Poprawa bezpieczeństwa
  • Redukcja kosztów rozwoju i zwiększona niezawodność
  • Scentralizowane bezpieczeństwo, administracja i konserwacja dla zwykłych procedur
Powiązane problemy