我正在尝试使用他们的 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)
我很乐意回答任何问题!
我不是母语人士,所以请原谅我的任何错误。