全部產品
Search
文件中心

Hologres:資料寫入、更新、點查情境壓測最佳實務

更新時間:Feb 12, 2025

Hologres是相容PostgreSQL協議的一站式即時數倉引擎,支援海量資料即時寫入、即時更新、即時分析,既支援PB級資料多維分析(OLAP)與即席分析(Ad Hoc),又支援高並發低延遲的線上資料服務(Serving)。本文為您介紹Hologres在資料寫入、資料更新、點查情境的效能測試方法與結果。

測試方案介紹

測試情境

本文進行測試的情境如下。

  • 資料寫入情境:主要用於測試Hologres針對行存、列存、行列共存表進行資料寫入的效能。

  • 資料更新情境:主要用於測試Hologres針對行存、列存、行列共存表,在有主鍵的情況下進行資料更新的效能,包含全域更新與局部更新兩個情境。

  • 點查情境:主要用於測試Hologres針對行存、行列共存表進行主鍵過濾的點查效能。

測試載入器

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

holo-e2e-performance-tool測試載入器具備如下優勢:

  • 測試過程簡便:holo-e2e-performance-tool測試載入器整合了建表、寫入資料構造、效能測試等全部模組,無需提前準備測試資料。

  • 參數配置靈活:僅需簡單調整配置項,即可對錶的列數、大小、行數等參數進行定製化設計,完成更加貼近實際業務情境的效能測試。

  • 測試結果準確:測試資料的主鍵為遞增的連續整數,因此只需對應調整參數配置項中的資料量,即可保證更新與點查情境的測試資料主鍵全部命中。

測試流程

使用holo-e2e-performance-tool進行資料寫入、更新與點查情境測試的步驟如下:

  1. 進行資料寫入測試,完成基本參數配置後測試一定行數下的寫入效能。

  2. 保留寫入情境的測試資料表,沿用寫入情境的參數配置再次進行寫入測試,即可實現資料更新情境的效能測試。

  3. 仍使用資料更新情境的測試資料表,配置需要查詢的主鍵範圍等參數,進行點查情境效能測試。

準備工作

基礎環境準備

您需要準備測試所需的基礎環境。具體內容如下:

說明

為了減少可能對測試結果有影響的變數,建議每次使用新建立的執行個體進行測試,不要使用升降配的執行個體。

  1. 建立ECS執行個體。

    登入阿里雲,建立一個ECS執行個體,用於用戶端測試。建議ECS規格如下:

    • 執行個體規格:ecs.g6.4xlarge。

    • 作業系統:Alibaba Cloud Linux 3.2104 LTS 64位。

    • 儲存:ESSD雲端硬碟。

    • ECS與Hologres執行個體需在相同地區,使用相同的VPC網路,並處於同一服務可用性區域。

    說明

    上述規格非必須,您只需在測試過程中監測ECS執行個體的CPU與頻寬,確保二者資源未被全部使用,即ECS執行個體資源沒有成為測試瓶頸即可。

    更多關於建立ECS的操作請參見建立執行個體

  2. 建立Hologres執行個體。

    本次測試使用了獨享(隨用隨付)的執行個體,由於該執行個體僅用於測試使用,計算資源配置選擇64核256GB。您可以根據實際業務需求,選擇計算資源配置。

    建立Hologres執行個體詳細操作請參見購買Hologres

  3. 建立測試資料庫。

    您需要登入建立的Hologres執行個體,建立一個資料庫,詳情請參見建立資料庫

測試載入器準備

  1. 在ECS執行個體中安裝JDK,建議使用JDK 11版本。具體操作,請參見手動部署OpenJDK

  2. 下載測試載入器holo-e2e-performance-tool

  3. 將測試載入器匯入ECS執行個體,詳情可參見使用Workbench上傳或下載檔案

效能測試

資料寫入情境

原理說明

  • 寫入模式說明:資料寫入可以分為Fixed Copy和Insert兩種模式。

    • Fixed Copy模式:通過COPY語句進行資料寫入,同時通過Fixed Plan最佳化SQL執行,詳情請參見Fixed Plan加速SQL執行

    • Insert模式:通過INSERT語句進行資料寫入,同時通過Fixed Plan最佳化SQL執行。

  • 特殊配置說明:為便於相容各測試情境、高效推進測試與驗證,測試載入器會在配置的表列數基礎上,額外增加以下列:

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

    • 時間列ts:作為表的Segment Key,在測試過程中寫入目前時間。

  • 資料寫入原理:在測試過程中,測試載入器會將主鍵id從1開始逐條遞增寫入資料。時間列寫入目前時間。針對配置的其他TEXT列,寫入目標長度的字串加主鍵id。在達到目標時間或目標行數後停止寫入,計算測試結果。

操作步驟

  1. 在ECS執行個體中建立測試組態檔案。

    1. 使用如下命令建立名稱為test_insert.conf的檔案。

      vim test_insert.conf
    2. 在檔案內輸入i後進入編輯模式,添加如下樣本內容。

      說明

      如下樣本以行存表為例,測試列存、行列共存表時請將orientation參數值修改為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

      參數說明如下。

      模組

      參數

      描述

      備忘

      串連配置

      jdbcUrl

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

      ENDPOINT需要填寫Hologres執行個體的指定VPC網域名稱,您可以進入Hologres管理主控台執行個體詳情頁,從網路資訊中擷取網域名稱。

      username

      當前阿里雲帳號的AccessKey ID。

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

      password

      當前阿里雲帳號的AccessKey Secret。

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

      writeThreadSize

      每個Holo Client啟動的寫入線程數。每個Holo Client寫入線程會佔用1個串連。僅INSERT模式生效。

      Holo Client詳情請參見Holo Client

      寫入配置

      threadSize

      產生資料的線程數。

      • FIXED_COPY模式:每個線程會佔用一個串連,總串連數即為線程數。

      • INSERT模式:預設共用一個Holo Client,總串連數為writeThreadSize

      針對本文測試的64核執行個體規格,在FIXED_COPY模式下推薦設定線程數為8。您需要根據執行個體規格及資料特徵適當調整該參數。

      testByTime

      按規定時間進行測試或按規定行數進行測試。

      參數取值如下:

      • true:表示按規定時間進行測試。

      • false:表示按規定行數進行測試。

      rowNumber

      測試的目標行數,testByTime為false時生效。

      不涉及

      testTime

      測試的目標時間,單位為毫秒,testByTime為true時生效。

      不涉及

      表配置

      tableName

      測試的目標表名。

      不涉及

      columnCount

      表的列數。每列的資料類型均為TEXT。

      不涉及

      columnSize

      表每列的字元長度。

      不涉及

      orientation

      表的儲存類型。

      參數取值如下:

      • row:行存表。

      • column:列存表。

      • row,column:行列共存表。

      其他配置

      createTableBeforeRun

      測試開始前是否建立表。

      參數取值如下:

      • true:表示建表。

      • false:表示不建表。

      如果設為true,測試載入器預設會先執行刪除同名表、再建立表的操作,請注意目標表名不與執行個體中其他表名相同。

      deleteTableAfterDone

      測試結束後是否刪除表。

      參數取值如下:

      • true:表示刪除表。

      • false:表示不刪除表。

      如果在寫入測試後,需要基於同一個表進行更新、點查等測試,則需要設為true。

      vacuumTableBeforeRun

      測試開始前是否執行Vacuum操作。

      參數取值如下:

      • true:表示執行Vacuum操作。

      • false:表示不執行Vacuum操作。

      執行Vacuum會強制觸發Compaction操作。隻影響INSERT模式下的資料更新情境測試,不影響FIXED_COPY模式。

    3. Esc鍵,輸入:wq並斷行符號以儲存並關閉檔案。

  2. 資料寫入測試。

    執行如下語句進行測試。

    # 使用Fixed copy模式進行資料寫入測試
    java -jar holo-e2e-performance-tool-1.0.0.jar test_insert.conf FIXED_COPY
    • 測試載入器會預設將結果檔案result.csv儲存在根目錄下。其中資料寫入與更新情境的模式參數包含兩個取值,FIXED_COPY對應Fixed Copy模式,INSERT對應Insert模式。

  3. 擷取測試結果。

    使用如下命令擷取測試結果。

    cat result.csv

    測試結果檔案result.csv中包含如下欄位。

    欄位

    描述

    start

    測試開始時間。

    end

    測試結束時間。

    count

    測試資料行數。

    qps1

    最後1分鐘的平均QPS。

    qps5

    最後5分鐘的平均QPS。

    qps15

    最後15分鐘的平均QPS。

    latencyMean

    平均延遲。

    INSERT、GET模式收集。

    latencyP99

    P99延遲。

    INSERT、GET模式收集。

    latencyP999

    P999延遲。

    INSERT、GET模式收集。

    version

    執行個體版本。

資料更新情境

原理說明

  • 在測試過程中,測試載入器會將主鍵id從1開始逐條遞增進行資料更新。針對時間列,更新為目前時間。針對配置的其他需要更新的TEXT列(可配置全域更新或局部更新),重新寫入目標長度的字串加主鍵id。在達到目標時間或目標行數後停止更新,計算測試結果。

  • 需要先進行資料寫入,並設定deleteTableAfterDone為false,以確保表中已有資料,可以進行資料更新。

全域更新操作步驟

  1. 在ECS執行個體中建立測試組態檔案。

    1. 使用如下命令建立名稱為test_update.conf的檔案。

      vim test_update.conf
    2. 在檔案內輸入i後進入編輯模式,添加如下樣本內容。

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

      • 相比於資料寫入情境,僅需將createTableBeforeRun參數值由true修改為false,其他參數均保持不變,即可開始資料更新情境的測試。

      # 串連配置
      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

      配置參數說明請參見資料寫入情境的參數說明。

    3. Esc鍵,輸入:wq並斷行符號以儲存並關閉檔案。

  2. 全域更新測試。

    執行如下語句進行測試。

    # 使用Fixed copy模式進行資料寫入測試
    java -jar holo-e2e-performance-tool-1.0.0.jar test_update.conf FIXED_COPY

  3. 擷取測試結果。

    使用如下命令擷取測試結果。

    cat result.csv

    測試結果檔案result.csv中包含如下欄位。

    欄位

    描述

    start

    測試開始時間。

    end

    測試結束時間。

    count

    測試資料行數。

    qps1

    最後1分鐘的平均QPS。

    qps5

    最後5分鐘的平均QPS。

    qps15

    最後15分鐘的平均QPS。

    latencyMean

    平均延遲。

    INSERT、GET模式收集。

    latencyP99

    P99延遲。

    INSERT、GET模式收集。

    latencyP999

    P999延遲。

    INSERT、GET模式收集。

    version

    執行個體版本。

局部更新操作步驟

  1. 在ECS執行個體中建立測試組態檔案。

    1. 使用如下命令建立名稱為test_update_part.conf的檔案。

      vim test_update_part.conf
    2. 在檔案內輸入i後進入編輯模式,添加如下內容。

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

      • 相比於全域更新情境,局部更新情境需要增加參數writeColumnCount,該參數用於定義資料寫入全部TEXT列中的幾列。本文均將該參數設為表列數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

      參數說明請參見全域更新情境的參數說明。

    3. Esc鍵,輸入:wq並斷行符號以儲存並關閉檔案。

  2. 局部更新情境測試。

    執行如下命令進行測試。

    # 使用Fixed copy模式進行資料寫入測試
    java -jar holo-e2e-performance-tool-1.0.0.jar test_update_part.conf FIXED_COPY

  3. 擷取測試結果。

    使用如下命令擷取測試結果。

    cat result.csv

    測試結果檔案result.csv中包含如下欄位。

    欄位

    描述

    start

    測試開始時間。

    end

    測試結束時間。

    count

    測試資料行數。

    qps1

    最後1分鐘的平均QPS。

    qps5

    最後5分鐘的平均QPS。

    qps15

    最後15分鐘的平均QPS。

    latencyMean

    平均延遲。

    INSERT、GET模式收集。

    latencyP99

    P99延遲。

    INSERT、GET模式收集。

    latencyP999

    P999延遲。

    INSERT、GET模式收集。

    version

    執行個體版本。

點查情境

原理說明

  • 點查模式說明:

    • 同步模式:點查介面是阻塞的,點查調用需要等待實際請求完成才返回。對於一個背景工作執行緒,每個點查請求都對應一個SQL從發起到完成,一個請求結束後才能進行下一個請求。同步模式適合latency敏感、吞吐需求相對不敏感的情境。

    • 非同步模式:點查介面是非阻塞的,點查調用無須等待實際請求完成,會立即返回。多個點查請求非同步提交後,當用戶端一個背景工作執行緒中判斷滿足攢批大小或者提交間隔後,會把多個點查請求通過攢批方式用一條SQL批量處理。非同步模式適合吞吐需求高、latency需求相對較低的情境,如Flink消費即時資料進行高吞吐的維表關聯等。

  • 點查測試原理:在測試過程中,測試載入器會在配置的主鍵範圍內,隨機產生目標id進行同步或非同步點查。在達到目標時間後停止點查測試,計算測試結果。

操作步驟

說明
  • 如果自動產生的資料無法滿足您需要的點查業務情境,您可以自行寫入業務資料,完成主鍵、分布列、分段列等表屬性的建立,而後根據如下步驟進行點查效能測試。

  • 自行建立的資料表中必須包含單列主鍵,主鍵資料類型為INT或BIGINT,同時需要注意主鍵的連續性。

  1. 在ECS執行個體中建立測試組態檔案。

    1. 使用如下命令建立名稱為test.conf的檔案。

      vim test.conf
    2. 在檔案內輸入i後進入編輯模式,添加如下內容。

      說明

      如下樣本以行存表為例,測試行列共存表時請將orientation參數值修改為row,column

      # 串連配置
      holoClient.jdbcUrl=jdbc:hologres://<ENDPOINT>:<PORT>/<DBNAME>
      holoClient.username=<AccessKey_ID>
      holoClient.password=<AccessKey_Secret>
      holoClient.readThreadSize=32
      
      # 測試組態
      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

      配置參數說明如下。

      模組

      參數

      描述

      備忘

      串連配置

      jdbcUrl

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

      ENDPOINT需要填寫Hologres執行個體的指定VPC網域名稱,您可以進入Hologres管理主控台執行個體詳情頁,從網路資訊中擷取網域名稱。

      username

      當前阿里雲帳號的AccessKey ID。

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

      password

      當前阿里雲帳號的AccessKey Secret。

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

      readThreadSize

      查詢情境的串連數。

      • 非同步模式下為提高攢批效率,建議設為線程數threadSize的2~4倍。

      • 同步模式下為確保計算資源充分利用,建議適當調高串連數。本文設定的串連數為100

      測試組態

      threadSize

      產生請求條件的線程數。

      針對本文測試的64核執行個體規格:

      • 在非同步點查模式下建議設定線程數為8。

      • 在同步點查模式下建議設定線程數為500。

      您需要根據執行個體規格及資料特徵適當調整該參數。

      testTime

      測試的目標時間,單位為毫秒。

      不涉及。

      tableName

      測試的目標表名。

      不涉及。

      async

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

      參數取值如下:

      • true:表示非同步。

      • false:表示同步。

      vacuumTableBeforeRun

      測試開始前是否執行vacuum操作。

      參數取值如下:

      • true:表示執行Vacuum操作。

      • false:表示不執行Vacuum操作。

      執行Vacuum會強制觸發Compaction操作。

      keyRangeParams

      點查的主鍵參數範圍,格式為<I/L><Start>-<End>

      參數說明如下:

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

      • Start:主鍵起始值。

      • End:主鍵結束值。

      點查測試過程中,測試載入器會在配置的範圍內隨機產生目標主鍵進行查詢。

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

      rowNumber

      需要預產生的表的資料行數。

      不涉及。

      orientation

      需要預產生的表的儲存類型。

      參數取值如下:

      • row:行存表。

      • column:列存表。

      • row,column:行列共存表。

      columnCount

      需要預產生的表的列數。每列的資料類型均為TEXT。

      不涉及。

      columnSize

      需要預產生的表每列的字元長度。

      不涉及。

    3. Esc鍵,輸入:wq並斷行符號以儲存並關閉檔案。

  2. 執行如下語句進行測試:

    說明

    點查情境的模式參數包含兩個取值:PREPARE_GET_DATA對應點查前的資料準備模式,GET對應點查模式。如果您已寫入業務資料或已經完成了資料寫入、更新情境的測試並保留了測試表,則不需使用PREPARE_GET_DATA模式進行資料準備,直接使用GET模式進行點查即可。

    # 使用PREPARE_GET_DATA模式進行資料準備
    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. 擷取測試結果。

    使用如下命令擷取測試結果。

    cat result.csv

    測試結果檔案result.csv中包含如下欄位。

    欄位

    描述

    start

    測試開始時間。

    end

    測試結束時間。

    count

    測試資料行數。

    qps1

    最後1分鐘的平均QPS。

    qps5

    最後5分鐘的平均QPS。

    qps15

    最後15分鐘的平均QPS。

    latencyMean

    平均延遲。

    INSERT、GET模式收集。

    latencyP99

    P99延遲。

    INSERT、GET模式收集。

    latencyP999

    P999延遲。

    INSERT、GET模式收集。

    version

    執行個體版本。

測試結果

本文對多個情境進行了測試:資料寫入、更新情境均測試行存、列存、行列共存三種儲存類型;由於列存表不適合進行點查,因此資料點查情境僅測試行存、行列共存兩種儲存類型。

測試效能資料結果如下,其中表的列數選擇20、50、100三種規格,列大小均為20。本文使用的Hologres執行個體版本為V3.0.22(JDK版本為JDK 11),規格為64核,該規格執行個體推薦的資料總規模在4000萬行到4億行之間,因此本文各情境選取的測試資料量均為2億行。

說明
  • 執行個體規格、表結構、資料量、並發數等參數均會對效能產生較大影響。在實際測試中,您需要先確定Hologres執行個體規格、表結構、資料量等參數,而後調整並發數進行多次測試。

  • 如果您的目標是測試Hologres最優效能,您需要在每次測試完成後監測執行個體的CPU資源使用率,如果CPU資源未被全部使用,您需要適當增加並發數繼續測試,以擷取最優、最準確的效能結果。

  • 20列

    測試結果QPS和latency(點查)具體數值如下所示。其中QPS選用測試結果檔案中的qps1指標,latency選用測試結果檔案中的latencyMean指標。

    儲存格式

    測試情境

    並發配置

    QPS/萬

    latency/ms

    行存

    寫入(Fixed copy)

    threadSize=8

    88.3

    不涉及

    全域更新(Fixed copy)

    threadSize=8

    91.1

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    136.7

    不涉及

    點查(非同步)

    threadSize=8

    readThreadSize=32

    43.6

    8.60

    點查(同步)

    threadSize=100

    readThreadSize=100

    26.1

    7.88

    列存

    寫入(Fixed copy)

    threadSize=8

    29.9

    不涉及

    全域更新(Fixed copy)

    threadSize=8

    18.5

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    12.8

    不涉及

    行列共存

    寫入(Fixed copy)

    threadSize=8

    25.0

    不涉及

    全域更新(Fixed copy)

    threadSize=8

    17.3

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    17.5

    不涉及

    點查(非同步)

    threadSize=8

    readThreadSize=32

    40.4

    8.75

    點查(同步)

    threadSize=100

    readThreadSize=100

    27.0

    8.12

  • 50列

    測試結果QPS和latency(點查)具體數值及對比圖如下所示。其中QPS選用測試結果檔案中的qps1指標,latency選用測試結果檔案中的latencyMean指標。

    儲存格式

    測試情境

    並發配置

    QPS/萬

    latency/ms

    行存

    寫入(Fixed copy)

    threadSize=8

    41.9

    不涉及

    全域更新(Fixed copy)

    threadSize=8

    38.2

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    69.8

    不涉及

    點查(非同步)

    threadSize=8

    readThreadSize=32

    35.7

    10.20

    點查(同步)

    threadSize=100

    readThreadSize=100

    24.0

    9.28

    列存

    寫入(Fixed copy)

    threadSize=8

    15.5

    不涉及

    全域更新(Fixed copy)

    threadSize=8

    11.7

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    6.4

    不涉及

    行列共存

    寫入(Fixed copy)

    threadSize=8

    13.7

    不涉及

    全域更新(Fixed copy)

    threadSize=8

    10.5

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    11.6

    不涉及

    點查(非同步)

    threadSize=8

    readThreadSize=32

    31.5

    12.29

    點查(同步)

    threadSize=100

    readThreadSize=100

    24.2

    10.00

  • 100列

    測試結果QPS和latency(點查)具體數值及對比圖如下所示。其中QPS選用測試結果檔案中的qps1指標,latency選用測試結果檔案中的latencyMean指標。

    儲存格式

    測試情境

    並發配置

    QPS/萬

    latency/ms

    行存

    寫入(Fixed copy)

    threadSize=8

    24.4

    不涉及

    全域更新(Fixed copy)

    threadSize=8

    22.5

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    38.1

    不涉及

    點查(非同步)

    threadSize=8

    readThreadSize=32

    26.6

    14.34

    點查(同步)

    threadSize=100

    readThreadSize=100

    21.4

    12.12

    列存

    寫入(Fixed copy)

    threadSize=8

    8.4

    不涉及

    全域更新(Fixed copy)

    threadSize=8

    6.9

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    3.1

    不涉及

    行列共存

    寫入(Fixed copy)

    threadSize=8

    7.6

    不涉及

    全域更新(Fixed copy)

    threadSize=8

    5.3

    不涉及

    局部更新(Fixed copy)

    threadSize=8

    6.8

    不涉及

    點查(非同步)

    threadSize=8

    readThreadSize=32

    25.0

    15.66

    點查(同步)

    threadSize=100

    readThreadSize=100

    21.4

    13.79