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

Hologres:Hologres と ClickHouse のパフォーマンス比較テスト

最終更新日:Jun 12, 2025

このトピックでは、ClickBench と Star Schema Benchmark(SSB)単一テーブルデータセットを使用して、Hologres と ClickHouse のパフォーマンステストを実行し、テスト結果を比較する方法について説明します。

ClickBench

ClickBench は、ClickHouse の公式ベンチマークツールです。 ClickBench は、オンライン分析処理(OLAP)や大量データの取り込みなど、実際のワークロードをシミュレートして、ユーザーがデータベースのパフォーマンスを検証し、さまざまな構成またはハードウェア環境における効率を比較し、開発者にパフォーマンスチューニングの参考資料を提供するのに役立ちます。 詳細については、「ClickBench」をご参照ください。

テスト環境

  • Hologres は、32 CU、64 CU、128 CU の 3 つのインスタンス仕様でテストに参加しました。 テストプロセスの詳細については、「ClinkBench-Hologres」をご参照ください。

  • オープンソースの ClickHouse、Doris、StarRocks は、c6a.metal インスタンス(192 vCPU コア)を使用しました。 詳細については、「C6a インスタンス」をご参照ください。

  • ByteHouse は、次の計算リソース仕様を利用しました。

    • 8×L:32 コア

    • 4×M:16 コア

    • 2×S:8 コア

    • XS:4 コア

テスト結果の比較

上記のテスト環境に基づいて ClickBench によって生成されたテスト結果は、同等の計算リソースでは、Hologres が ClickHouse、Doris、StarRocks、ByteHouse などのオープンソースの代替手段よりも大幅に優れたパフォーマンスを発揮することを示しています。 詳細な比較結果は次のとおりです。

Hologres と ClickHouse

image

Hologres と Doris

image

Hologres と StarRocks

image

Hologres と ByteHouse

image

SSB 単一テーブルデータセット

背景情報

SSB は、学術界や産業界で広く使用されているスタースキーマテストセットです。 このテストセットは、さまざまなオンライン分析処理(OLAP)システムの基本的なパフォーマンスメトリックを比較するために使用されます。 ClickHouse は、SSB のスタースキーマをフラットスキーマに変換し、ワイドテーブルを作成して、テスト用の単一テーブルデータセットを生成します。 詳細については、ClickHouse 公式 Web サイトの「Star Schema Benchmark」をご参照ください。

このトピックでは、SSB に基づく単一テーブルデータセットを使用して、Hologres と ClickHouse でパフォーマンステストを実行する方法について説明します。次の図は、テスト結果を示しています。

Test results

  • 単一テーブルに対する 13 件のクエリの中で、Hologres は 11 件のクエリで ClickHouse よりも高速です。

  • 単一テーブルに対する 13 件のクエリにおいて、ClickHouse で使用された合計時間は Hologres の 1.35 倍です。

テスト環境

ネットワーク帯域幅の影響を排除するために、このパフォーマンステストでは、同じエラスティック・コンピュート・サービス ( ECS ) インスタンスを使用して、仮想プライベートクラウド ( VPC ) 内の Hologres と ClickHouse にクエリリクエストを送信します。Hologres では、結果キャッシュ機能は無効になっています。次の表に、具体的なテスト環境を示します。

  • ClickHouse のテスト環境

    項目

    説明

    サーバー

    ECS インスタンス

    CPU

    Intel Xeon (Ice Lake) Platinum 8369B、64 vCPU コア

    メモリ

    256 GiB

    内部帯域幅

    32 Gbit/s

    ディスク

    拡張 SSD ( ESSD )、200 GB、PL1、ディスクあたり最大 50,000 IOPS

    オペレーティングシステム

    CentOS 8.4 64 ビット

    ハードウェア料金 (インターネット帯域幅を除く)

    USD 1370.04 per month

    IPv4 経由のインターネット帯域幅

    200 Mbit/s

    ネットワークトラフィック料金

    USD 2323.85 per month

    ClickHouse バージョン

    V21.8.3.44

  • Hologres のテスト環境

    項目

    説明

    コンピューティングリソース

    64 CPU コアと 256 GB のメモリ

    ストレージリソース

    論理ストレージ: 200 GB

    インターネット帯域幅

    5 Gbit/s 以上

    合計料金

    USD 1653.73 per month

    Hologres バージョン

    V0.10.33

テストデータ

テーブル名

データ行数

説明

lineorder

6 億

SSB の商品注文テーブル。

customer

300 万

SSB の顧客テーブル。

part

140 万

SSB の部品テーブル。

supplier

20 万

SSB のサプライヤーテーブル。

dates

2,556

SSB の日付テーブル。

lineorder_flat

6 億

SSB のテーブルに基づくフラットスキーマのワイドテーブル。

SQL ステートメント

  • ClickHouse の SQL ステートメント

    使用される DDL ステートメントとクエリステートメントは、ClickHouse 公式 Web サイトで提供されているものと同じです。詳細については、ClickHouse 公式 Web サイトのスタースキーマベンチマークをご参照ください。

  • Hologres の SQL ステートメント

    • DDL ステートメント

      DROP TABLE IF EXISTS lineorder_flat;
      
      BEGIN;
      CREATE TABLE IF NOT EXISTS lineorder_flat (
        lo_orderdate     date NOT NULL ,  -- 注文日
        lo_orderkey      int NOT NULL ,  -- 注文キー
        lo_linenumber    int NOT NULL ,  -- 行番号
        lo_custkey       int NOT NULL ,  -- 顧客キー
        lo_partkey       int NOT NULL ,  -- 部品キー
        lo_suppkey       int NOT NULL ,  -- サプライヤキー
        lo_orderpriority text NOT NULL ,  -- 注文優先度
        lo_shippriority  int NOT NULL ,  -- 出荷優先度
        lo_quantity      int NOT NULL ,  -- 数量
        lo_extendedprice int NOT NULL ,  -- 拡張価格
        lo_ordtotalprice int NOT NULL ,  -- 注文合計価格
        lo_discount      int NOT NULL ,  -- 割引
        lo_revenue       int NOT NULL ,  -- 売上
        lo_supplycost    int NOT NULL ,  -- 仕入原価
        lo_tax           int NOT NULL ,  -- 税金
        lo_commitdate    date NOT NULL ,  -- 確定日
        lo_shipmode      text NOT NULL ,  -- 出荷モード
        c_name           text NOT NULL ,  -- 顧客名
        c_address text NOT NULL ,  -- 顧客住所
        c_city text NOT NULL ,  -- 顧客都市
        c_nation text NOT NULL ,  -- 顧客国
        c_region text NOT NULL ,  -- 顧客地域
        c_phone text NOT NULL ,  -- 顧客電話番号
        c_mktsegment text NOT NULL ,  -- 顧客市場セグメント
        s_region text NOT NULL ,  -- サプライヤ地域
        s_nation text NOT NULL ,  -- サプライヤ国
        s_city text NOT NULL ,  -- サプライヤ都市
        s_name text NOT NULL ,  -- サプライヤ名
        s_address text NOT NULL ,  -- サプライヤ住所
        s_phone text NOT NULL ,  -- サプライヤ電話番号
        p_name text NOT NULL ,  -- 部品名
        p_mfgr text NOT NULL ,  -- 部品メーカー
        p_category text NOT NULL ,  -- 部品カテゴリ
        p_brand text NOT NULL ,  -- 部品ブランド
        p_color text NOT NULL ,  -- 部品色
        p_type text NOT NULL ,  -- 部品タイプ
        p_size int NOT NULL ,  -- 部品サイズ
        p_container text NOT NULL,  -- 部品コンテナ
        PRIMARY KEY (lo_orderkey,lo_linenumber)
      );
      CALL set_table_property('lineorder_flat', 'distribution_key', 'lo_orderkey'); -- 分散キーの設定
      CALL set_table_property('lineorder_flat', 'segment_key', 'lo_orderdate'); -- セグメントキーの設定
      CALL set_table_property('lineorder_flat', 'clustering_key', 'lo_orderdate'); -- クラスタリングキーの設定
      CALL set_table_property('lineorder_flat', 'bitmap_columns', 'p_category,s_region,c_region,c_nation,s_nation,c_city,s_city,p_mfgr,p_brand'); -- ビットマップカラムの設定
      CALL set_table_property('lineorder_flat', 'time_to_live_in_seconds', '31536000'); -- TTLの設定
      COMMIT;
    • クエリステートメント

      • Q1.1

        SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS REVENUE  -- 売上合計の算出
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE LO_ORDERDATE >= DATE '1993-01-01'  -- 注文日が 1993 年 1 月 1 日以降
        AND LO_ORDERDATE <= DATE '1993-12-31'  -- 注文日が 1993 年 12 月 31 日以前
        AND LO_DISCOUNT BETWEEN 1 AND 3  -- 割引が 1 から 3 の間
        AND LO_QUANTITY < 25;  -- 数量が 25 未満
      • Q1.2

        SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS REVENUE  -- 売上合計の算出
        FROM LINEORDER_FLAT   -- lineorder_flat テーブルから
        WHERE LO_ORDERDATE >= DATE '1994-01-01'  -- 注文日が 1994 年 1 月 1 日以降
        AND LO_ORDERDATE <= DATE '1994-01-31'  -- 注文日が 1994 年 1 月 31 日以前
        AND LO_DISCOUNT BETWEEN 4 AND 6  -- 割引が 4 から 6 の間
        AND LO_QUANTITY BETWEEN 26 AND 35;  -- 数量が 26 から 35 の間
      • Q1.3

        SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS REVENUE  -- 売上合計の算出
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE EXTRACT(WEEK FROM LO_ORDERDATE ) = 6  -- 注文日が第 6 週
        AND LO_ORDERDATE >= DATE '1994-01-01'  -- 注文日が 1994 年 1 月 1 日以降
        AND LO_ORDERDATE <= DATE '1994-12-31'  -- 注文日が 1994 年 12 月 31 日以前
        AND LO_DISCOUNT BETWEEN 5 AND 7  -- 割引が 5 から 7 の間
        AND LO_QUANTITY BETWEEN 26 AND 35;  -- 数量が 26 から 35 の間
      • Q2.1

        SELECT SUM(LO_REVENUE),  -- 売上合計の算出
        EXTRACT(YEAR FROM LO_ORDERDATE) AS YEAR,  -- 注文年から年を抽出
        P_BRAND  -- 部品ブランド
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE P_CATEGORY = 'MFGR#12'  -- 部品カテゴリが 'MFGR#12'
        AND S_REGION = 'AMERICA'  -- サプライヤ地域が 'AMERICA'
        GROUP BY YEAR, P_BRAND  -- 年と部品ブランドでグループ化
        ORDER BY YEAR, P_BRAND;  -- 年と部品ブランドでソート
      • Q2.2

        SELECT SUM(LO_REVENUE),  -- 売上合計の算出
        EXTRACT(YEAR FROM LO_ORDERDATE) AS YEAR,  -- 注文年から年を抽出
        P_BRAND  -- 部品ブランド
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE P_BRAND BETWEEN 'MFGR#2221' AND 'MFGR#2228'  -- 部品ブランドが 'MFGR#2221' から 'MFGR#2228' の間
        AND S_REGION = 'ASIA'  -- サプライヤ地域が 'ASIA'
        GROUP BY YEAR, P_BRAND  -- 年と部品ブランドでグループ化
        ORDER BY YEAR, P_BRAND;  -- 年と部品ブランドでソート
      • Q2.3

        SELECT SUM(LO_REVENUE),  -- 売上合計の算出
        EXTRACT(YEAR FROM LO_ORDERDATE) AS YEAR,   -- 注文年から年を抽出
        P_BRAND  -- 部品ブランド
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE P_BRAND = 'MFGR#2239'  -- 部品ブランドが 'MFGR#2239'
        AND S_REGION = 'EUROPE'  -- サプライヤ地域が 'EUROPE'
        GROUP BY YEAR, P_BRAND  -- 年と部品ブランドでグループ化
        ORDER BY YEAR, P_BRAND;  -- 年と部品ブランドでソート
      • Q3.1

        SELECT C_NATION,  -- 顧客国
        S_NATION,   -- サプライヤ国
        EXTRACT(YEAR FROM LO_ORDERDATE) AS YEAR,  -- 注文年から年を抽出
        SUM(LO_REVENUE) AS REVENUE  -- 売上合計
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE C_REGION = 'ASIA'  -- 顧客地域が 'ASIA'
        AND S_REGION = 'ASIA'  -- サプライヤ地域が 'ASIA'
        AND LO_ORDERDATE  >= DATE '1992-01-01'  -- 注文日が 1992 年 1 月 1 日以降
        AND LO_ORDERDATE  <= DATE '1997-12-31'  -- 注文日が 1997 年 12 月 31 日以前
        GROUP BY C_NATION,S_NATION,YEAR  -- 顧客国、サプライヤ国、年でグループ化
        ORDER BY  YEAR ASC,REVENUE DESC;  -- 年の昇順、売上の降順でソート
      • Q3.2

        SELECT C_CITY,   -- 顧客都市
        S_CITY,   -- サプライヤ都市
        EXTRACT(YEAR FROM LO_ORDERDATE) AS YEAR,  -- 注文年から年を抽出
        SUM(LO_REVENUE) AS REVENUE  -- 売上合計
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE C_NATION = 'UNITED STATES'  -- 顧客国が 'UNITED STATES'
        AND S_NATION = 'UNITED STATES'  -- サプライヤ国が 'UNITED STATES'
        AND LO_ORDERDATE >= DATE '1992-01-01'  -- 注文日が 1992 年 1 月 1 日以降
        AND LO_ORDERDATE <= DATE '1997-12-31'  -- 注文日が 1997 年 12 月 31 日以前
        GROUP BY C_CITY, S_CITY, YEAR  -- 顧客都市、サプライヤ都市、年でグループ化
        ORDER BY YEAR ASC, REVENUE DESC;  -- 年の昇順、売上の降順でソート
      • Q3.3

        SELECT C_CITY,  -- 顧客都市
        S_CITY,  -- サプライヤ都市
        EXTRACT(YEAR FROM LO_ORDERDATE) AS YEAR,  -- 注文年から年を抽出
        SUM(LO_REVENUE) AS REVENUE  -- 売上合計
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE C_CITY IN ( 'UNITED KI1' ,'UNITED KI5')  -- 顧客都市が 'UNITED KI1' または 'UNITED KI5'
        AND S_CITY IN ( 'UNITED KI1' ,'UNITED KI5')  -- サプライヤ都市が 'UNITED KI1' または 'UNITED KI5'
        AND LO_ORDERDATE >= DATE '1992-01-01'  -- 注文日が 1992 年 1 月 1 日以降
        AND LO_ORDERDATE <= DATE '1997-12-31'  -- 注文日が 1997 年 12 月 31 日以前
        GROUP BY C_CITY, S_CITY, YEAR  -- 顧客都市、サプライヤ都市、年でグループ化
        ORDER BY YEAR ASC, REVENUE DESC;  -- 年の昇順、売上の降順でソート
      • Q3.4

        SELECT C_CITY,  -- 顧客都市
        S_CITY,   -- サプライヤ都市
        EXTRACT(YEAR FROM LO_ORDERDATE) AS YEAR,  -- 注文年から年を抽出
        SUM(LO_REVENUE) AS REVENUE  -- 売上合計
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE C_CITY IN ('UNITED KI1', 'UNITED KI5')  -- 顧客都市が 'UNITED KI1' または 'UNITED KI5'
        AND S_CITY IN ( 'UNITED KI1',  'UNITED KI5')  -- サプライヤ都市が 'UNITED KI1' または 'UNITED KI5'
        AND LO_ORDERDATE >= DATE '1997-12-01'  -- 注文日が 1997 年 12 月 1 日以降
        AND LO_ORDERDATE <= DATE '1997-12-31'  -- 注文日が 1997 年 12 月 31 日以前
        GROUP BY C_CITY, S_CITY, YEAR  -- 顧客都市、サプライヤ都市、年でグループ化
        ORDER BY YEAR ASC, REVENUE DESC;  -- 年の昇順、売上の降順でソート
      • Q4.1

        SELECT EXTRACT(YEAR FROM LO_ORDERDATE) AS YEAR,  -- 注文年から年を抽出
        C_NATION,   -- 顧客国
        SUM(LO_REVENUE - LO_SUPPLYCOST) AS PROFIT  -- 利益合計
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE C_REGION = 'AMERICA'  -- 顧客地域が 'AMERICA'
        AND S_REGION = 'AMERICA'  -- サプライヤ地域が 'AMERICA'
        AND P_MFGR IN ( 'MFGR#1' , 'MFGR#2')  -- 部品メーカーが 'MFGR#1' または 'MFGR#2'
        GROUP BY YEAR, C_NATION  -- 年と顧客国でグループ化
        ORDER BY YEAR ASC, C_NATION ASC;  -- 年と顧客国の昇順でソート
      • Q4.2

        SELECT EXTRACT(YEAR FROM LO_ORDERDATE) AS YEAR,  -- 注文年から年を抽出
        S_NATION,  -- サプライヤ国
        P_CATEGORY,  -- 部品カテゴリ
        SUM(LO_REVENUE - LO_SUPPLYCOST) AS PROFIT  -- 利益合計
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE C_REGION = 'AMERICA'  -- 顧客地域が 'AMERICA'
        AND S_REGION = 'AMERICA'  -- サプライヤ地域が 'AMERICA'
        AND LO_ORDERDATE >= DATE '1997-01-01'  -- 注文日が 1997 年 1 月 1 日以降
        AND LO_ORDERDATE <= DATE '1998-12-31'  -- 注文日が 1998 年 12 月 31 日以前
        AND  P_MFGR IN ( 'MFGR#1' , 'MFGR#2')  -- 部品メーカーが 'MFGR#1' または 'MFGR#2'
        GROUP BY YEAR, S_NATION, P_CATEGORY  -- 年、サプライヤ国、部品カテゴリでグループ化
        ORDER BY  YEAR ASC, S_NATION ASC, P_CATEGORY ASC;  -- 年、サプライヤ国、部品カテゴリの昇順でソート
      • Q4.3

        SELECT EXTRACT(YEAR FROM LO_ORDERDATE) AS YEAR,  -- 注文年から年を抽出
        S_CITY,  -- サプライヤ都市
        P_BRAND,  -- 部品ブランド
        SUM(LO_REVENUE - LO_SUPPLYCOST) AS PROFIT  -- 利益合計
        FROM LINEORDER_FLAT  -- lineorder_flat テーブルから
        WHERE S_NATION = 'UNITED STATES'  -- サプライヤ国が 'UNITED STATES'
        AND LO_ORDERDATE >= DATE '1997-01-01'  -- 注文日が 1997 年 1 月 1 日以降
        AND LO_ORDERDATE <= DATE '1998-12-31'  -- 注文日が 1998 年 12 月 31 日以前
        AND P_CATEGORY = 'MFGR#14'  -- 部品カテゴリが 'MFGR#14'
        GROUP BY  YEAR,  S_CITY, P_BRAND  -- 年、サプライヤ都市、部品ブランドでグループ化
        ORDER BY YEAR ASC,  S_CITY ASC,  P_BRAND ASC;  -- 年、サプライヤ都市、部品ブランドの昇順でソート

テスト結果

クエリステートメント

Hologres で使用された時間 (単位: ミリ秒)

ClickHouse で使用された時間 (単位: ミリ秒)

ClickHouse で使用された時間 / Hologres で使用された時間 (単位: 倍)

Q1.1

43.66

59.00

1.35

Q1.2

20.68

21.00

1.02

Q1.3

57.98

22.00

0.38

Q2.1

247.63

254.00

1.03

Q2.2

251.90

281.00

1.12

Q2.3

165.73

214.00

1.29

Q3.1

332.84

434.00

1.30

Q3.2

247.79

348.00

1.40

Q3.3

117.46

299.00

2.55

Q3.4

30.05

25.00

0.83

Q4.1

298.48

456.00

1.53

Q4.2

116.47

171.00

1.47

Q4.3

97.68

146.00

1.49

合計

2,028.35

2,730.00

1.35