hammerdb - HammerDB - 如何使用 mysql、TPCC 模式进行内存测试?
问题描述
我正在使用 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 上工作仓库。如果要增加数据区活动,“使用所有仓库”复选框将增加每个虚拟用户将使用的仓库数量。
推荐阅读
- javascript - 无法使用 vue.js 发布
- c# - 验证字段后,属性具有最后一个有效值
- javascript - 无法检测 p5.js 中矩形和圆形之间的碰撞
- sql - EF 使用 nvarchar 对参数添加空值检查
- linux - Postgresql - 对很少使用的数据的请求会减慢一切
- json - 使用 Dataweave 2.0 将 JSON 对象展开为嵌套的 JSON 对象
- r - 用线将观测值连接到一个公共点(即 (0,0))
- javascript - 为什么在 Vue.js 中单击时,vuetify 复选框会做出两次反应?
- python - signal.signal 不适用于线程或其他为什么我不能使用 Ctrl-C 来停止我的多线程 Python 代码?
- python - 调用模拟的父类方法时如何获取子 Python 类的名称?