我在 mysql 中使用 select * into outfile 选项将数据备份到制表符分隔格式的文本文件中。我对每个表都调用此语句。
然后我使用load data infile 将每个表的数据导入mysql。
在执行此操作时我还没有做任何锁定或禁用键
现在我面临一些问题:
如何改进方法来解决上述问题?
mysqldump 是一个选项吗?我看到它使用插入语句,所以在尝试之前,我想寻求建议。
在每次“加载数据”之前使用锁定和禁用 key 是否可以提高导入速度?
最佳答案
如果你有很多数据库/表,使用 mysqldump 肯定会容易得多,因为你只需要为每个数据库运行一次(或者甚至为所有数据库运行一次,如果你对你的系统)。此外,它还具有备份表结构的优势(仅使用 select * 无法做到这一点)。
速度可能相似,但最好同时测试两者,看看哪一个最适合您的情况。
有人 here测试了这些选项,事实证明 mysqldump 在他的情况下更快。但同样,YMMV。
如果您关心速度,还可以查看 mysqldump/mysqlimport 组合。作为mentioned here ,它比单独使用 mysqldump 更快。
至于locks和disable keys,我不太确定,所以我会让其他人回答这部分:)
关于mysqldump vs select into outfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15768502/