我有一个最初使用MyISAM设置的模式。我之间有没有定义为外键的表之间的关系,但我会链接表与连接等。显然没有级联删除/更新等规则...在MySQL中将MyISAM转换为InnoDB
我重新创建相同的数据库模式与InnoDB,但这次我把外键放入创建语句并定义了更新/删除规则。
我使用PHP从CSV文件中将大约200,000条记录加载到数据库中。它最初需要几分钟时间,但自从我交换到InnoDB后,PHP脚本在10分钟后超时,只处理了约7%的CSV文件。
我很想回到没有关系的MyISAM,但是更好的解决方案(如果可能的话)是在初始填充数据库时使用MyISAM,然后切换回InnoDB并让MySQL修复关系。我不知道这是否可行,但我认为如果是这样,MySQL可以修复它自己的内部数据结构,而不是逐个PHP插入。
需要考虑的另一件事是,大约每年一次,我们需要重新载入一组200,000条记录并确定哪些记录发生了变化。当我们需要这样做时,可能无法从一台引擎切换到另一台引擎。
任何指针?
MySQL的版本?另外,直接回答:http://stackoverflow.com/questions/2167522/innodb-takes-over-an-hour-to-import-600mb-file-myisam-in-a-few-minutes/2167641#2167641 –
MySQL Version 5.5.8 – Ozzah
您是否修改innodb变量以获得更好的性能,还是全部使用默认设置? –