0

我正在尝试使用他们的 TPROC-C 基准测试用 HammerDB 对 MySQL 进行基准测试。这是我正在对 MySQL 和 PostgreSQL 进行基准测试的研究的一部分。在使用 PostgreSQL 运行所有基准测试后,我开始对 MySQL 进行基准测试,结果让我感到惊讶!

根据 HammerDB 的网站,NOPM 应该在 RDBMS 之间具有可比性,但数字太低以至于让我认为我的方法是错误的,或者我的调整参数正在损害性能。

我的目的是用 100 个仓库和不同数量的虚拟用户运行他们的基准测试。

使用 PostgreSQL,一个虚拟用户的 NOPM 大约为 14000,但使用 MySQL,我得到大约 3800。

我不想挑起战争

真正有用的是,如果有人能指出我正确的方向。

我在 Docker 上同时运行 MySQL 和 PostgreSQL,并使用最新的图像。

两个镜像都限制为 12GB 的 RAM,并且 HammerDB 正在主机上运行。

MySQL 在 InnoDB 上运行。

这些是我从 MySQL 更改的设置:

innodb_buffer_pool_size = 8G
innodb_buffer_chunk_size = 1G
innodb_buffer_pool_instances = 8
innodb_log_file_size = 2G
innodb_stats_on_metadata = OFF
innodb_file_per_table = ON
innodb_write_io_threads = 24
innodb_read_io_threads = 24
innodb_thread_concurrency = 0
innodb_io_capacity = 20000
key_buffer_size = 128M
thread_stack = 256K
thread_cache_size = 16
max_heap_table_size = 256M

我是一个完整的 MySQL 菜鸟,但我想让这些测试正确,这就是我来这里的原因

不过,我在笔记本电脑上运行这些,这不太理想。以下是配置:

i7-1165G7 - 4 核 8 线程 HT 16GB RAM M.2 nvme SSD

至于 HammerDB 选项:

Timed Driver Script (same as PG)
1000000 total txs per user (same as PG)
Prepared statements
1m ramp-up time (same as PG)
30m test time (same as PG)
Use all warehouses (same as PG)
Time profile (same as PG)

我很乐意回答任何问题!

我不是母语人士,所以请原谅我的任何错误。

4

1 回答 1

0

HammerDB 网站上关于 NOPM(每分钟新订单数)值在数据库之间具有可比性的建议意味着 NOPM 可用于在不同数据库和系统之间进行比较,而不是意味着所有数据库都应该达到相同的吞吐量。例如,商业数据库可以实现比开源数据库更高的性能和可扩展性,但是这是意料之中的,因为商业数据库已经调整了数十年,以便在 HammerDB OLTP 测试衍生的 TPC-C 测试中表现良好从。此外,数据库被设计为在多个 CPU 上同时运行多个会话,因此通过单个用户测试几乎无法确定单个数据库的能力。在 2021 年最新的 2 套接字服务器上,预计 MySQL 和 PostgreSQL 将在 1,000,000 到 3,000,000 NOPM 的范围内以多个会话的峰值执行,具体取决于硬件和软件配置。建议使用 MySQL 8.0.20 和 PostgreSQL 13.0 以上版本以获得更高的性能。这github上的 HammerDB 讨论论坛是获取特定 HammerDB 调优建议的最佳场所。

于 2021-07-09T12:32:23.423 回答