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

Tair (Redis® OSS-Compatible):SSD ベースのインスタンスのパフォーマンスホワイトペーパー

最終更新日:Jul 10, 2026

このドキュメントでは、Tair (Enterprise Edition) の SSD ベースのインスタンスのパフォーマンスベンチマークに関するテスト環境、ツール、方法、および結果について説明します。

テスト環境

項目

説明

リージョンとゾーン

杭州ゾーン J

インスタンスアーキテクチャ

標準マスター/レプリカアーキテクチャ。詳細については、「標準アーキテクチャ」をご参照ください。

ストレステストホスト

ecs.c9i.8xlarge タイプの Elastic Compute Service (ECS) インスタンス。詳細については、「インスタンスファミリーの概要」をご参照ください。

テスト対象のインスタンスタイプ

tair.localssd.c1m8.xlargetair.localssd.c1m8.2xlargetair.localssd.c1m8.with.proxy.xlarge (3 シャード)tair.localssd.c1m8.with.proxy.2xlarge (3 シャード)

このベンチマークは、メモリ使用率の両極端を表す 2 つのシナリオを対象としています:

  • メモリサイズがデータ量より大きい:ほとんどのデータがメモリに収まります。メモリとデータの比率は約 7:1 です。これは、メモリ主体のアクセスパターンを表します。

  • データ量がメモリサイズより大きい:データの一部のみがメモリにキャッシュされ、ほとんどの読み取り/書き込みリクエストでディスク I/O が必要になります。メモリとデータの比率は約 1:4 です。これは、SSD 主体のアクセスパターンを表します。

テストツール

このベンチマークでは、オープンソースの Java ベースのデータベースベンチマークフレームワークである YCSB を使用します。

YCSB のソースコードは、LONG 型の recordcount パラメーターをサポートし、Redis の string コマンドをテストするように変更されています。変更されたソースコードについては、「YCSB ソースコード」をご参照ください。

テストスクリプト

次のスクリプトは、データ量がメモリサイズより大きいシナリオのパフォーマンステストを実行します:

#!/bin/bash

ip=192.168.0.23
port=3100
timeout=30000
command_group=string
recordcount=640000000
run_operationcount=640000000
fieldcount=1
fieldlength=100
threads=64
load_sleep_time=600
run_sleep_time=60

echo "##################################### $command_group  ############################################"

# データロード
./bin/ycsb load redis -s -P workloads/workloada \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${recordcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -threads ${threads}
sleep ${load_sleep_time}

# 均一分布読み取り
./bin/ycsb run redis -s -P workloads/workloadc \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${run_operationcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -p "requestdistribution=uniform" -threads ${threads}
sleep ${run_sleep_time}

# Zipf分布読み取り
./bin/ycsb run redis -s -P workloads/workloadc \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${run_operationcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -p "requestdistribution=zipfian" -threads ${threads}
sleep ${run_sleep_time}

# 均一分布 50% 読み取り/50% 更新
./bin/ycsb run redis -s -P workloads/workloada \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${run_operationcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -p "requestdistribution=uniform" -threads ${threads}

パラメーター

パラメーター

説明

ip

Tair インスタンスの IP アドレス

port

Tair インスタンスのサービスポート

timeout

コマンドのタイムアウト。単位:ms

command_group

テストするデータ型。string に設定します

recordcount

データロードフェーズでロードされるレコード数

run_operationcount

実行フェーズでの操作数。どちらのシナリオでも、この値を recordcount と同じ値に設定します。

fieldcount

レコードあたりのフィールド数。1 に設定します

fieldlength

各フィールドの長さ (バイト単位)。100 に設定します

threads

YCSB クライアントのスレッド数。インスタンスタイプによって異なります。

テストメトリクス

メトリクス

説明

QPS

1 秒あたりに処理される読み取りおよび書き込み操作の数

平均レイテンシー

読み取りまたは書き込み操作の平均レイテンシー。単位:µs

99 パーセンタイルレイテンシー

操作の 99% が完了する最大レイテンシー。単位:µs。たとえば、値が 500 µs の場合、99% の操作が 500 µs 以内に完了することを意味します。

テスト結果

メモリサイズがデータ量より大きい場合

メモリとデータの比率は約 7:1 です。ほとんどのリクエストはメモリから処理されます。

インスタンスタイプ

YCSB 設定

ワークロード

QPS

平均レイテンシー (µs)

99 パーセンタイルレイテンシー (µs)

tair.localssd.c1m8.xlarge

recordcount=20,000,000

run_operationcount=20,000,000

threads=64

fieldlength=100

ロード

42,275

1,511

4,987

均一分布読み取り

104,303

611

2,163

Zipf分布読み取り

105,217

605

2,259

均一分布 50% 読み取り/50% 更新

52,267

読み取り:1,114

読み取り:4,191

更新:1,329

更新:4,827

tair.localssd.c1m8.2xlarge

recordcount=40,000,000

run_operationcount=40,000,000

threads=128

fieldlength=100

ロード

64,104

1,993

5,951

均一分布読み取り

174,533

730

2,049

Zipf分布読み取り

177,612

718

2,033

均一分布 50% 読み取り/50% 更新

75,762

読み取り:1,509

読み取り:4,667

更新:1,864

更新:5,479

tair.localssd.c1m8.with.proxy.xlarge (3 シャード)

recordcount=60,000,000

run_operationcount=60,000,000

threads=192

fieldlength=100

ロード

116,107

1,647

9,983

均一分布読み取り

225,613

847

3,687

Zipf分布読み取り

234,014

816

3,279

均一分布 50% 読み取り/50% 更新

138,884

読み取り:1,321

読み取り:8,131

更新:1,435

更新:8,479

tair.localssd.c1m8.with.proxy.2xlarge (3 シャード)

recordcount=120,000,000

run_operationcount=120,000,000

threads=384

fieldlength=100

ロード

170,447

2,246

11,935

均一分布読み取り

323,136

1,184

4,005

Zipf分布読み取り

330,023

1,159

3,951

均一分布 50% 読み取り/50% 更新

207,350

読み取り:1,759

読み取り:9,031

更新:1,934

更新:9,439

データ量がメモリサイズより大きい場合

メモリとデータの比率は約 1:4 です。ほとんどのリクエストでディスク I/O が必要になるため、レイテンシーは上記のメモリ主体のシナリオよりも高くなります。

インスタンスタイプ

YCSB 設定

ワークロード

QPS

平均レイテンシー (µs)

99 パーセンタイルレイテンシー (µs)

tair.localssd.c1m8.xlarge

recordcount=640,000,000

run_operationcount=640,000,000

threads=64

fieldlength=100

ロード

33,198

1,925

7,699

均一分布読み取り

48,243

1,324

3,659

Zipf分布読み取り

66,635

958

3,003

均一分布 50% 読み取り/50% 更新

28,779

読み取り:2,169

読み取り:7,531

更新:2,272

更新:7,851

tair.localssd.c1m8.2xlarge

recordcount=1,280,000,000

run_operationcount=1,280,000,000

threads=128

fieldlength=100

ロード

48,605

2,631

8,463

均一分布読み取り

83,687

1,527

3,889

Zipf分布読み取り

113,742

1,123

3,351

均一分布 50% 読み取り/50% 更新

46,606

読み取り:2,652

読み取り:8,815

更新:2,835

更新:9,367

tair.localssd.c1m8.with.proxy.xlarge (3 シャード)

recordcount=1,920,000,000

run_operationcount=1,920,000,000

threads=192

fieldlength=100

ロード

89,421

2,144

15,351

均一分布読み取り

115,967

1,653

9,311

Zipf分布読み取り

155,686

1,231

6,359

均一分布 50% 読み取り/50% 更新

72,890

読み取り:2,585

読み取り:16,479

更新:2,676

更新:16,719

tair.localssd.c1m8.with.proxy.2xlarge (3 シャード)

recordcount=3,840,000,000

run_operationcount=3,840,000,000

threads=384

fieldlength=100

ロード

137,521

2,789

16,591

均一分布読み取り

185,273

2,070

8,575

Zipf分布読み取り

238,099

1,610

6,203

均一分布 50% 読み取り/50% 更新

128,080

読み取り:2,930

読み取り:15,535

更新:3,060

更新:15,807

Performance comparison chart

関連ドキュメント

ESSD/SSD ベースのインスタンス