本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
附录二
本节提供不同场景下 pt-archiver 工具的基准测试结果。此测试中使用 sysbenchdb.r6g.8xlarge
实例上执行的。
以下 sysbench 命令用于准备和运行数据库上的负载:
sysbench oltp_read_write --db-driver=mysql --mysql-db=<DATABASE> --mysql-user=<USER> --mysql-password=<PASSWORD> --mysql-host=<ENDPOINT> --tables=1000 --table-size=2000000 --threads=500 prepare sysbench oltp_read_write --db-driver=mysql --mysql-db=<DATABASE> --mysql-user=<USER> --mysql-password=<PASSWORD> --mysql-host=<ENDPOINT> --tables=1000 --rate=500 --threads=500 run
存档没有主键且只有一个索引的表(不会对数据库造成负载)
Started at 2022-11-07T05:29:12, ended at 2022-11-07T06:03:31 Action Count Time Pct commit 600050 1715.3582 83.31 select 300025 166.5470 8.09 inserting 300024 165.4025 8.03 other 0 11.6644 0.57
存档 300,024 行花了大约 34 分钟。该表有 200 万行,但该工具仅存档索引列中具有唯一数据的行。
存档具有主键的表(不会对数据库造成负载)
Started at 2022-11-16T08:53:49, ended at 2022-11-16T12:38:18 Action Count Time Pct commit 4000000 11065.9534 82.16 select 2000000 1278.1854 9.49 inserting 1999999 1050.4961 7.80 other 0 74.1519 0.55
存档 1,999,999 行花了大约 3 小时 44 分 29 秒。
下图显示,pt-archiver 在系统中没有任何负载的情况下自行运行时,消耗的 CPU 和资源非常少。

存档具有主键的表(数据库负载)
Started at 2022-11-16T17:37:07, ended at 2022-11-17T03:20:43 Action Count Time Pct commit 4000000 19688.8362 56.23 inserting 1999999 13933.4418 39.79 select 2000000 1305.1770 3.73 other 0 89.1787 0.25
存档 1999999 行花了大约 9 小时 43 分 36 秒。
下图显示,在测试期间,由于 sysbench 施加的负载,CPU 利用率高达 15%。加载完成后,pt-archiver 继续工作,按预期消耗最少的 CPU 来完成存档。

从图表中可以明显看出,当数据库有负载时,pt-archiver 不会主动存档。