0

MyISAM ストレージ エンジンを使用する MySQL データベースを使用しています。複数テーブルの削除構文を使用します。これまでのところ、一度に複数の子テーブルから削除する必要がある場合にのみ使用しました。しかし、1 つのクエリで複数の子テーブルと親テーブルから削除するために使用することを検討していました。

最近、SO やその他のフォーラムで、一度に複数のテーブルから削除するのは良くないという投稿をいくつか見かけました。しかし、推奨されない理由を説明しているポスターはありません。

テーブルが処理される順序を制御できないため、外部キー制約を持つ InnoDB テーブルを含む複数テーブルの削除に問題がある可能性があることを理解しています。明らかに、それは私の場合は問題ではありません。

複数のテーブルを削除すると、すべてのテーブルから削除されるか、まったく削除されないと考えていました。しかし、それが本当かどうかの情報は見つかりません。部分的に成功すると、データが破損します。

複数の MyISAM テーブルから一度に削除するのは悪い考えですか? それは常に悪い考えですか、それとも親子関係がある場合のみですか? 理由を説明してください。

記録として、InnoDB への変更は、現時点ではこのプロジェクトのオプションではありません。

4

1 に答える 1

1

私が見ることができる1つの考えられる問題は、グリッチ(サーバーの故障、停電など)があり、関連する子レコードの前に(親テーブルから)親レコードをすでに削除している場合、あなたは何を持っているかということですorphan record(s)関連する子レコード/テーブルが親レコード/テーブルに関連付けられなくなったことを意味するものとして知られています。親テーブル/レコードの前に子テーブル/レコードを最初に削除すると、これを克服できます。

もう1つはperformance issueMyISAMテーブルレベルのロックを使用しているため、(複数のテーブルから)複数のレコードを削除すると、いくつかのソースから削除するよりもアクセス時間のパフォーマンスが低下する可能性が高くなります.

于 2013-06-13T03:54:34.437 に答える