附錄 II - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

附錄 II

本節提供不同案例中 pt-archiver 工具的基準結果。此測試使用 sysbench 工具,將負載放在資料庫上。所有測試都會在執行個體類別上執行的 Amazon RDS for MySQL db.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 和資源。

在執行期間,百分比會增加 0.2。

具有主索引鍵的封存資料表 (在資料庫上載入)

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 不會積極封存。