gpt4 book ai didi

mysql - 在 MySQL 中将 MyISAM 转换为 InnoDB

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:07 25 4
gpt4 key购买 nike

我有一个最初使用 MyISAM 设置的模式。我在未定义为外键的表之间建立了关系,但我会将表与连接等链接起来。显然没有级联删除/更新等规则......

我用 InnoDB 重新创建了相同的数据库模式,但这次我将外键放入创建语句并定义了更新/删除规则。

我正在使用 PHP 从 CSV 文件中将大约 200,000 条记录加载到数据库中。最初需要几分钟,但自从我切换到 InnoDB 后,PHP 脚本在 10 分钟后超时,只处理了约 7% 的 CSV 文件。

我很想在没有关系的情况下切换回 MyISAM,但是更好的解决方案(如果可能的话)是在最初填充数据库时使用 MyISAM,然后切换回 InnoDB 并让 MySQL 修复关系。我不知道这是否可行,但我假设如果可行,MySQL 可以比逐一插入 PHP 更快地修复它自己的内部数据结构。

另一件需要考虑的事情是,大约每年一次,我们需要重新加载 200,000 条记录的集合,并确定哪些记录发生了变化。我们可能无法在需要时从一个引擎切换到另一个引擎。

有什么建议吗?

最佳答案

如果您对每个插入使用一个插入查询,则将数据插入数据库可能会花费很长时间。当您使用 mysqldump 生成的格式时,它会显着加快速度,如下所示:

INSERT INTO `table` (field1, field2, field3) 
VALUES
(value, value, value),
(value, value, value),
(value, value, value);

此外,如果您无论如何都想将它插入到 myisam 表中,也没有问题。只要确保您的外键完整性是正确的。插入所有数据后,对所有表执行此操作:

ALTER TABLE `table` ENGINE = innodb;

关于mysql - 在 MySQL 中将 MyISAM 转换为 InnoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7103669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com