50

是否有任何记录在案的技术可以加快 mySQL 转储和导入?

这将包括 my.cnf 设置、使用 ramdisk 等。

仅寻找记录在案的技术,最好使用显示潜在加速的基准。

4

9 回答 9

24
  1. 获取高性能 MySQL的副本。很棒的书。
  2. 转储中的扩展插入
  3. 用--tab格式转储,这样你就可以使用mysqlimport,它比mysql < dumpfile更快
  4. 使用多个线程导入,每个表一个。
  5. 如果可能,请使用不同的数据库引擎。导入像 innodb 这样的大量事务引擎非常慢。插入像 MyISAM 这样的非事务引擎要快得多。
  6. 查看 Maakit 工具包中的表格比较脚本,看看您是否可以更新表格而不是转储它们并导入它们。但是您可能正在谈论备份/恢复。
于 2008-09-16T14:24:16.013 回答
15

http://www.maatkit.org/有一个 mk-parallel-dump 和 mk-parallel-restore

如果您一直希望使用多线程 mysqldump,请不要再希望了。该工具并行转储 MySQL 表。它是一个更智能的 mysqldump,既可以作为 mysqldump 的包装器(具有合理的默认行为),也可以作为 SELECT INTO OUTFILE 的包装器。它专为处理非常大数据量的高性能应用程序而设计,在这些应用程序中,速度非常重要。它利用多个 CPU 和磁盘来更快地转储数据。

mysqldump 中还有各种潜在的选项,例如在导入转储时不创建索引 - 而是在完成时批量进行。

于 2008-09-16T22:21:55.443 回答
13

如果您要导入 InnoDB,您可以做的最有效的事情就是将

innodb_flush_log_at_trx_commit = 2

在您的my.cnf, 导入运行时临时。1如果你需要酸,你可以把它放回去。

于 2008-09-16T14:40:50.200 回答
5

我想你的问题也取决于瓶颈在哪里:

  • 如果您的网络是瓶颈,您还可以查看-C/--compress标志mysqldump
  • 如果您的计算机内存不足(即开始交换),您应该购买更多内存。

另外,请查看--quick标志mysqldump--disable-keys如果您使用的是 MyIsam)。

于 2010-04-19T09:15:37.047 回答
4

在转储中使用扩展插入应该会使导入更快。

于 2008-09-15T21:36:25.233 回答
4

关闭外键检查并打开自动提交。

于 2008-09-16T14:32:22.233 回答
1

mysqlhotcopy如果您只有 MyIsam 表,也可能是您的替代方案。

于 2010-04-19T09:16:57.433 回答
-2

使用索引但不要太多,激活查询缓存,对大数据库使用 sphinx,这里有一些很好的提示http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (法语)

于 2011-08-18T22:55:35.197 回答
-2

另一种选择是http://www.mydumper.org - 多线程 mysql 备份/恢复,它比 mysqldump 快 3 到 10 倍,并且可以处理 MyISAM 和 InnoDB 以及 Drizzle http://vbtechsupport.com/1695/

于 2012-01-07T03:02:51.503 回答