【问题标题】:how to export/dump mysql without index如何在没有索引的情况下导出/转储 mysql
【发布时间】:2019-05-03 23:23:50
【问题描述】:

我从服务器导出 sql 并导入到本地。

但是导入sql的时间太长了,我觉得和索引有关。

可以导出不带索引的sql吗?

导入 sql 后,将索引应用于表。这可能吗?

【问题讨论】:

  • 你是如何导出的?如果通过mysqldump,查看dump文件;您会看到它正在以最佳方式执行索引。导出/导入的目标是什么(备份、传输、其他?)如需进一步讨论,请为其中一张慢表提供 SHOW CREATE TABLE
  • 我无法显示该文件,因为它的大小大于 1 GB。我通过 mysqldump 转储了 sql。当我将此 sql 导入服务器时,它需要太多时间。

标签: mysql indexing import export


【解决方案1】:

--disable-keys 仅适用于 MyISAM 表。我做了很多搜索,但没有找到任何类似的方法来为 InnoDB 执行此操作。

我所做的是使用hexedit,按Tab,输入/ 和表的名称,按回车,当它找到导致问题的大表的CREATE TABLE 语句时,我导航到PRIMARY KEY/UNIQUE KEY/KEY 第二个并通过用空格替换它们来删除所有索引。保存文件后,加载转储,然后立即手动重新创建相同的索引。我的数据(150 GB 和 15 亿行)需要 5 个小时而不是 15 个小时。

【讨论】:

    【解决方案2】:

    来自mysqldump 文档:

    --禁用键,-K

    对于每个表,用 /*!40000 ALTER TABLE tbl_name DISABLE KEYS / 包围 INSERT 语句;和 /!40000 ALTER TABLE tbl_name ENABLE KEYS */;陈述。这使得加载转储文件更快,因为索引是在插入所有行之后创建的。此选项仅对 MyISAM 表的非唯一索引有效。对其他表无效。

    【讨论】:

      猜你喜欢
      • 2013-06-17
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2011-09-13
      • 2012-10-30
      相关资源
      最近更新 更多