【问题标题】:Uploading data to mysql database parallelly并行上传数据到mysql数据库
【发布时间】:2011-02-28 01:06:47
【问题描述】:

我有一个 mysql 数据库和一个大小为 74 GB 的表。我目前正在使用 mysql 命令将此数据加载到 mysql 数据库中。花了10多个小时,还在运行。有没有办法将数据并行加载到 mysql 数据库中。一种方法是将表数据实际拆分为多个文件,然后对每个文件调用 load。但是,这更像是一种黑客行为。 stackoverflowers 有什么追随的吗?

谢谢。

【问题讨论】:

    标签: mysql database upload


    【解决方案1】:

    确保您的源文件和数据库存储在快速磁盘上并且没有碎片。我已经看到值得更改表的数据库引擎以加快导入速度,然后在导入后将其更改回来。我会尝试使用 INNODB 和 MyISAM 引擎,看看是否更快。

    完成后删除所有索引并重新添加它们。无论如何,您都必须重新优化它们,并且只执行一次要快得多。当您将它们添加回来时,将它们组合成一个 alter 语句(更快)。

    将您的数据导出为方便的批量加载格式。您可以很容易地将 10,000 行或更多行的数据库放入文件的一行中。

    PHPMyAdmin 和 MySQL Docs 具有您应该使用的设置来尽可能地延迟以加快读取速度。确保没有其他东西在使用这个数据库和/或表。这只会减慢速度。

    确保您提供的编码与数据库上的编码相匹配。

    将文件传输到数据库服务器并从那里导入(不要通过网络从另一台机器导入)。

    如果可以并且您正在使用它,请关闭复制。如果可以并且您正在使用它,请关闭日志记录。二进制日志将使您必须写入的数据量翻倍。

    【讨论】:

    • 此外,将行组合成更大的插入会减少导入期间的文本和输出。您不希望您的导入吐出大量输出。如果您有条件,请考虑将尽可能多的内存放入内存和/或使用更大的缓冲区重新启动 MySQL,以使事情变得更容易和更快。
    【解决方案2】:

    并行插入一个表(出于速度目的)是无稽之谈。
    而且拆分表也不太明智。
    您必须确保表中没有索引。
    在单独的磁盘/控制器上有一个源文件会很好。

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 2019-02-18
      • 2013-06-07
      • 2012-04-10
      • 2012-11-20
      相关资源
      最近更新 更多