我在 mysql 中使用 select * into outfile 选项将数据备份到制表符分隔格式的文本文件中。我对每个表都调用了这个语句。

我使用 load data infile 将每个表的数据导入 mysql。

执行此操作时,我尚未执行任何锁定或禁用键

现在我面临一些问题:

  • 当它正在备份另一个时,更新和选择变得越来越慢。
  • 大表导入数据时间过长。

  • 如何改进解决上述问题的方法?

    mysqldump 是一个选项吗?我看到它使用了插入语句,所以在我尝试之前,我想征求意见。

    在每次“加载数据”之前使用锁和禁用键是否可以提高导入速度?

    最佳答案

    如果您有很多数据库/表,那么使用 mysqldump 肯定会容易得多,因为您只需要为每个数据库运行一次(或者甚至对所有数据库运行一次,如果您对系统进行完整备份) .此外,它还具有备份表结构的优点(仅使用 select * 无法做到这一点)。

    速度可能相似,但最好同时测试两者,看看哪一种最适合您的情况。

    有人 here 测试了这些选项,事实证明 mysqldump 在他的情况下更快。但是再次,YMMV。

    如果您关心速度,还可以查看 mysqldump/mysqlimport 组合。作为 mentioned here ,它比单独的 mysqldump 更快。

    至于锁和禁用键,我不确定,所以我会让其他人回答那部分:)

    关于mysqldump vs select into outfile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15768502/

    10-11 01:41
    查看更多