2012-12-13 4 views
6

Ich habe eine Aktion in meiner .net-Anwendung, die einen Datensatz in 2 verschiedenen SQL-Server-Tabellen erstellt. Was ist die beste Vorgehensweise hier?2 Anrufe oder ein einzelner Anruf an SQL-Server

Sollte die eine gespeicherte Prozedur beide Datensätze erstellen? OR Sollte eine andere gespeicherte Prozedur jeden Datensatz in der entsprechenden Datenbank erstellen und beide Aufrufe in eine Transaktion umbrechen, wenn beide fehlschlagen, schlagen beide fehl?

Welcher ist der leistungsfähigere?

+12

Sie möchten wahrscheinlich eine tran sowieso. Dies ist mit ziemlicher Sicherheit eine vorzeitige Optimierung; Mach es so, dass es sauberer ist. Führen Sie einen Profiler mit beiden Methoden aus, um echte Leistungsstatistiken in Ihrer Betriebsumgebung zu erhalten, wenn Sie wirklich neugierig sind. –

Antwort

1

Ein gespeicherter Proc wird definitiv leistungsfähiger sein. Es führt auch zu weniger Code, den Sie serverseitig schreiben müssen. Der Nachteil ist, dass Sie jetzt entweder wissen müssen, wie Sie das SQL selbst schreiben, oder ob Sie einen DBA haben, mit dem Sie arbeiten, der es für Sie schreiben kann.

In Bezug auf Ihre andere Frage wäre es 1 gespeichert Proc, die in beiden Tabellen eingefügt.

Eine andere Sache zu beachten: Wenn Sie eine Menge Dinge wie diese in Ihrem Code tun müssen, könnte es sich lohnen, ein gutes ORM zu lernen und dies alles in Code (Option 2). Aber wenn das eine Art von etwas ist, was Sie nur an einer Handvoll von Orten tun, wird der gespeicherte Prozess ein klügerer Ansatz sein.

0

Es ist besser, Ihre Logik in Stored Procedure in SQL Server zu haben und den Transaktionsbereich zu definieren. Wenn diese Aktion in .net-Anwendung ausgelöst wird, wird die Operation in der gespeicherten Prozedur ausgeführt Diese Transaktion wird zurückgesetzt. Weil auf diese Weise Sie eine bessere Leistung haben. unter Verwendung der gespeicherten Prozedur nach Microsoft-Dokumenten hat einige Vorteile, wie unten aufgeführt:

  • Ausführungsplan Retention und Wiederverwendung
  • Abfrage Auto-Parametrisierung
  • Einkapselung von Geschäftsregeln und Richtlinien
  • Anwendung Modularisierung
  • Austausch von Anwendungslogik zwischen Anwendungen
  • Zugriff auf Datenbankobjekte, die sowohl sicher als auch einheitlich sind
  • Konsistente, sichere Datenänderung
  • Netzwerk Bandbreite Erhaltung
  • Unterstützung für die automatische Ausführung beim Systemstart-up
  • Verbesserte Hardware- und Software-Funktionen
  • Verbesserte Sicherheit
  • Reduzierte Entwicklungskosten und eine erhöhte Zuverlässigkeit
  • Zentralisierte Sicherheit, Verwaltung und Wartung für allgemeine Routinen
Verwandte Themen