加速 MySQL 插入操作(用于测试目的)

加速 MySQL 插入操作(用于测试目的)

我有一些软件需要执行大量 INSERT。在生产环境中会有一些认真的调整和测试之类的事情,但现在当我需要测试它时,我想尽可能加快插入速度。因此我的问题是 - 有没有办法调整 mysql,使其不进行太多磁盘 I/O,而是将所有内容保留在 RAM 中并很少与磁盘同步(比如说 n 秒一次?)

答案1

延迟插入可以提供帮助(仅限 MyISAM),因为它允许批量插入(这是 MyISAM 的优势)。
对表进行分区也会有所帮助。

如果您的内存允许(并且这就是您所要求的),那么您可以使用内存表。只需确保 max_heap_table_size 和 tmp_table_size 的设置足以容纳数据。

再加点技巧,可以在 Linux 上使用 TMPFS 并将数据文件放在那里(使用符号链接)

答案2

参见 MySQL 手册的答案这里。要回答您的具体问题,请查看INSERT DELAYED哪个能完全满足您的要求。您可以使用delayed_insert_limit和调整其行为delayed_queue_size

但是,如果您可以批量插入,那么速度可能会更快;要么使用批量插入工具,要么提供多个值列表,例如:INSERT INTO table (column) VALUES (val1),(val2),(val3)

答案3

正如丹尼尔在他的回答的第二部分中所说的那样 - 批量插入会给你很多。检查演示。你的规模可能要小得多,但我认为无论如何你都会发现它很有趣。

相关内容