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

:1行のホットデータ更新のテスト方法と結果

最終更新日:Mar 07, 2025

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

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

テスト環境

このテストでは、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

  • ストレージタイプ: ローカルディスク

  • テンプレート: 高性能パラメータテンプレート

テストデータ

テストに使用されるテーブルには、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

テストスクリプト

次のSQL文を実行して, IDが100の行を同時更新します。

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

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

pathtest = string.match(test,"(.*/)")
if pathtest then
 dofile(pathtest .."common.lua")
else
 require("common")
end
function thread_init(thread_id)
 set_vars()
end
function event(thread_id)
 local table_name
 table_name ="sbtest".. sb_rand_uniform(1, oltp_tables_count)
 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")
 rs =db_query("commit")
end

テスト結果

インスタンスタイプ

単一行の最大TPS

RDS高可用性エディション

12,000

RDSエンタープライズエディション

31,000

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