web-dev-qa-db-ja.com

同時トランザクションと同時トランザクション

David Kroenkeの第6章Database Concepts: Database Administration

私の理解は、データベースでは同時トランザクションが実際には起こらないことは正しいですか?その代わり、ユーザーが同時トランザクションであると考えるのは、高速で発生している同時トランザクションですか?

私が尋ねる理由は、同時トランザクションを実行するために必要なCPUの数を尋ねる私の割り当てに関する質問に失望したためです。それが実際に発生しているのは同時トランザクションではなく同時トランザクションなので、1つのCPUだけが必要であると答えましたか?

考え、誰か?

編集:jcolebrand-

@gbnおよび@Mark、

ご意見をお寄せいただきありがとうございます。これらの用語が何であるかはまったくわかりません。このコースは現在データベース管理の入門コースであり、私の質問は本の1段落でのみ説明されており、これ以上詳しく説明していません。あなたの反応はすぐに理解できるかもしれませんが、今はまだわかりません。ありがとう!

5
momo

あなたの課題の質問は貧弱で、予想される答えはおそらく間違っています。講師にお気軽にご相談ください!

本から:

同時トランザクションと同時トランザクションの違いを説明してください。同時トランザクションにはいくつのCPUが必要ですか?

予想される差異は次のとおりです。

  • 同時トランザクション=複数のトランザクションが同時にアクティブです。
  • 同時トランザクション=複数のトランザクションが同時に実行されます。

私の意見ではナフの質問。

私の理解は正しいですか、データベースでは同時トランザクションは実際には起こりません

もちろん、トランザクションは並行して同時に実行されます。問題は、同時コミットが発生するかどうかです。これは、@ gbnが彼の回答で取り組んでいることです。

@gbnは、2つの同時コミットが発生しないことを正しくifWALエントリがディスクに固定された時点でトランザクションがコミットされたと見なします。クラッシュリカバリの観点からは、トランザクションはこの時点で確実にコミットされます。障害が発生した場合、このトランザクションはロールバック(やり直し)ではなくロールフォワード(やり直し)になります。ディスクへの2つの書き込みが同時に発生することはないため、2つの同時コミットは発生しないと主張できます。

ただし、RDBMSがIOサブシステムによってWAL書き込みが正常に完了し、その間保持していたすべてのロックを解放したことを通知された時点でトランザクションがコミットされると主張することもできます。したがって、マルチCPU環境では、同時コミットが発生する可能性があります。

これがSQL Serverでどのように発生するかのメカニズムについては、 パフォーマンスチューニングの待機とキュー の「実行モデル(簡略化)」というタイトルのセクションで説明しています。 SQL Serverの人にとっても、概念を理解するには、いくつかの WRITELOG待機タイプのバックグラウンド読み取り が役立ちます。

4

先行ログの書き込み(WAL)のため、同時発生しません

WAL(RDBMSによってはトランザクションログ、ビンログなど)により、すべてのデータ変更が強制的にシリアル化され、後で再生またはロールバックできるようになります。

2つのコアサーバーでは、WALの書き込みが1つmustの前に発生するまで、競合が発生しないため、2つの書き込みが同時に発生する可能性があります。

より高い、ラッチとロックは同じ行/ページ/テーブルのデータ変更をシリアル化するかもしれません。

3
gbn