0

ゲームのプレーヤーのインベントリにアイテムを配置するためのシステムを作成していますが、個別のクエリがSQLServerでのトランザクションの実行にどのように影響するのか疑問に思っています。例えば:

  1. トランザクションを開始します
  2. ユーザーからのお金とゲーム内のステータスを照会します(オフラインである必要があります)
  3. インベントリにいくつかのアイテムを追加します。
  4. そのお金を減らす
  5. コミット

しかし、ゲームサーバー全体には、在庫、お金、プレーヤーのステータスの更新など、トランザクションなしで実行される多数の個別のクエリとサブシステムがあります。

トランザクションはどの程度正確に機能しますか?つまり、C ++のクリティカルセクションと同じように、ロックするオブジェクト(この場合は私のプロシージャ)が必要ですか、それとも個別のクエリに対してもロックしますか?更新時にすべてをトランザクション内に配置する必要がありますか?

私はプログラミングに関連するすべてのことを独学で学んでいるので、何かが見落とされます。ごめん。

ありがとうございました。

4

1 に答える 1

1

私の理解では、データベース内のトランザクションは、「オールオアナッシング」方式で処理される単一またはグループのクエリです。つまり、クエリの1つが機能しない場合、データベースはロールバックされます。それらが起こる前の状態に。ロックは必ずしもすべてのトランザクションで使用する必要はありませんが、データベースの変更が重要であり、他のプロセスまたはクエリがロックの影響を受けるデータを変更する前に実行する必要がある場合に使用されます。

これをさらによく説明するかもしれない記事があります:

于 2012-08-20T17:20:35.110 に答える