0

競合状態が何であるかは知っていますが、まだ完全には理解していません:

まず、myisamはトランザクションをサポートしていませんが、innodbはサポートしています。

多くのユーザーを念頭に置いてソーシャル サイトを構築していますが、ユーザーは ON DUPLICATE KEY UPDATE でプロファイルを更新するため、競合状態について考える必要があるのではないかと考えていますが、競合状態が発生するかどうか、またどのようにこの問題から保護するためのコードを記述しますか?

COMMIT、ROLLBACKなどの使用など、複数のユーザーがいるサイトでの競合状態の概念を誰かが説明してもらえますか.

これらのものはどこで使用しますか?

4

1 に答える 1

0

まず、myisam はトランザクションをサポートしていませんが、innodb はサポートしています。

それは良いスタートです。InnoDB を使用することをお勧めします。トランザクションは、データベースの変更を原子的かつ一貫性のあるものにします。また、トランザクションは分離を保証するため、データベースのユーザーは別のユーザーの変更に干渉できません。

マルチスレッドがある場合、競合状態が発生する可能性があります。はい、データベースは複数のスレッドを使用しますが、トランザクションは、あるユーザーのデータベースの変更が別のユーザーのデータベースの変更前に行われることを保証します。(はい、それは単純化された論理的な説明です。)

追加するために編集: 他のスタック オーバーフローの質問で特定の SQL の質問をすることができますが、一般に、INSERT、UPDATE、または DELETE SQL ステートメントの後、できるだけ早く COMMIT する必要があります。

于 2011-10-07T15:11:58.080 に答える