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

Tair (Redis® OSS-Compatible):永続メモリ最適化インスタンスのパフォーマンスホワイトペーパー

最終更新日:Aug 21, 2024

このトピックでは、ApsaraDB for Redis Enhanced Edition (Tair) 永続メモリ最適化インスタンスのテストについて説明します。 テスト環境、ツール、メソッド、および結果が導入されます。

概要

Tair永続メモリ最適化インスタンスは、オープンソースのRedisと互換性のある大容量のインメモリデータベースを提供するために永続メモリを採用しています。 永続的なメモリ最適化インスタンスは、ディスクを使用してデータの永続性を実装せず、ApsaraDB for Redis Community Editionインスタンスよりもコスト30% が低く、ほぼ同じスループットとレイテンシを実現し、各操作の永続性を維持します。 これにより、ビジネスデータの信頼性が向上します。 詳細については、「永続的なメモリ最適化インスタンス」をご参照ください。

テスト環境

環境アイテム

説明

リージョンとゾーン

すべてのテストは張家口ゾーンAで行われます。

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

標準のマスター-レプリカアーキテクチャが使用されます。 詳細については、「標準アーキテクチャ」をご参照ください。

ストレステストツールを展開する仮想マシン

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

インスタンスタイプ

テストでは、インスタンスタイプtair.scm.standard.32m.128dが使用されます。 詳細については、「永続的なメモリ最適化インスタンス」をご参照ください。

テストツール

オープンソースYCSBを使用してストレステストを実行できます。 YCSBは、複数の種類のデータベースのパフォーマンスをベンチマークするために使用できるJavaツールです。 YCSBのインストール方法と使用方法の詳細については、「YCSB」をご参照ください。

オープンソースYCSBはハッシュのみをテストします。 YCSBを使用して文字列をテストするには、YCSBをダウンロードした後、ycsb /redis/src/main/java/site /YCSB /dbディレクトリにある同じ名前の元のファイルをRedisClient.javaファイルで置き換える必要があります。

ワークロード

テストに含まれるデータの総量は8 GBです。 データの配布方法はZipfianです。 永続メモリ最適化インスタンスのパフォーマンスは、次のシナリオでテストされました。

  • データ読み込み: 100% 書き込み操作。

  • ワークロードC: 100% 読み取り操作。

  • ワークロードA: 50% の更新操作と50% の読み取り操作。

ワークロードの詳細については、「コアワークロード」をご参照ください。

説明

セットとZsetsの複雑なコマンドは、適用可能なシナリオのため、このテストではテストできません。 ビジネスシナリオに基づいて、セットとZsetsのテストをカスタマイズできます。

テストコマンド

# Load data.
workload=a
./bin/ycsb load redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p  "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads}  -p "redis.password=***:*****"

# Run Workload C.
workload=c
./bin/ycsb run redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p  "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****"

# Run Workload A.
workload=a
./bin/ycsb run redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p  "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****" 

表 1. パラメーター

パラメーター

説明

server_ip

Tairインスタンスへの接続に使用されるIPアドレス。

port

Tairインスタンスへの接続に使用されるサービスポート。

password

パスワードの形式は、選択したアカウントによって異なります。

  • ユーザー名がインスタンスIDと同じデフォルトアカウントを使用する場合は、パスワードを入力します。 たとえば、デフォルトアカウントのユーザー名がr-bp1zxszhcgatnx **** で、パスワードがPassword21の場合、パスワードを確認するコマンドはAUTH Password21です。

  • カスタムアカウントを使用する場合は、user:password形式でパスワードを入力します。 たとえば、カスタムアカウントのユーザー名がtestaccountで、パスワードがRp829dlwaの場合、パスワードを確認するコマンドはAUTH testaccount:Rp829dlwaです。

説明

パスワードを忘れた場合は、リセットできます。 詳細については、「パスワードの変更またはリセット」をご参照ください。

recordcount

準備されたデータの量。

operationcount

操作に含まれるデータの量。

command_group

テストするデータの種類。 このテストでは、次の種類のデータが順番にテストされます。

  • String

  • ハッシュ

  • List

  • 設定する

  • Zset

フィールドカウント

フィールドまたは要素の数。 文字列をテストするには、このパラメーターを1に設定します。 他の種類のデータをテストするには、このパラメーターを10に設定します。

フィールド长さ

値の長さ。 テスト要件に基づいてこのパラメーターを設定します。

スレッド

YCSBスレッドの数。 インスタンスタイプに基づいてこのパラメーターを設定します。

テスト結果

テストメトリック

説明

QPS

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

INSERT平均レイテンシ

書き込み操作の平均レイテンシ。 単位: µ s。

挿入99パーセンタイル遅延

書き込み操作の最速99% のための最も高いレイテンシ。 単位: µ s。 たとえば、このパラメーターが500 µ sに設定されている場合、99% の操作は500 µ s以内に処理されます。

READ AverageLatency

読み取り操作の平均レイテンシ。 単位: µ s。

READ 99thPercentileLatency

読み取り操作の最速99% のための最も高いレイテンシ。 単位: µ s。

UPDATE AverageLatency

更新操作の平均レイテンシ。 単位: µ s。

UPDATE 99thPercentileLatency

更新操作の最速99% のための最も高いレイテンシ。 単位: µ s。

データ読み込みのテスト結果

表2. 文字列

値の長さ (バイト)

QPS

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

挿入99パーセンタイル遅延 (µ s)

128

134,478

473

687

256

126,139

504

828

1,024

99,775

638

1,051

2,048

77,130

826

1,157

4,096

60,646

1,050

1,534

表3. ハッシュ

キー内のフィールド数

値の長さ (バイト)

QPS

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

挿入99パーセンタイル遅延 (µ s)

10

128

47,353

1,348

1,885

256

46,716

1,366

2,181

1,024

27,759

2,297

2,873

2,048

16,605

3,833

4,923

表4. リスト

キー内の要素数

値の長さ (バイト)

QPS

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

挿入99パーセンタイル遅延 (µ s)

10

128

64,950

979

1,310

256

47,157

1,348

1,752

1,024

26,719

2,386

3,457

2,048

16,714

3,811

4,751

4,096

10,129

6,279

7,891

表5. セット

キー内のメンバー数

値の長さ (バイト)

QPS

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

挿入99パーセンタイル遅延 (µ s)

10

128

63,670

1,001

1,514

256

44,707

1,427

2,129

1,024

25,375

2,513

3,239

2,048

14,318

4,451

5,619

4,096

8,378

7,608

9,095

表6. ソートセット

キー内の要素数

値の長さ (バイト)

QPS

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

挿入99パーセンタイル遅延 (µ s)

10

128

40,292

1,585

2,469

256

34,168

1,869

2,569

1,024

21,347

2,989

3,905

2,048

12,868

4,956

6,255

4,096

7,864

8,101

9,599

ワークロードCのテスト結果

表7. 文字列

値の長さ (バイト)

QPS

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

READ 99パーセンタイル遅延 (µ s)

128

170,699

362

546

256

163,829

380

565

1,024

161,491

386

569

2,048

130,189

487

729

4,096

115,433

548

808

表8. ハッシュ

キー内のフィールド数

値の長さ (バイト)

QPS

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

READ 99パーセンタイル遅延 (µ s)

10

128

96,111

662

874

256

86,892

733

915

1,024

61,608

1,030

1,293

2,048

37,334

1,696

2,331

4,096

25,943

2,429

3,319

表9. リスト

キー内の要素数

値の長さ (バイト)

QPS

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

READ 99パーセンタイル遅延 (µ s)

10

128

105,296

604

889

256

97,047

655

890

1,024

66,384

955

1,192

2,048

35,796

1,769

2,461

4,096

26,314

2,392

3,271

表10. セット

キー内のメンバー数

値の長さ (バイト)

QPS

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

READ 99パーセンタイル遅延 (µ s)

10

128

97,825

651

896

256

80,954

787

970

1,024

59,924

1,060

1,313

2,048

33,356

1,900

2,637

4,096

23,605

2,677

3,723

表11. ソートセット

キー内の要素数

値の長さ (バイト)

QPS

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

READ 99パーセンタイル遅延 (µ s)

10

128

58,380

1,093

1,341

256

56,287

1,133

1,390

1,024

47,468

1,338

1,688

2,048

30,073

2,096

2,783

4,096

21,850

2,880

3,765

ワークロードAのテスト結果

表12. 文字列

値の長さ (バイト)

QPS

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

READ 99パーセンタイル遅延 (µ s)

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

UPDATE 99thパーセンタイル遅延 (µ s)

128

141,120

451

616

450

618

256

137,551

463

617

461

618

1,024

124,165

516

724

508

725

2,048

92,652

695

881

678

871

4,096

78,994

819

1,042

791

1,024

表13. ハッシュ

キー内のフィールド数

値の長さ (バイト)

QPS

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

READ 99パーセンタイル遅延 (µ s)

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

UPDATE 99thパーセンタイル遅延 (µ s)

10

128

99,495

646

831

633

820

256

88,235

731

985

712

966

1,024

72,013

892

1,159

863

2,049

2,048

45,790

1,379

1,898

1,354

2,821

4,096

32,912

1,891

2,931

1,915

7,887

表14. リスト

キー内の要素数

値の長さ (バイト)

QPS

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

READ 99パーセンタイル遅延 (µ s)

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

UPDATE 99thパーセンタイル遅延 (µ s)

10

128

71,696

591

775

1,185

1,383

256

66,294

638

800

1,281

1,456

1,024

53,402

791

1,006

1,581

1,865

2,048

36,519

1,221

1,581

2,232

2,831

4,096

28,390

1,618

2,113

2,803

3,777

表15. セット

キー内のメンバー数

値の長さ (バイト)

QPS

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

READ 99パーセンタイル遅延 (µ s)

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

UPDATE 99thパーセンタイル遅延 (µ s)

10

128

66,346

640

792

1,282

1,445

256

60,010

707

993

1,415

1,957

1,024

45,359

933

1,128

1,858

2,073

2,048

29,027

1,529

2,021

2,820

4,507

4,096

21,440

2,144

2,773

3,726

5,095

表16. ソートセット

キー内の要素数

値の長さ (バイト)

QPS

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

READ 99パーセンタイル遅延 (µ s)

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

UPDATE 99thパーセンタイル遅延 (µ s)

10

128

49,695

861

1,050

1,707

1,912

256

48,036

891

1,084

1,763

1,970

1,024

39,795

1,081

1,386

2,107

2,563

2,048

28,415

1,597

1,981

2,855

3,589

4,096

21,317

2,247

2,821

3,665

4,787