【问题标题】:MySQL console slow on import of huge SQL filesMySQL 控制台在导入大型 SQL 文件时速度很慢
【发布时间】:2011-02-26 17:41:24
【问题描述】:

我通过 MySQL 控制台导入 SQL 的速度相当慢,而且随着我们的 SQL 文件每天都在增加,我想知道是否有其他方法可以更快地导入 SQL 文件。

不能更改为 Oracle 或其他系统,配置必须保持不变。

当前 SQL 文件为:1.5 GB。 我在WAMP 上使用 Apache 2.2.14、PHP 5.2.11 和 MySQL 5.1.41。

也许问题就在这里,导入很简单:

mysql -u username -p dbname < sqlfilename.sql

有什么建议吗?

【问题讨论】:

  • 你使用的是mysqlimport还是LOAD DATA INFILE?
  • 如果我是正确的,这是必须放在 Sql 中的东西,这是不可能的,因为您无法在任何编辑器中更改 1.4 Gb 的 Sql 文件,它来自外部来源。
  • 它可能对某人有所帮助:首先重新启动您的计算机,然后禁用您的防病毒/防火墙/带宽跟踪器以及您不需要运行的任何其他程序。但是禁用这两个功能后,我的速度提高了 6 倍。

标签: mysql sql console wamp


【解决方案1】:

关闭自动提交是Bulk Data Loading for InnoDB Tables 中给出的一系列建议中的第一个,以加快 MySQL 的恢复操作。

您无需在恢复时手动关闭自动提交,您就可以将 MySQL 数据转储到您的 SQL 文件中,其中包括所有必要的语句。

mysqldump 的命令行参数是--no-autocommit。您也可以考虑添加--opt,它设置了其他参数的组合以加快恢复操作。

这是一个完整的mysqldump命令行示例,包含--no-autocommit--opt

mysqldump -hlocalhost -uMyUser -p'MyPassword' --no-autocommit --opt --default-character-set=utf8 --quote-names  MyDbName  >  dump.sql

有关这些参数的详细信息,请参阅reference of mysqldump

【讨论】:

    【解决方案2】:

    我不确定这是否能解决您的问题,因为我不确定瓶颈在哪里...但是,免费的 Toad for MySQL 工具作为 MySQL 管理控制台的替代品给我留下了深刻的印象.它有很棒的导入工具,而且通常比标准 MySQL 管理控制台好几英里。

    【讨论】:

    • 还有其他人在处理过大数据文件的问题上使用 Toad 的经验吗?
    【解决方案3】:

    试试这些http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html

    这可能是一个自动提交问题,将其关闭然后看看发生了什么。

    SET autocommit=0 ; source <your dump file> ; COMMIT ;
    

    【讨论】:

      【解决方案4】:

      在导入期间启用索引会使您的服务器慢下来。 ALTER TABLEtablenameDISABLE KEYS;并且在导入前后使用..ENABLE KEYS,会提高导入速度,但是重新创建索引需要一些时间,所以速度提升可能并不大。

      此外,也许使用 myisam 表(与具有引用完整性选项的 innodb 相比)通常会提供更好的性能,因为不涉及引用完整性开销。

      我个人不使用mysql控制台的import语句,而是使用mysql -uUSER -pPASS DBNAME &lt; file.sql导入sql文件,对我来说效果很好。

      希望对你有帮助。

      【讨论】:

      • 考虑使用 mysqlimport 命令。它将包含以某种制表符或其他格式分隔格式的数据的平面文件,并将其直接导入表中,比执行 sql 查询更快。
      • 如果您不熟悉 mysqlimport 命令,请参阅dev.mysql.com/doc/refman/5.0/en/mysqlimport.html 获取有关信息。
      • 默认情况下,当导出表时,MySQL Workbench 用DISABLE KEYS; ...; ENABLE KEYS 包围每个表的INSERT 语句。
      猜你喜欢
      • 2016-01-18
      • 2021-04-27
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多