DELETE FROM some_table
を実行してタイムアウトすると、データはどうなりますか?SQL DELETEクエリがタイムアウトすると、データはどうなりますか?
:
1,000,000データベース内のエントリと最初のがあったので、もしデータが、どこのクエリがタイムアウトまでに削除されます500,000件が削除されても、削除されたままになります。データベースには、クエリが実行される前の半分の時間が含まれています。
データが削除され、クエリがタイムアウトし、データがロールバックされます(
DELETE
によって作成されたログから推測されます)。データベースには、それが開始したのとまったく同じデータが含まれるようになりました。
どちらも論理的です。 1つは時間の100%起こるでしょうか?またはこれは私が気付いていない設定に依存していますか?私がDELETE
の実行可能性について質問していないことに注意してください。私はTRUNCATE
がおそらく適切であると認識しています。これは純粋にDELETE
のタイムアウト機能の好奇心から外れています。
mysqlはACIDデータベースです。個々のクエリ文は完全であるか、まったく何もしません。 –
@Marc:厳密には、使用されているエンジンによって異なります。 – sstan
* timeout *は、トランザクションが中止された場合、DELETEがロールバックされることを意味します。 – dnoeth