2

同時実行制御とそれについていつ心配するかについて質問があります。PHP / MySQLサイト(InnoDB)を作成しました。トランザクションの問題を回避する方法については知っていますが、同時実行制御があります。

私のサイトは、例として、ユーザーが挿入した商品を保持するEコマースです。ユーザーがサイトに新しいアイテムを挿入すると、DBは主キーとしてproductIdを作成し(DBによって自動インクリメントされます)、フォームを介して送信されたその製品に関するその他のデータを保存します。プリペアドステートメントを使用しています。

2人以上のユーザーがまったく同時にこれを行っているかどうかを心配する必要がありますか?2つ以上のアイテムを同時に送信すると、異なる行のデータが台無しになる可能性はありますか?

製品を挿入できるようにするには、質問に関係がある場合、ユーザーはセッションを使用してログインする必要があります。

よろしくお願いします、マーカス。

4

2 に答える 2

3

彼らがまったく同じ行に書き込んでいない限り、並行性の問題が発生する理由はわかりません。同じ行に書き込んでいたとしても、InnoDBには行レベルのロックが設定されています。つまり、ユーザーが書き込みを完了するまで行がロックされ、後続のユーザーはロックが完了するまで「待機」します。リリースされました。「INSERTクエリの競合」の可能性に関して:自動インクリメントの主キーを使用しているテーブルに新しいデータを挿入する場合、毎回一意のIDを取得することが保証されます。つまり、同時実行は絶対に行わないでください。 INSERTで問題になります。

于 2012-11-15T17:50:48.767 に答える
2

更新時に特に役立つ高速テーブルロックを実行できます

于 2012-11-15T17:54:31.297 に答える