如何加速 MySQL 导入

如何加速 MySQL 导入

我发布了一个相关的问题在 askubuntu.com 上,但这可能是更好的提问地点和方式。

我正在研究一种加快数据库导入速度的方法。目前导入需要一周时间,或多或少几天,这是不可接受的,我知道它可以更快(从生产服务器转储数据只需不到一小时)。

我使用 设置的 ramdisk 上设置了一个 MySQL 数据库作为符号链接ramfs,这就像 的无缓存版本tmpfs。尽管硬盘和 RAM 之间存在性能差异,但我仍然只看到 40-190 QPS 之间。

该表是innodb。

我怎样才能加快导入速度?

我似乎在这个问题上得到了很多反对票,所以也许澄清我的意图会有所帮助:

  1. 这不是生产服务器
  2. 我有一个将 ramdisk 刷新到磁盘的系统,并且花了很多功夫设置它,以便我可以随意执行此操作
  3. 我的目标是能够在合理的时间内导入超过 800 万条记录。最好少于一周,这是我使用默认安装的 MySQL 所获得的性能。

答案1

这通常不是您设置数据库的方式。MySQL 会将其自身缓存到内存中。理想的做法是设置具有大量内存的 MySQL,以便它可以将表的索引缓存到内存中,这将加快查找速度并提高 QPS。

但是,如果您的 SQL 未经过优化并且未正确使用索引,那么您将无法增加 QPS,即使使用更快的驱动器也不行,因为在您的情况下,更快的驱动器是 ram fs。

有几件事需要你审查,

  1. 我的表格结构是怎样的?
  2. 不!!!-> SELECT * FROM ... <- 这会影响性能
  3. 我有正确的索引吗
  4. 我的繁忙表是否位于单独的磁盘卷上
  5. BINLOGS 在单独的磁盘卷上,INNODB 在单独的磁盘卷上
  6. VARCHARS = 糟糕的设计

最后,如果数据库的设计不适合当前的任务,那么优化它将会非常困难。

相关内容