トランザクション中に電源が落ちた場合、InnoDB および MyISAM テーブルはどうなりますか?

トランザクション中に電源が落ちた場合、InnoDB および MyISAM テーブルはどうなりますか?

MySQL テーブルが 2 つあります。1 つは InnoDB、もう 1 つは MyISAM です。両方のテーブルで 1 つのトランザクションで大量の挿入を実行し、途中で電源が落ちた場合、ステータスはどうなりますか?

InnoDB および MyISAM テーブルに新しく挿入されたデータはどうなるでしょうか?

答え1

Innodb はトランザクション データベースであり、データベースの変更をトランザクション ログ ファイルに保存し、チェックサム検証を使用して、クラッシュまたは停電後の次回の再起動時にトランザクションをコミットまたはロールバックします。

MyISAM には、失敗したトランザクション コミットをロールバックするトランザクション システムがありません。そのため、不安定なパワーを持つ不安定なサーバーでは、データベースの破損が大きな問題になります。

データの整合性とロック競合の回避 (InnoDB 行ロックと Myisam テーブル ロック) が必須の場合は、InnoDB を使用します。

答え2

私の理解では(確信はありませんが)、

  • InnoDB はトランザクションを完全にロールバックします。
  • MyISAM は、電源障害が発生する直前まで挿入されたデータを保持します。

関連情報