我正在使用HammerDB 3.1和mysql作为后端进行TPCC测试。 通过查看测试期间的资源消耗,我认为它不会进行内存中测试,因为有很多 IO 活动。
所以我的问题是,使用 mysql 服务器是否可以进行内存中 hammerdb 测试,或者我如何实现?
否则使用默认的 mysql 配置,基于 hammerdb 文档。
对于关系数据库上的TPCC测试,I/O活动将分为2个主要区域,数据区域和重做/事务日志或WAL,这两者都将在内存中缓冲,但具有关键区别。对于数据区域,您将有一个缓冲区缓存或池,您可以在其中读取数据块或页面,对于MySQL和InnoDB存储引擎,例如innodb_buffer_pool_size = 64000M。在测试爬坡期间的基本级别,您将大部分数据块从磁盘读取到此缓冲池中,从该缓冲池中,对块的所有操作都将在内存中进行。修改后的块将定期写出到磁盘。为了防止数据因失败而丢失,所有更改都将写出到重做日志中,并在提交时将其刷新到磁盘。内存中有一个缓冲区,其中的更改将排队并可能一起刷新到磁盘,但是此缓冲区将很小,因为所有更改在发生时都需要到达持久媒体(因此大于 10 MB 的日志缓冲区在刷新之前不会填充)。因此,对于 TPCC 测试,您将看到大量对重做日志的写入活动。如果持久介质(HDD 或 SDD)无法跟上写入速度,这将是一个瓶颈,阻止更高的事务速率添加更多虚拟用户,因此在数据区域中需要更少的内存,因为默认情况下,一个虚拟用户将主要在 1 个仓库上工作。如果要增加数据区域活动,"使用所有仓库"复选框将增加每个虚拟用户将使用的仓库数量。