1

我正在我的机器上运行一些单元和集成测试。在这种测试环境中,数据完整性并不重要。我不在乎数据是否被写入磁盘,我只希望我的测试速度快。

我可以启用任何选项以使 InnoDB 完全在 RAM 中运行吗?

4

2 回答 2

1

一些选项:

  • 在内存文件系统上移动数据(例如,在 linux 机器上的 /dev/shm 中移动数据、日志等)
  • 使用libeatmydata使 fsync() 成为无操作
于 2012-07-05T17:02:19.520 回答
1

除了将表类型更改为 MEMORY 而不是 InnoDB 之外,您还可以使用该innodb_flush_log_at_trx_commit设置显着加快插入和更新速度。

设置为 2 而不是 1 可以轻松地使插入和更新速度提高 10 倍或更多。实际上,这会导致 InnoDB 每秒将数据 fsync() 到事务日志,而不是在每次事务提交时。

另一种选择是只使用较大的事务(特别是如果您正在插入大量数据并当前使用自动提交)。

于 2012-07-05T17:08:28.920 回答