日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

數(shù)據(jù)寫入、更新、點查場景壓測最佳實踐

Hologres是兼容PostgreSQL協(xié)議的一站式實時數(shù)倉引擎,支持海量數(shù)據(jù)實時寫入、實時更新、實時分析,既支持PB級數(shù)據(jù)多維分析(OLAP)與即席分析(Ad Hoc),又支持高并發(fā)低延遲的在線數(shù)據(jù)服務(wù)(Serving)。本文為您介紹Hologres在數(shù)據(jù)寫入、數(shù)據(jù)更新、點查場景的性能測試方法與結(jié)果。

測試方案介紹

測試場景

本文進行測試的場景如下。

  • 數(shù)據(jù)寫入場景:主要用于測試Hologres針對行存、列存、行列共存表進行數(shù)據(jù)寫入的性能。

  • 數(shù)據(jù)更新場景:主要用于測試Hologres針對行存、列存、行列共存表,在有主鍵的情況下進行數(shù)據(jù)更新的性能,包含全局更新與局部更新兩個場景。

  • 點查場景:主要用于測試Hologres針對行存、行列共存表進行主鍵過濾的點查性能。

測試工具

本文采用Hologres研發(fā)的開源測試工具holo-e2e-performance-tool進行測試,詳情請參見holo-e2e-performance-tool(包含測試工具下載地址)。

holo-e2e-performance-tool測試工具具備如下優(yōu)勢:

  • 測試過程簡便:holo-e2e-performance-tool測試工具集成了建表、寫入數(shù)據(jù)構(gòu)造、性能測試等全部模塊,無需提前準(zhǔn)備測試數(shù)據(jù)。

  • 參數(shù)配置靈活:僅需簡單調(diào)整配置項,即可對表的列數(shù)、大小、行數(shù)等參數(shù)進行定制化設(shè)計,完成更加貼近實際業(yè)務(wù)場景的性能測試。

  • 測試結(jié)果準(zhǔn)確:測試數(shù)據(jù)的主鍵為遞增的連續(xù)整數(shù),因此只需對應(yīng)調(diào)整參數(shù)配置項中的數(shù)據(jù)量,即可保證更新與點查場景的測試數(shù)據(jù)主鍵全部命中。

測試流程

使用holo-e2e-performance-tool進行數(shù)據(jù)寫入、更新與點查場景測試的步驟如下:

  1. 進行數(shù)據(jù)寫入測試,完成基本參數(shù)配置后測試一定行數(shù)下的寫入性能。

  2. 保留寫入場景的測試數(shù)據(jù)表,沿用寫入場景的參數(shù)配置再次進行寫入測試,即可實現(xiàn)數(shù)據(jù)更新場景的性能測試。

  3. 仍使用數(shù)據(jù)更新場景的測試數(shù)據(jù)表,配置需要查詢的主鍵范圍等參數(shù),進行點查場景性能測試。

準(zhǔn)備工作

基礎(chǔ)環(huán)境準(zhǔn)備

您需要準(zhǔn)備測試所需的基礎(chǔ)環(huán)境。具體內(nèi)容如下:

說明

為了減少可能對測試結(jié)果有影響的變量,建議每次使用新創(chuàng)建的實例進行測試,不要使用升降配的實例。

  1. 創(chuàng)建ECS實例。

    登錄阿里云,創(chuàng)建一個ECS實例,用于客戶端測試。建議ECS規(guī)格如下:

    • 實例規(guī)格:ecs.g6.4xlarge。

    • 操作系統(tǒng):Alibaba Cloud Linux 3.2104 LTS 64位。

    • 存儲:ESSD云盤。

    • ECS與Hologres實例需在相同地域,使用相同的VPC網(wǎng)絡(luò),并處于同一服務(wù)可用區(qū)。

    說明

    上述規(guī)格非必須,您只需在測試過程中監(jiān)測ECS實例的CPU與帶寬,確保二者資源未被全部使用,即ECS實例資源沒有成為測試瓶頸即可。

    更多關(guān)于創(chuàng)建ECS的操作請參見創(chuàng)建實例

  2. 創(chuàng)建Hologres實例。

    本次測試使用了獨享(按量付費)的實例,由于該實例僅用于測試使用,計算資源配置選擇64核256GB。您可以根據(jù)實際業(yè)務(wù)需求,選擇計算資源配置。

    創(chuàng)建Hologres實例詳細(xì)操作請參見購買Hologres

  3. 創(chuàng)建測試數(shù)據(jù)庫。

    您需要登錄創(chuàng)建的Hologres實例,創(chuàng)建一個數(shù)據(jù)庫,詳情請參見創(chuàng)建數(shù)據(jù)庫

測試工具準(zhǔn)備

  1. 在ECS實例中安裝JDK,建議使用JDK 11版本。具體操作,請參見安裝JDK

  2. 下載測試工具holo-e2e-performance-tool

  3. 將測試工具導(dǎo)入ECS實例,詳情可參見使用Workbench上傳或下載文件

性能測試

數(shù)據(jù)寫入場景

原理說明

  • 寫入模式說明:數(shù)據(jù)寫入可以分為Fixed Copy和Insert兩種模式。

    • Fixed Copy模式:通過COPY語句進行數(shù)據(jù)寫入,同時通過Fixed Plan優(yōu)化SQL執(zhí)行,詳情請參見Fixed Plan加速SQL執(zhí)行

    • Insert模式:通過INSERT語句進行數(shù)據(jù)寫入,同時通過Fixed Plan優(yōu)化SQL執(zhí)行。

  • 特殊配置說明:為便于兼容各測試場景、高效推進測試與驗證,測試工具會在配置的表列數(shù)基礎(chǔ)上,額外增加以下列:

    • 主鍵列id:作為表的主鍵和Distribution Key,在測試過程中從1開始逐條遞增。

    • 時間列ts:作為表的Segment Key,在測試過程中寫入當(dāng)前時間。

  • 數(shù)據(jù)寫入原理:在測試過程中,測試工具會將主鍵id從1開始逐條遞增寫入數(shù)據(jù)。時間列寫入當(dāng)前時間。針對配置的其他TEXT列,寫入目標(biāo)長度的字符串加主鍵id。在達到目標(biāo)時間或目標(biāo)行數(shù)后停止寫入,計算測試結(jié)果。

操作步驟

  1. 在ECS實例中創(chuàng)建測試配置文件。

    1. 使用如下命令創(chuàng)建名稱為test_insert.conf的文件。

      vim test_insert.conf
    2. 在文件內(nèi)輸入i后進入編輯模式,添加如下示例內(nèi)容。

      說明

      如下示例以行存表為例,測試列存、行列共存表時請將orientation參數(shù)值修改為columnrow,column

      # 連接配置
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.writeThreadSize=100
      
      # 寫入配置
      put.threadSize=8
      put.testByTime=false
      put.rowNumber=200000000
      put.testTime=600000
      
      # 表配置
      put.tableName=kv_test
      put.columnCount=20
      put.columnSize=20
      put.orientation=row
      
      # 其他配置
      put.createTableBeforeRun=true
      put.deleteTableAfterDone=false
      put.vacuumTableBeforeRun=false

      參數(shù)說明如下。

      模塊

      參數(shù)

      描述

      備注

      連接配置

      jdbcUrl

      Hologres的JDBC連接串,格式為jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>

      ENDPOINT需要填寫Hologres實例的指定VPC域名,您可以進入Hologres管理控制臺實例詳情頁,從網(wǎng)絡(luò)信息中獲取域名。

      username

      當(dāng)前阿里云賬號的AccessKey ID。

      您可以單擊AccessKey 管理,獲取AccessKey ID。

      password

      當(dāng)前阿里云賬號的AccessKey Secret。

      您可以單擊AccessKey 管理,獲取AccessKey Secret。

      writeThreadSize

      每個Holo Client啟動的寫入線程數(shù)。每個Holo Client寫入線程會占用1個連接。僅INSERT模式生效。

      Holo Client詳情請參見Holo Client

      寫入配置

      threadSize

      生成數(shù)據(jù)的線程數(shù)。

      • FIXED_COPY模式:每個線程會占用一個連接,總連接數(shù)即為線程數(shù)。

      • INSERT模式:默認(rèn)共用一個Holo Client,總連接數(shù)為writeThreadSize

      針對本文測試的64核實例規(guī)格,在FIXED_COPY模式下推薦設(shè)置線程數(shù)為8。您需要根據(jù)實例規(guī)格及數(shù)據(jù)特征適當(dāng)調(diào)整該參數(shù)。

      testByTime

      按規(guī)定時間進行測試或按規(guī)定行數(shù)進行測試。

      參數(shù)取值如下:

      • true:表示按規(guī)定時間進行測試。

      • false:表示按規(guī)定行數(shù)進行測試。

      rowNumber

      測試的目標(biāo)行數(shù),testByTime為false時生效。

      不涉及

      testTime

      測試的目標(biāo)時間,單位為毫秒,testByTime為true時生效。

      不涉及

      表配置

      tableName

      測試的目標(biāo)表名。

      不涉及

      columnCount

      表的列數(shù)。每列的數(shù)據(jù)類型均為TEXT。

      不涉及

      columnSize

      表每列的字符長度。

      不涉及

      orientation

      表的存儲類型。

      參數(shù)取值如下:

      • row:行存表。

      • column:列存表。

      • row,column:行列共存表。

      其他配置

      createTableBeforeRun

      測試開始前是否創(chuàng)建表。

      參數(shù)取值如下:

      • true:表示建表。

      • false:表示不建表。

      如果設(shè)為true,測試工具默認(rèn)會先執(zhí)行刪除同名表、再創(chuàng)建表的操作,請注意目標(biāo)表名不與實例中其他表名相同。

      deleteTableAfterDone

      測試結(jié)束后是否刪除表。

      參數(shù)取值如下:

      • true:表示刪除表。

      • false:表示不刪除表。

      如果在寫入測試后,需要基于同一個表進行更新、點查等測試,則需要設(shè)為true。

      vacuumTableBeforeRun

      測試開始前是否執(zhí)行Vacuum操作。

      參數(shù)取值如下:

      • true:表示執(zhí)行Vacuum操作。

      • false:表示不執(zhí)行Vacuum操作。

      執(zhí)行Vacuum會強制觸發(fā)Compaction操作。只影響INSERT模式下的數(shù)據(jù)更新場景測試,不影響FIXED_COPY模式。

    3. Esc鍵,輸入:wq并回車以保存并關(guān)閉文件。

  2. 數(shù)據(jù)寫入測試。

    執(zhí)行如下語句進行測試。

    # 使用Fixed copy模式進行數(shù)據(jù)寫入測試
    java -jar holo-e2e-performance-tool-1.0.0.jar test_insert.conf FIXED_COPY
    • 測試工具會默認(rèn)將結(jié)果文件result.csv保存在根目錄下。其中數(shù)據(jù)寫入與更新場景的模式參數(shù)包含兩個取值,FIXED_COPY對應(yīng)Fixed Copy模式,INSERT對應(yīng)Insert模式。

  3. 獲取測試結(jié)果。

    使用如下命令獲取測試結(jié)果。

    cat result.csv

    測試結(jié)果文件result.csv中包含如下字段。

    字段

    描述

    start

    測試開始時間。

    end

    測試結(jié)束時間。

    count

    測試數(shù)據(jù)行數(shù)。

    qps1

    最后1分鐘的平均QPS。

    qps5

    最后5分鐘的平均QPS。

    qps15

    最后15分鐘的平均QPS。

    latencyMean

    平均延遲。

    INSERT、GET模式收集。

    latencyP99

    P99延遲。

    INSERT、GET模式收集。

    latencyP999

    P999延遲。

    INSERT、GET模式收集。

    version

    實例版本。

數(shù)據(jù)更新場景

原理說明

  • 在測試過程中,測試工具會將主鍵id從1開始逐條遞增進行數(shù)據(jù)更新。針對時間列,更新為當(dāng)前時間。針對配置的其他需要更新的TEXT列(可配置全局更新或局部更新),重新寫入目標(biāo)長度的字符串加主鍵id。在達到目標(biāo)時間或目標(biāo)行數(shù)后停止更新,計算測試結(jié)果。

  • 需要先進行數(shù)據(jù)寫入,并設(shè)置deleteTableAfterDone為false,以確保表中已有數(shù)據(jù),可以進行數(shù)據(jù)更新。

全局更新操作步驟

  1. 在ECS實例中創(chuàng)建測試配置文件。

    1. 使用如下命令創(chuàng)建名稱為test_update.conf的文件。

      vim test_update.conf
    2. 在文件內(nèi)輸入i后進入編輯模式,添加如下示例內(nèi)容。

      說明
      • 如下示例以行存表為例,測試列存、行列共存表時請將orientation參數(shù)值修改為columnrow,column

      • 相比于數(shù)據(jù)寫入場景,僅需將createTableBeforeRun參數(shù)值由true修改為false,其他參數(shù)均保持不變,即可開始數(shù)據(jù)更新場景的測試。

      # 連接配置
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.writeThreadSize=100
      
      # 寫入配置
      put.threadSize=8
      put.testByTime=false
      put.rowNumber=200000000
      put.testTime=600000
      
      # 表配置
      put.tableName=kv_test
      put.columnCount=20
      put.columnSize=20
      put.orientation=row
      
      # 其他配置
      put.createTableBeforeRun=false
      put.deleteTableAfterDone=false
      put.vacuumTableBeforeRun=false

      配置參數(shù)說明請參見數(shù)據(jù)寫入場景的參數(shù)說明。

    3. Esc鍵,輸入:wq并回車以保存并關(guān)閉文件。

  2. 全局更新測試。

    執(zhí)行如下語句進行測試。

    # 使用Fixed copy模式進行數(shù)據(jù)寫入測試
    java -jar holo-e2e-performance-tool-1.0.0.jar test_update.conf FIXED_COPY

  3. 獲取測試結(jié)果。

    使用如下命令獲取測試結(jié)果。

    cat result.csv

    測試結(jié)果文件result.csv中包含如下字段。

    字段

    描述

    start

    測試開始時間。

    end

    測試結(jié)束時間。

    count

    測試數(shù)據(jù)行數(shù)。

    qps1

    最后1分鐘的平均QPS。

    qps5

    最后5分鐘的平均QPS。

    qps15

    最后15分鐘的平均QPS。

    latencyMean

    平均延遲。

    INSERT、GET模式收集。

    latencyP99

    P99延遲。

    INSERT、GET模式收集。

    latencyP999

    P999延遲。

    INSERT、GET模式收集。

    version

    實例版本。

局部更新操作步驟

  1. 在ECS實例中創(chuàng)建測試配置文件。

    1. 使用如下命令創(chuàng)建名稱為test_update_part.conf的文件。

      vim test_update_part.conf
    2. 在文件內(nèi)輸入i后進入編輯模式,添加如下內(nèi)容。

      說明
      • 如下示例以行存表為例,測試列存、行列共存表時請將orientation參數(shù)值修改為columnrow,column

      • 相比于全局更新場景,局部更新場景需要增加參數(shù)writeColumnCount,該參數(shù)用于定義數(shù)據(jù)寫入全部TEXT列中的幾列。本文均將該參數(shù)設(shè)為表列數(shù)columnCount的50%。

      # 連接配置
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.writeThreadSize=100
      
      # 寫入配置
      put.threadSize=8
      put.testByTime=false
      put.rowNumber=200000000
      put.testTime=600000
      
      # 表配置
      put.tableName=kv_test
      put.columnCount=20
      put.columnSize=20
      put.writeColumnCount=10
      put.orientation=row
      
      # 其他配置
      put.createTableBeforeRun=false
      put.deleteTableAfterDone=false
      put.vacuumTableBeforeRun=false

      參數(shù)說明請參見全局更新場景的參數(shù)說明。

    3. Esc鍵,輸入:wq并回車以保存并關(guān)閉文件。

  2. 局部更新場景測試。

    執(zhí)行如下命令進行測試。

    # 使用Fixed copy模式進行數(shù)據(jù)寫入測試
    java -jar holo-e2e-performance-tool-1.0.0.jar test_update_part.conf FIXED_COPY

  3. 獲取測試結(jié)果。

    使用如下命令獲取測試結(jié)果。

    cat result.csv

    測試結(jié)果文件result.csv中包含如下字段。

    字段

    描述

    start

    測試開始時間。

    end

    測試結(jié)束時間。

    count

    測試數(shù)據(jù)行數(shù)。

    qps1

    最后1分鐘的平均QPS。

    qps5

    最后5分鐘的平均QPS。

    qps15

    最后15分鐘的平均QPS。

    latencyMean

    平均延遲。

    INSERT、GET模式收集。

    latencyP99

    P99延遲。

    INSERT、GET模式收集。

    latencyP999

    P999延遲。

    INSERT、GET模式收集。

    version

    實例版本。

點查場景

原理說明

  • 點查模式說明:

    • 同步模式:點查接口是阻塞的,點查調(diào)用需要等待實際請求完成才返回。對于一個工作線程,每個點查請求都對應(yīng)一個SQL從發(fā)起到完成,一個請求結(jié)束后才能進行下一個請求。同步模式適合latency敏感、吞吐需求相對不敏感的場景。

    • 異步模式:點查接口是非阻塞的,點查調(diào)用無須等待實際請求完成,會立即返回。多個點查請求異步提交后,當(dāng)客戶端一個工作線程中判斷滿足攢批大小或者提交間隔后,會把多個點查請求通過攢批方式用一條SQL批量處理。異步模式適合吞吐需求高、latency需求相對較低的場景,如Flink消費實時數(shù)據(jù)進行高吞吐的維表關(guān)聯(lián)等。

  • 點查測試原理:在測試過程中,測試工具會在配置的主鍵范圍內(nèi),隨機生成目標(biāo)id進行同步或異步點查。在達到目標(biāo)時間后停止點查測試,計算測試結(jié)果。

操作步驟

說明
  • 如果自動生成的數(shù)據(jù)無法滿足您需要的點查業(yè)務(wù)場景,您可以自行寫入業(yè)務(wù)數(shù)據(jù),完成主鍵、分布列、分段列等表屬性的創(chuàng)建,而后根據(jù)如下步驟進行點查性能測試。

  • 自行創(chuàng)建的數(shù)據(jù)表中必須包含單列主鍵,主鍵數(shù)據(jù)類型為INT或BIGINT,同時需要注意主鍵的連續(xù)性。

  1. 在ECS實例中創(chuàng)建測試配置文件。

    1. 使用如下命令創(chuàng)建名稱為test.conf的文件。

      vim test.conf
    2. 在文件內(nèi)輸入i后進入編輯模式,添加如下內(nèi)容。

      說明

      如下示例以行存表為例,測試行列共存表時請將orientation參數(shù)值修改為row,column

      # 連接配置
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.readThreadSize=16
      
      # 測試配置
      get.threadSize=8
      get.testTime=300000
      get.tableName=kv_test
      get.async=true
      get.vacuumTableBeforeRun=true
      get.keyRangeParams=L1-200000000
      
      # 表初始化配置(僅PREPARE_GET_DATA模式生效)
      prepareGetData.rowNumber=200000000
      prepareGetData.orientation=row
      put.columnCount=20
      put.columnSize=20

      配置參數(shù)說明如下。

      模塊

      參數(shù)

      描述

      備注

      連接配置

      jdbcUrl

      Hologres的JDBC連接串,格式為jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>

      ENDPOINT需要填寫Hologres實例的指定VPC域名,您可以進入Hologres管理控制臺實例詳情頁,從網(wǎng)絡(luò)信息中獲取域名。

      username

      當(dāng)前阿里云賬號的AccessKey ID。

      您可以單擊AccessKey 管理,獲取AccessKey ID。

      password

      當(dāng)前阿里云賬號的AccessKey Secret。

      您可以單擊AccessKey 管理,獲取AccessKey Secret。

      readThreadSize

      查詢場景的連接數(shù)。

      • 異步模式下為提高攢批效率,建議設(shè)為線程數(shù)threadSize的2~4倍。

      • 同步模式下為確保計算資源充分利用,建議適當(dāng)調(diào)高連接數(shù)。本文設(shè)置的連接數(shù)為100

      測試配置

      threadSize

      生成請求條件的線程數(shù)。

      針對本文測試的64核實例規(guī)格:

      • 在異步點查模式下建議設(shè)置線程數(shù)為8。

      • 在同步點查模式下建議設(shè)置線程數(shù)為500。

      您需要根據(jù)實例規(guī)格及數(shù)據(jù)特征適當(dāng)調(diào)整該參數(shù)。

      testTime

      測試的目標(biāo)時間,單位為毫秒。

      不涉及。

      tableName

      測試的目標(biāo)表名。

      不涉及。

      async

      點查測試的模式是否為異步。

      參數(shù)取值如下:

      • true:表示異步。

      • false:表示同步。

      vacuumTableBeforeRun

      測試開始前是否執(zhí)行vacuum操作。

      參數(shù)取值如下:

      • true:表示執(zhí)行Vacuum操作。

      • false:表示不執(zhí)行Vacuum操作。

      執(zhí)行Vacuum會強制觸發(fā)Compaction操作。

      keyRangeParams

      點查的主鍵參數(shù)范圍,格式為<I/L><Start>-<End>

      參數(shù)說明如下:

      • I/L:I表示INT類型,L表示BIGINT類型。

      • Start:主鍵起始值。

      • End:主鍵結(jié)束值。

      點查測試過程中,測試工具會在配置的范圍內(nèi)隨機生成目標(biāo)主鍵進行查詢。

      表初始化配置(僅PREPARE_GET_DATA模式生效)

      rowNumber

      需要預(yù)生成的表的數(shù)據(jù)行數(shù)。

      不涉及。

      orientation

      需要預(yù)生成的表的存儲類型。

      參數(shù)取值如下:

      • row:行存表。

      • column:列存表。

      • row,column:行列共存表。

      columnCount

      需要預(yù)生成的表的列數(shù)。每列的數(shù)據(jù)類型均為TEXT。

      不涉及。

      columnSize

      需要預(yù)生成的表每列的字符長度。

      不涉及。

    3. Esc鍵,輸入:wq并回車以保存并關(guān)閉文件。

  2. 執(zhí)行如下語句進行測試:

    說明

    點查場景的模式參數(shù)包含兩個取值:PREPARE_GET_DATA對應(yīng)點查前的數(shù)據(jù)準(zhǔn)備模式,GET對應(yīng)點查模式。如果您已寫入業(yè)務(wù)數(shù)據(jù)或已經(jīng)完成了數(shù)據(jù)寫入、更新場景的測試并保留了測試表,則不需使用PREPARE_GET_DATA模式進行數(shù)據(jù)準(zhǔn)備,直接使用GET模式進行點查即可。

    # 使用PREPARE_GET_DATA模式進行數(shù)據(jù)準(zhǔn)備
    java -jar holo-e2e-performance-tool-1.0.0.jar test.conf PREPARE_GET_DATA 
    
    # 使用GET模式進行點查測試
    java -jar holo-e2e-performance-tool-1.0.0.jar test.conf GET
  3. 獲取測試結(jié)果。

    使用如下命令獲取測試結(jié)果。

    cat result.csv

    測試結(jié)果文件result.csv中包含如下字段。

    字段

    描述

    start

    測試開始時間。

    end

    測試結(jié)束時間。

    count

    測試數(shù)據(jù)行數(shù)。

    qps1

    最后1分鐘的平均QPS。

    qps5

    最后5分鐘的平均QPS。

    qps15

    最后15分鐘的平均QPS。

    latencyMean

    平均延遲。

    INSERT、GET模式收集。

    latencyP99

    P99延遲。

    INSERT、GET模式收集。

    latencyP999

    P999延遲。

    INSERT、GET模式收集。

    version

    實例版本。

測試結(jié)果

本文對多個場景進行了測試:數(shù)據(jù)寫入、更新場景均測試行存、列存、行列共存三種存儲類型;由于列存表不適合進行點查,因此數(shù)據(jù)點查場景僅測試行存、行列共存兩種存儲類型。

測試性能數(shù)據(jù)結(jié)果如下,其中表的列數(shù)選擇20、50、100三種規(guī)格,列大小均為20。本文使用的Hologres實例版本為V2.2.9(JDK版本為JDK 11),規(guī)格為64核,該規(guī)格實例推薦的數(shù)據(jù)總規(guī)模在4000萬行到4億行之間,因此本文各場景選取的測試數(shù)據(jù)量均為2億行。

說明
  • 實例規(guī)格、表結(jié)構(gòu)、數(shù)據(jù)量、并發(fā)數(shù)等參數(shù)均會對性能產(chǎn)生較大影響。在實際測試中,您需要先確定Hologres實例規(guī)格、表結(jié)構(gòu)、數(shù)據(jù)量等參數(shù),而后調(diào)整并發(fā)數(shù)進行多次測試。

  • 如果您的目標(biāo)是測試Hologres最優(yōu)性能,您需要在每次測試完成后監(jiān)測實例的CPU資源使用率,如果CPU資源未被全部使用,您需要適當(dāng)增加并發(fā)數(shù)繼續(xù)測試,以獲取最優(yōu)、最準(zhǔn)確的性能結(jié)果。

  • 20列

    測試結(jié)果QPS和latency(點查)具體數(shù)值和對比圖如下所示。其中QPS選用測試結(jié)果文件中的qps1指標(biāo),latency選用測試結(jié)果文件中的latencyMean指標(biāo)。

    存儲格式

    測試場景

    并發(fā)配置

    QPS/萬

    latency/ms

    行存

    寫入(Fixed copy)

    threadSize=8

    81.5

    不涉及

    全局更新(Fixed copy)

    threadSize=8

    81

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    89.4

    不涉及

    點查(異步)

    threadSize=8

    readThreadSize=16

    35.7

    5.42

    點查(同步)

    threadSize=500

    readThreadSize=100

    9.8

    10.51

    列存

    寫入(Fixed copy)

    threadSize=8

    24

    不涉及

    全局更新(Fixed copy)

    threadSize=8

    18.3

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    6.5

    不涉及

    行列共存

    寫入(Fixed copy)

    threadSize=8

    22.3

    不涉及

    全局更新(Fixed copy)

    threadSize=8

    17.6

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    14

    不涉及

    點查(異步)

    threadSize=8

    readThreadSize=16

    34.6

    5.62

    點查(同步)

    threadSize=500

    readThreadSize=100

    9.8

    13.63

    image

  • 50列

    測試結(jié)果QPS和latency(點查)具體數(shù)值及對比圖如下所示。其中QPS選用測試結(jié)果文件中的qps1指標(biāo),latency選用測試結(jié)果文件中的latencyMean指標(biāo)。

    存儲格式

    測試場景

    并發(fā)配置

    QPS/萬

    latency/ms

    行存

    寫入(Fixed copy)

    threadSize=8

    34.4

    不涉及

    全局更新(Fixed copy)

    threadSize=8

    34.5

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    60.0

    不涉及

    點查(異步)

    threadSize=8

    readThreadSize=16

    27.6

    7.83

    點查(同步)

    threadSize=500

    readThreadSize=100

    9.3

    11.33

    列存

    寫入(Fixed copy)

    threadSize=8

    13.7

    不涉及

    全局更新(Fixed copy)

    threadSize=8

    10.4

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    3.1

    不涉及

    行列共存

    寫入(Fixed copy)

    threadSize=8

    11.9

    不涉及

    全局更新(Fixed copy)

    threadSize=8

    9.3

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    8.5

    不涉及

    點查(異步)

    threadSize=8

    readThreadSize=16

    23.2

    9.04

    點查(同步)

    threadSize=500

    readThreadSize=100

    9.3

    13.01

    image

  • 100列

    測試結(jié)果QPS和latency(點查)具體數(shù)值及對比圖如下所示。其中QPS選用測試結(jié)果文件中的qps1指標(biāo),latency選用測試結(jié)果文件中的latencyMean指標(biāo)。

    存儲格式

    測試場景

    并發(fā)配置

    QPS/萬

    latency/ms

    行存

    寫入(Fixed copy)

    threadSize=8

    20.3

    不涉及

    全局更新(Fixed copy)

    threadSize=8

    19.7

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    30.9

    不涉及

    點查(異步)

    threadSize=8

    readThreadSize=16

    19.1

    11.88

    點查(同步)

    threadSize=500

    readThreadSize=100

    8.7

    14.75

    列存

    寫入(Fixed copy)

    threadSize=8

    7.7

    不涉及

    全局更新(Fixed copy)

    threadSize=8

    6.2

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    1.9

    不涉及

    行列共存

    寫入(Fixed copy)

    threadSize=8

    7.0

    不涉及

    全局更新(Fixed copy)

    threadSize=8

    5.4

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    4.2

    不涉及

    點查(異步)

    threadSize=8

    readThreadSize=16

    16.1

    13.97

    點查(同步)

    threadSize=500

    readThreadSize=100

    8.8

    17.50

    image