全部產品
Search
文件中心

Tair:持久記憶體型效能白皮書

更新時間:Jun 30, 2024

本文介紹雲原生記憶體資料庫Tair持久記憶體型效能測試的測試環境、測試載入器、測試方法與測試結果。

產品概述

Tair持久記憶體型,基於持久記憶體技術,為您提供大容量、相容Redis的記憶體資料庫產品。單一實例成本對比KVStore for Redis社區版最高可降低30%,且資料持久化不依賴傳統磁碟,保證每個操作持久化的同時提供近乎Redis社區版的吞吐和延時,極大提升業務資料可靠性。更多資訊請參見持久記憶體型

測試環境

測試環境資訊說明
地區和可用性區域所有測試均在華北3(張家口)地區的可用性區域A中完成。
Redis執行個體架構標準版(雙副本)架構,詳情請參見標準架構
部署壓測工具的機器Elastic Compute Service執行個體,規格為ecs.g6e.8xlarge,詳情請參見執行個體規格類型系列
持久記憶體型執行個體規格本次測試以tair.scm.standard.32m.128d規格為例,規格詳情請參見持久記憶體型執行個體規格

測試載入器

採用開源社區的YCSB壓測工具進行壓測。YCSB是一款Java編寫的支援多種資料庫的效能測試工具,具體安裝和使用方法請參見YCSB

由於開源版本僅支援測試Hash結構的資料,下載YCSB工具後,需要將YCSB/redis/src/main/java/site/ycsb/db/RedisClient.java檔案替換為RedisClient.java檔案,用於測試String結構的資料。

工作負載

測試的總資料量8 GB,資料分布方法為zipfian,具體測試情境如下:

  • Load:100%的寫操作。
  • Workload C:100%的讀操作。
  • Workload A:50%的更新操作與50%的讀操作。

關於Workload的詳細介紹,請參見Core Workloads

說明 由於應用情境不同,Set、Zset中的複雜命令無法進行通用測試,您可以根據您的業務情境自行測試。

測試命令

#載入資料
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=***:*****"

#運行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=***:*****"

#運行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_ipTair執行個體的IP地址。
port Tair執行個體的服務連接埠。
password

根據選取帳號的不同,密碼的填寫格式有一定區別:

  • 使用預設帳號(以執行個體ID命名的帳號):直接填寫密碼即可。例如執行個體預設帳號為r-bp1zxszhcgatnx****,自訂密碼為Password21,密碼驗證命令為AUTH Password21

  • 使用新建立的帳號:密碼格式為user:password。例如自訂帳號為testaccount,密碼為Rp829dlwa,密碼驗證命令為AUTH testaccount:Rp829dlwa

說明 如果忘記密碼,請參見修改或重設密碼
recordcount資料裝載階段準備的資料量。
operationcount執行操作的資料量。
command_group測試的資料結構,本案例中,依次測試下述資料結構:
  • String
  • Hash
  • List
  • Set
  • Zset
fieldcount欄位或元素個數,本案例中,String資料結構配置為1,其他資料結構配置為10。
fieldlength值長度,根據測試需求配置。
threadsYCSB線程數,根據執行個體規格配置。

測試結果

測試單位說明
QPS每秒處理的讀寫運算元,單位為次/秒。
INSERT Average Latency寫操作平均延遲,單位為微秒(us)。
INSERT 99th Percentile Latency處理速度最快的99%寫操作中,最長的延遲時間,單位為微秒。例如該指標的值為500微秒,表示99%的請求可以在500微秒內被處理。
READ AverageLatency讀操作平均延遲,單位為微秒。
READ 99thPercentileLatency處理速度最快的99%讀操作中,最長的延遲時間,單位為微秒。
UPDATE AverageLatency更新操作平均延遲,單位為微秒。
UPDATE 99thPercentileLatency處理速度最快的99%更新操作中,最長延遲時間,單位為微秒。

Load情境測試結果

表 2. String資料結構
Value長度(位元組)QPS(次/秒)INSERT Average Latency(微秒)INSERT 99th Percentile Latency(微秒)
128位元組134,478473687
256位元組126,139504828
1024位元組99,7756381,051
2048位元組77,1308261,157
4096位元組60,6461,0501,534
表 3. Hash資料結構
Key中的Field數量 Value長度(位元組)QPS(次/秒)INSERT Average Latency(微秒)INSERT 99th Percentile Latency(微秒)
10 12847,3531,3481,885
25646,7161,3662,181
1,02427,7592,2972,873
2,04816,6053,8334,923
表 4. List資料結構
Key中的Element數量Value長度(位元組)QPS(次/秒)INSERT Average Latency(微秒)INSERT 99th Percentile Latency(微秒)
1012864,9509791,310
25647,1571,3481,752
1,02426,7192,3863,457
2,04816,7143,8114,751
4,09610,1296,2797,891
表 5. Set資料結構
Key中的Member數量Value長度(位元組)QPS(次/秒)INSERT Average Latency(微秒)INSERT 99th Percentile Latency(微秒)
1012863,6701,0011,514
25644,7071,4272,129
1,02425,3752,5133,239
2,04814,3184,4515,619
4,0968,3787,6089,095
表 6. Sorted Set資料結構
Key中的Element數量Value長度(位元組)QPS(次/秒)INSERT Average Latency(微秒)INSERT 99th Percentile Latency(微秒)
1012840,2921,5852,469
25634,1681,8692,569
1,02421,3472,9893,905
2,04812,8684,9566,255
4,0967,8648,1019,599

Workload C情境測試結果

表 7. String資料結構
Value長度(位元組)QPS(次/秒)READ AverageLatency(微秒)READ 99thPercentileLatency(微秒)
128位元組170,699362546
256位元組163,829380565
1024位元組161,491386569
2048位元組130,189487729
4096位元組115,433548808
表 8. Hash資料結構
Key中的Field數量Value長度(位元組)QPS(次/秒)READ AverageLatency(微秒)READ 99thPercentileLatency(微秒)
10128 96,111662874
256 86,892733915
1,024 61,6081,0301,293
2,048 37,3341,6962,331
4,096 25,9432,4293,319
表 9. List資料結構
Key中的Element數量Value長度(位元組)QPS(次/秒)READ AverageLatency(微秒)READ 99thPercentileLatency(微秒)
10128105,296604889
25697,047655890
1,02466,3849551,192
2,04835,7961,7692,461
4,09626,3142,3923,271
表 10. Set資料結構
Key中的Member數量Value長度(位元組)QPS(次/秒)READ AverageLatency(微秒)READ 99thPercentileLatency(微秒)
1012897,825651896
25680,954787970
102459,92410601313
204833,35619002637
409623,60526773723
表 11. Sorted Set資料結構
Key中的Element數量Value長度(位元組)QPS(次/秒)READ AverageLatency(微秒)READ 99thPercentileLatency(微秒)
1012858,3801,0931,341
25656,2871,1331,390
1,02447,4681,3381,688
2,04830,0732,0962,783
4,09621,8502,8803,765

Workload A情境測試結果

表 12. String資料結構
Value長度(位元組)QPS(次/秒)READ AverageLatency(微秒)READ 99thPercentileLatency(微秒)UPDATE AverageLatency(微秒)UPDATE 99thPercentileLatency(微秒)
128141,120451616450618
256137,551463617461618
1,024124,165516724508725
2,04892,652695881678871
4,09678,9948191,0427911,024
表 13. Hash資料結構
Key中的Field數量Value長度(位元組)QPS(次/秒)READ AverageLatency(微秒)READ 99thPercentileLatency(微秒)UPDATE AverageLatency(微秒)UPDATE 99thPercentileLatency(微秒)
1012899,495646831633820
25688,235731985712966
1,02472,0138921,1598632,049
2,04845,7901,3791,8981,3542,821
4,09632,9121,8912,9311,9157,887
表 14. List資料結構
Key中的Element數量Value長度(位元組)QPS(次/秒)READ AverageLatency(微秒)READ 99thPercentileLatency(微秒)UPDATE AverageLatency(微秒)UPDATE 99thPercentileLatency(微秒)
1012871,6965917751,1851,383
25666,2946388001,2811,456
1,02453,4027911,0061,5811,865
2,04836,5191,2211,5812,2322,831
4,09628,3901,6182,1132,8033,777
表 15. Set資料結構
Key中的Member數量Value長度(位元組)QPS(次/秒)READ AverageLatency(微秒)READ 99thPercentileLatency(微秒)UPDATE AverageLatency(微秒)UPDATE 99thPercentileLatency(微秒)
1012866,3466407921,2821,445
25660,0107079931,4151,957
1,02445,3599331,1281,8582,073
2,04829,0271,5292,0212,8204,507
4,09621,4402,1442,7733,7265,095
表 16. Sorted Set資料結構
Key中的Element數量Value長度(位元組)QPS(次/秒)READ AverageLatency(微秒)READ 99thPercentileLatency(微秒)UPDATE AverageLatency(微秒)UPDATE 99thPercentileLatency(微秒)
1012849,6958611,0501,7071,912
25648,0368911,0841,7631,970
1,02439,7951,0811,3862,1072,563
2,04828,4151,5971,9812,8553,589
4,09621,3172,2472,8213,6654,787