すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:単一行のホットデータ更新のテスト方法と結果

最終更新日:May 15, 2025

このトピックでは、テーブルの単一行のホットデータを更新する際における ApsaraDB RDS for MySQL インスタンスのパフォーマンスをテストおよび分析する方法について説明します。

Inventory Hint 機能を使用すると、テーブルの単一行のホットデータを更新する際における ApsaraDB RDS for MySQL インスタンスのパフォーマンスを向上させることができます。この機能の詳細については、「Inventory Hint」をご参照ください。

テスト環境

このテストでは、RDS High-Availability Edition を実行し、rds.mysql.st.v52 インスタンスタイプを使用する RDS インスタンスと、RDS Enterprise Edition を実行し、mysql.st.12xlarge.25 インスタンスタイプを使用する RDS インスタンスを使用します。

  • データベースエンジンとバージョン: MySQL 5.7

  • 仕様: 90 CPU コア、720 GB メモリ(専用ホストインスタンスファミリー)

  • RDS エディション: RDS High-Availability Edition および RDS Enterprise Edition

  • ストレージタイプ: プレミアムローカル SSD

  • テンプレート: パフォーマンス専有型パラメーターテンプレート

テストデータ

テストに使用されるテーブルには 100 行が含まれています。次のコードスニペットは、テーブルスキーマを示しています。

CREATE TABLE `sbtest1`
(
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
,`k` INT(10) UNSIGNED NOT NULL DEFAULT '0'
,`c` CHAR(120) NOT NULL DEFAULT ''
,`pad` CHAR(60) NOT NULL DEFAULT ''
,PRIMARY KEY (`id`)
,KEY `k_1` (`k`)
)
ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT
CHARSET=utf8 MAX_ROWS=1000000

テストスクリプト

ID が 100 の行に対して同時更新を実行するには、次の SQL 文を実行します。

UPDATE sbtest1 SET k=k+1 WHERE id=100

テストには、次の Lua スクリプトが使用されます。

pathtest = string.match(test,"(.*/)") -- pathtest はテストパスの正規表現にマッチします。
if pathtest then -- pathtest が存在する場合
 dofile(pathtest .."common.lua") -- pathtest と common.lua を連結したパスにあるファイルをロードします。
else -- pathtest が存在しない場合
 require("common") -- common モジュールをロードします。
end
function thread_init(thread_id) -- スレッド初期化関数
 set_vars() -- 変数を設定します。
end
function event(thread_id) -- イベント関数
 local table_name -- ローカル変数 table_name を宣言します。
 table_name ="sbtest".. sb_rand_uniform(1, oltp_tables_count) -- table_name にランダムなテーブル名を代入します。
 rs = db_query("begin") -- トランザクションを開始します。
 rs = db_query("update /*+commit_on_success rollback_on_fail target_affect_row(1) */ sbtest1 SET k=k+1 WHERE id=100") -- sbtest1 テーブルの id が 100 の行の k 値を更新します。成功時はコミット、失敗時はロールバックします。影響を受ける行数は 1 です。
 rs =db_query("commit") -- トランザクションをコミットします。
end

テスト結果

インスタンスタイプ

単一行の最大 TPS

RDS High-Availability Edition

12,000

RDS Enterprise Edition

31,000

図 1. RDS Enterprise Edition のテスト結果三节点企业版测试结果