我们有两张 MySQL 表,一张是 InnoDB,另一张是 MyISAM。如果我在单个事务中对两张表执行大量插入操作,而中途断电,情况会怎样?
InnoDB 和 MyISAM 表上新插入的数据会发生什么情况?
答案1
Innodb 是一个事务数据库,它将数据库更改存储在事务日志文件中,使用校验和验证,在崩溃或断电后下次重新启动时提交或回滚事务。
MyISAM 没有事务系统来回滚不成功的事务提交。因此,数据库损坏成为不稳定服务器和不稳定能力的主要问题。
如果必须保证数据完整性并避免锁争用(innodb 行锁与 myisam 表锁),则选择 Innodb。
答案2
我的理解(我不确定)是:
- InnoDB 将完全回滚该事务。
- MyISAM 将保留断电前插入的所有数据。