2

これはかなり基本的な質問のように思えますが、私には答えがわかりません。

一部のデータをループしてから、データベース内のレコードに対して UPDATE を実行するスクリプトを PHP で作成しました。約 150,000 件のレコードがあるため、スクリプトの完了には確かに時間がかかります。

基本的な SELECT ステートメントを実行すると、データの挿入に悪影響を及ぼしたり、妨害したりする可能性はありますか?

たとえば...スクリプトが適切に機能していることを確認したいので、基本的な SELECT COUNT() を実行して、スクリプトの実行中にリアルタイムで増加しているかどうかを確認します。これは可能ですか、それとも何かを台無しにしますか?

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

4

1 に答える 1

1

一般に、SQL インジェクションの問題SELECTについて話しているのでない限り、呼び出しは「害を及ぼす」ことはできません。

使用する必要がある InnoDB エンジンには、Multi-Version Concurrency Controlまたは略して MVCCと呼ばれるものがあります。これは、UPDATEステートメントが終了するまで、またはステートメントが含まれるトランザクションが終了するまでSELECT、最後の一貫したデータベース状態に対して実行されることを意味します。

SELECTMyISAMを使用している場合、これはエンジンの制限と、ロールバック ジャーナルなしでデータを保存する方法のため、ほとんどの実稼働環境では非常に悪い考えですUPDATE。 MVCC。

于 2013-01-24T18:26:36.317 に答える