6

私の .net アプリケーションには、2 つの異なる SQL サーバー テーブルにレコードを作成するアクションがあります。ここでのベストプラクティスは何ですか?

1 つのストアド プロシージャで両方のレコードを作成する必要がありますか? または、別のストアド プロシージャが該当するデータベースに各レコードを作成し、両方の呼び出しをトランザクションにラップして、一方が失敗すると両方が失敗するようにする必要がありますか?

どれがより高性能ですか?

4

2 に答える 2

1

ストアド プロシージャの方が確実にパフォーマンスが向上します。また、サーバー側で記述しなければならないコードが少なくなります。欠点は、SQL を自分で作成する方法を知っているか、一緒に SQL を作成できる DBA が必要になることです。

他の質問に関しては、両方のテーブルに挿入する 1 つのストアド プロシージャになります。

考慮すべきもう 1 つの点: コード全体でこのようなことを大量に行う必要がある場合は、適切な ORM を学習し、これをすべてコードで実行する価値があるかもしれません (オプション 2)。しかし、これが一握りの場所でのみ行う 1 回限りのことである場合は、ストアド プロシージャの方が賢明なアプローチになります。

于 2012-12-13T01:00:27.350 に答える
0

SQL Server のストアド プロシージャにロジックを配置し、トランザクション スコープを定義することをお勧めします。.net アプリケーションでトリガーされたこのアクションがストアド プロシージャで操作を実行し、この 2 つのアクションが正常に終了した場合はトランザクションを送信します。それ以外の場合、このトランザクションはロールされます。 -戻る。このようにして、パフォーマンスが向上するからです。Microsoft のドキュメントに従ってストアド プロシージャを使用すると、次のような利点があります。

  • 実行計画の保持と再利用
  • クエリの自動パラメータ化
  • ビジネス ルールとポリシーのカプセル化
  • アプリケーションのモジュール化
  • アプリケーション間でのアプリケーション ロジックの共有
  • 安全で均一なデータベース オブジェクトへのアクセス
  • 一貫性のある安全なデータ変更
  • ネットワーク帯域幅の節約
  • システム起動時の自動実行に対応
  • 強化されたハードウェアおよびソフトウェア機能
  • セキュリティの向上
  • 開発コストの削減と信頼性の向上
  • 一般的なルーチンのセキュリティ、管理、メンテナンスを一元化
于 2012-12-13T03:55:14.247 に答える