一、InnoDB和MyISAM的区别
MySQL中InnoDB和MyISAM是两种常用的存储引擎,具有以下不同的特点:
序号 | InnoDB | MyISAM | 说明 |
---|---|---|---|
事务支持 | 支持 | 不支持 | InnoDB可以处理更复杂的业务逻辑,而MyISAM在处理大量并发写入时可能会遇到问题 |
锁定机制 | 行级锁定 | 表级锁定 | 行级锁定可以显著提高并发性能,尤其是在高并发环境下 |
外键支持 | 支持 | 不支持 | InnoDB更适合需要维护数据完整性的应用 |
崩溃恢复 | 支持 | 不支持 | InnoDB支持崩溃恢复和故障转移,在系统崩溃后,InnoDB可以更快地恢复到一致状态 |
文件结构 | 同一个表空间 | 不同的文件中 | InnoDB的数据和索引存储在同一个表空间中,而MyISAM的数据和索引分别存储在不同的文件中。这种差异影响了备份和恢复的效率 |
二、查询库表中引擎是MyISAM的所有表
SELECT concat('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;'),
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' and ENGINE = 'myISAM'
查询结果如下:
三、将查询结果复制到查询中,并运行;
ALTER TABLE table1 ENGINE=InnoDB;
ALTER TABLE table2 ENGINE=InnoDB;
ALTER TABLE table3 ENGINE=InnoDB;
ALTER TABLE table4 ENGINE=InnoDB;