8

ユーザーの最新のアクティビティ時間を記録している SQL サーバー データベースにテーブルがあります。複数の更新要求が異なるユーザーから同時に受信された場合、SQL サーバーがシナリオを自動的に処理することを確認してください。このテーブルでは 25 ~ 50 の同時更新リクエストが予想されますが、各リクエストはテーブル内の異なる行の更新を担当します。接続プーリングなどの追加機能が必要ですか?

4

1 に答える 1

9

はい、Sql Server はこのシナリオを処理します。

これは SGDB であり、このようなシナリオを想定しています。

SQLで行を挿入/更新/削除すると、SQLはテーブル/行/ページをロックして、必要なことを実行できることを保証します。このロックは、行の挿入/更新/削除が完了すると解放されます。

このリンクを確認してください

そして、locking-in-sql-server の紹介

しかし、あなたがしなければならないことがいくつかあります:

1 - やりたいことをすぐに実行できるようにします。ロックの問題により、長時間接続したままにしておくと、完了するまで同じテーブルへの他のリクエストがロックされ、タイムアウトが発生する可能性があります。

2 - 常にトランザクションを使用します。

3 - インデックスの FILL FACTOR を調整してください。MSDN で FILL FACTOR を確認してください。

4 - 必要に応じて分離レベルを調整します。

5 - 未使用のインデックスを削除して、挿入/更新を高速化します。

接続プーリングは、あなたの質問とはあまり関係ありません。接続プーリングは、リクエストを送信するたびにデータベースへの新しい接続を作成する余分なオーバーヘッドを回避する手法です。ADO を使用する C# およびその他の言語では、これは自動的に行われます。これをチェックしてください:SQL Server Connection Pooling

役に立つかもしれない他のリンク:

SQL 2008 に大量のデータを挿入して更新するためのベスト プラクティス

インサートのパフォーマンスをスピードアップ

于 2012-10-26T12:54:15.733 に答える