本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
附錄 II
本節提供不同案例中 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
大約需要 34 分鐘的時間來封存 300,024 個資料列。此資料表有 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
大約需要 3 小時、44 分鐘和 29 秒的時間來封存 1,999,999 列。
下圖顯示 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 不會積極封存。