优化 MySQL 5.6 的单元测试

con*_*fiq 5 mysql performance configuration unit-test mysql-5.6

我们有一个用于单元测试的 MySQL 实例。我们的单元测试主要针对 MySQL。因此,我们将/var/lib/mysqldir放在tmpfs文件系统中,因为我们在单元测试中不需要持久数据。

当我们这样做时,我们的表现达到了顶峰;但是,我想咨询一下您在这种情况下MySQL的最佳配置是什么。

将 MySQL 放入tmpfs(内存)并运行单元测试等不重要的内容是很常见的。问题是:InnoDB 运行的最佳配置是什么tmpfs

这些是我们的配置my.cnf

max_connections=350
innodb_fast_shutdown=2
innodb_log_file_size=1048576
innodb_doublewrite=0
innodb_flush_method=O_DIRECT
Run Code Online (Sandbox Code Playgroud)

我们所有的数据库都在 InnoDB 中。我们不介意丢失一些数据。

PS 你可能会问,为什么不使用MEMORY引擎呢?这是因为MEMORY只有表级锁定,我们的部分单元测试就是基于此。

编辑:我们已经完成了这个项目,我们的配置基于这篇博文: http://jotschi.de/2014/02/03/high-performance-mysql-testdatabase/

dan*_*ack 3

innodb_log_file_size对于我认为是批量加载的具有大量写入的单元测试数据来说,它看起来相当小。

innodb_buffer_pool_size需要设置一个适当的值来考虑活动测试的大小。

因为崩溃安全不是一个问题,比如innodb_doublewrite=0 innodb_flush_log_at_trx_commit=0,会加速写入事务。

max_connections意味着您正在执行多线程客户端,如果这些客户端正在连接/断开连接,则可能将其设置thread_cache_size为通常使用的最大数量。

测试运行后SHOW GLOBAL STATUS可能会提示可以调整哪些其他方面。