ApsaraDB for SelectDB は、パフォーマンス専有型で使いやすいデータ分析サービスを提供します。ワイドテーブル集約、複数テーブル結合、高同時実行ポイントクエリなどのシナリオで優れたパフォーマンスを発揮します。このトピックでは、SSB 標準テストと SSB フラットテストを使用して、1000 GB の Star Schema Benchmark (SSB) テストデータセットにおける SelectDB のパフォーマンスを評価する方法について説明します。
概要
Star Schema Benchmark (SSB) は、データウェアハウスシナリオ向けの軽量なパフォーマンステストデータセットです。SSB は、Transaction Processing Performance Council - H (TPC-H) ベンチマークに基づいた、簡略化されたスタースキーマデータセットを提供します。主にスタースキーマにおける複数テーブル結合クエリのパフォーマンスをテストします。業界では、クエリエンジンのパフォーマンスをテストするために、SSB をフラット化してワイドテーブルモデル (SSB フラット) にすることも一般的です。
SSB を含む標準テストデータセットは、実際のビジネスシナリオとは大きく異なることがよくあります。一部のテストでは、特定のデータセットに対するパラメーターチューニングも行われます。したがって、標準テストの結果は、特定のシナリオにおけるデータベースのパフォーマンスを反映するにすぎません。実際のビジネスデータを使用して、さらなるテストを実施する必要があります。
事前準備
ステップ 1:宛先インスタンスの準備
インスタンスの準備
宛先インスタンスがすでにある場合は、その構成が次の要件を満たしていることを確認してください。
宛先インスタンスがない場合は、インスタンスを作成します。
このトピックのパフォーマンステストで使用されるインスタンスは、次の要件を満たしています。
カーネルバージョンが 4.1 以降であること。
宛先インスタンスのカーネルバージョンが 4.1 より前の場合は、インスタンスをアップグレードする必要があります。詳細については、「カーネルバージョンのアップグレード」をご参照ください。
仕様は 96 コア、384 GB メモリ以上である必要があります。このテストでは、96 コア、384 GB メモリのインスタンスを使用します。
クラスターキャッシュ領域は 1200 GB 以上である必要があります。このテストでは、1200 GB のキャッシュ領域を使用します。
streaming_load_max_mbパラメーターを最大値に設定します。テスト中、ツールはストリームロードを使用して SelectDB にデータをアップロードします。このテストのデータ量は、デフォルトのストリームロードの上限である 10,240 MB を超えます。BE の streaming_load_max_mb パラメーターを最大値の 10,240,000 MB に設定する必要があります。パラメーターの変更方法の詳細については、「パラメーター設定」をご参照ください。
テストデータ用のターゲットデータベースを作成します。
ターゲットデータベースがすでにある場合は、この操作をスキップできます。
インスタンスに接続します。詳細については、「MySQL クライアントを使用した ApsaraDB for SelectDB インスタンスへの接続」をご参照ください。
データベースを作成します。
このテストでは、test_db という名前のターゲットデータベースを使用します。次の文を実行します。
CREATE DATABASE test_db;
ステップ 2:テストサーバーの準備
以下の依存関係インストールスクリプトは Linux サーバー用です。サーバーが異なるオペレーティングシステムを使用している場合は、インストールスクリプトを適宜変更する必要があります。
注意事項
サーバーに関する以下の点にご注意ください。
サーバー上で Git を使用して SSB テストツールをダウンロードする予定の場合は、サーバーのパブリックエンドポイントを有効にする必要があります。
新しい Elastic Compute Service (ECS) インスタンス:ECS インスタンスを購入する際に、[パブリック IP] で [パブリック IPv4 アドレスの割り当て] を選択します。
パブリックエンドポイントのない既存の ECS インスタンス:ECS インスタンスのパブリックエンドポイントを有効にする方法については、「パブリックエンドポイントの有効化」をご参照ください。
このテストでは約 1000 GB のデータファイルが生成されます。サーバーに十分なディスク領域があることを確認してください。
手順
宛先サーバーを作成します。
宛先サーバーがすでにある場合は、このステップをスキップできます。
宛先サーバーがない場合は、カスタム ECS インスタンスを作成し、イメージに Alibaba Cloud Linux を選択します。
MySQL クライアントの依存関係をインストールします。
yum install mysql(オプション) Git をインストールします。
このテストでは、Git を使用して SSB ツールをダウンロードします。他の方法で SSB ツールをすでに入手しており、手動でサーバーにアップロードする予定の場合は、このステップをスキップできます。
yum install git
ステップ 3:ネットワーク接続の確保
SSB テストツールがインストールされる宛先サーバーが SelectDB インスタンスに接続できることを確認してください。
SelectDB インスタンスのパブリックエンドポイントを申請します。詳細については、「パブリックエンドポイントの申請と解放」をご参照ください。
SSB テストツールの宛先サーバーが、ApsaraDB for SelectDB インスタンスと同じ VPC 内にある Alibaba Cloud サーバーである場合は、このステップをスキップできます。
SSB テストツールの宛先サーバーの IP アドレスを ApsaraDB for SelectDB インスタンスのホワイトリストに追加します。詳細については、「ホワイトリストの設定」をご参照ください。
ステップ 4:テストデータセットの理解
このテストでは、SSB は 1000 GB のデータを生成し、それを SelectDB にインポートして SelectDB のパフォーマンスをテストします。次のセクションでは、1000 GB のテストデータセット内のデータテーブルについて説明します。
SSB テーブル名 | 行数 | 注釈 |
lineorder | 5999989709 | 注文詳細テーブル。 |
customer | 30000000 | 顧客情報テーブル。 |
part | 2000000 | 部品情報テーブル。 |
supplier | 2000000 | サプライヤー情報テーブル。 |
dates | 2556 | 日付テーブル。 |
lineorder_flat | 5999989709 | フラット化されたワイドテーブル。 |
操作手順
以下のスクリプトは Linux サーバー用です。サーバーが異なるオペレーティングシステムを使用している場合は、スクリプトを適宜変更する必要があります。
ステップ 1:宛先サーバーへのログイン
ご利用のサーバーが Alibaba Cloud ECS インスタンスである場合、ログイン方法については「ECS インスタンスへの接続」をご参照ください。
他の種類のサーバーについては、関連するプロダクトドキュメントをご参照ください。
ステップ 2:SSB データ生成ツールのダウンロードとインストール
ツールをダウンロードします。
このテストでは、Git を使用してツールをダウンロードします。次のスクリプトを実行します。
git clone https://github.com/apache/doris.git && cd ./doris/tools/ssb-toolsまた、ssb-tools からツールをダウンロードし、手動で宛先サーバーにアップロードすることもできます。
コンパイルツール
次のスクリプトを実行してツールをコンパイルします。
sh bin/build-ssb-dbgen.sh
ステップ 3:SSB テストデータセットの生成
大量のデータを生成するには時間がかかります。実際の所要時間はサーバーのパフォーマンスによって異なります。
テストツールのインストールディレクトリでスクリプトを実行して、テストデータセットを生成します。
構文:
sh bin/gen-ssb-data.sh -s <yourAimDataNum>パラメーターの説明:
yourAimDataNum:
意味:SSB を使用して生成するデータのサイズ。
単位:GB
これは中規模のテストであり、1000 GB (1 TB) のテストデータセットを生成する必要があります。このステップには時間がかかる場合があります。タスクをバックグラウンドで実行します。
nohup sh bin/gen-ssb-data.sh -s 1000 > gen-ssb-data.log 2>&1 &実行結果は、ツールのインストールディレクトリにある gen-ssb-data.log ファイルに保存されます。このファイルを表示して、プロセスが正しく実行されたことを確認できます。
テストデータセットは、ツールのインストールパスの bin ディレクトリ内にある ssb-data ディレクトリに保存されます。データファイルには .tbl という接尾辞が付いています。
データ生成中に「bang!」という警告が表示され、テストデータ用のディスク領域が十分であることを確認した場合、これは生成ツールの同時実行制御の問題が原因である可能性があります。この警告は無視してかまいません。
ステップ 4:スクリプトを使用した SelectDB 用 SSB テストテーブルの作成
SelectDB インスタンス情報の設定
テーブル作成スクリプトを実行する前に、
doris-cluster.confファイルで SelectDB インスタンス情報を設定します。このファイルは、ツールのインストールパスのssb-tools/conf/ディレクトリにあります。例:# Any of FE host export FE_HOST='selectdb-cn-****.selectdbfe.rds.aliyuncs.com' # http_port in fe.conf export FE_HTTP_PORT=8080 # query_port in fe.conf export FE_QUERY_PORT=9030 # Doris username export USER='admin' # Doris password export PASSWORD='****' # The database where SSB tables located export DB='test_db'パラメーターの説明:
パラメーター
説明
FE_HOST
SelectDB インスタンスのエンドポイント。
SelectDB コンソールのインスタンス詳細ページの [ネットワーク情報] セクションから VPC エンドポイントまたはパブリックエンドポイントを取得します。
FE_HTTP_PORT
SelectDB インスタンスの HTTP プロトコルポート。
SelectDB コンソールのインスタンス詳細ページの [ネットワーク情報] セクションから HTTP プロトコルポートを取得します。
FE_QUERY_PORT
SelectDB インスタンスの MySQL プロトコルポート。SelectDB コンソールのインスタンス詳細ページの [ネットワーク情報] セクションから MySQL プロトコルポートを取得します。
USER
SelectDB インスタンスのアカウント。
SelectDB インスタンスを作成すると、システムはデフォルトで admin アカウントを作成します。
PASSWORD
SelectDB インスタンスアカウントのパスワード。
USER を admin アカウントに設定したがパスワードを忘れた場合は、コンソールでアカウントのパスワードをリセットします。
DB
データインポート用の SelectDB インスタンス内のターゲットデータベースの名前。
テーブルの作成
ツールのインストールディレクトリで、次のスクリプトを実行してテストテーブルを作成します。スクリプトが実行されると、テストデータセットのテーブルが SelectDB インスタンスのターゲットデータベースに作成されます。
sh bin/create-ssb-tables.sh -s 1000
ステップ 5:SelectDB へのデータのインポート
大量のデータをインポートするには時間がかかります。実際の所要時間はサーバーのパフォーマンスによって異なります。
ツールのインストールディレクトリで、次のスクリプトを実行して、SSB テストセットと SSB フラットワイドテーブルのすべてのデータを SelectDB にインポートします。
sh bin/load-ssb-data.shこれは中規模のテストであり、生成された 1000 GB (1 TB) のテストデータセットを SelectDB にインポートする必要があります。このステップには時間がかかる場合があります。タスクをバックグラウンドで実行します。
nohup sh bin/load-ssb-data.sh > load-ssb-data.log 2>&1 &実行結果は、ツールのインストールディレクトリにある load-ssb-data.log ファイルに保存されます。このファイルを表示して、プロセスが正しく実行されたことを確認できます。
ステップ 6:クエリパフォーマンスのテスト
大量のデータでバッチテストを実行するには時間がかかります。実際の所要時間はサーバーのパフォーマンスによって異なります。
SSB 標準テストは、複数テーブル結合、集約、フィルタリングなど、複雑なスタースキーマのクエリシナリオにおけるデータベースのパフォーマンスを評価します。
SSB フラットテストは、ワイドテーブル構造でのデータベースのパフォーマンスを評価し、フラット化されたデータモデルがクエリ効率に与える影響をテストします。
バッチテストによる SQL パフォーマンスのクエリ
SSB 標準テスト
SSB 標準テスト用の SQL スクリプトを実行して、テストセット内の SQL 文をバッチ実行します。
構文:
sh bin/run-ssb-queries.sh -s <yourAimDataNum>パラメーターの説明:
yourAimDataNum:クエリが正しいデータセットスケールに対して実行されることを保証します。この値は、データ生成に使用されたスケールと一致する必要があります。たとえば、
-s 1000を使用してデータを生成した場合、クエリを実行する際にも-s 1000を使用する必要があります。スクリプトが実行されると、コンソールウィンドウに、テストセットの各 SQL 文の SelectDB でのパフォーマンスが表示されます。
これは中規模のテストであり、1000 GB (1 TB) のテストデータセットをクエリします。このステップには時間がかかる場合があります。タスクをバックグラウンドで実行します。
nohup sh bin/run-ssb-queries.sh -s 1000 > run-ssb-queries.log 2>&1 &バッチテスト用の SQL 文の詳細については、「ssb-queries」をご参照ください。
クエリパフォーマンスの結果は、ツールのインストールディレクトリにある run-ssb-queries.log ファイルに保存されます。このファイルを表示して、クエリプロセスに関する情報とテスト結果を取得できます。このドキュメントの 1000 GB のデータに関するテスト結果については、「テスト結果」をご参照ください。
SSB フラットテスト
SSB フラットテスト用の SQL スクリプトを実行して、テストセット内の SQL 文をバッチ実行します。
構文:
sh bin/run-ssb-flat-queries.sh -s <yourAimDataNum>パラメーター:
yourAimDataNum:クエリが正しいデータセットスケールに対して実行されることを保証します。この値は、データ生成に使用されたスケールと一致する必要があります。たとえば、
-s 1000を使用してデータを生成した場合、クエリを実行する際にも-s 1000を使用する必要があります。スクリプトが実行されると、コンソールウィンドウに、テストセットの各 SQL 文の SelectDB でのパフォーマンスが表示されます。
この中規模テストでは、1000 GB (1 TB) のテストデータセットをクエリします。このステップには時間がかかる場合があるため、タスクをバックグラウンドで実行できます。
nohup sh bin/run-ssb-flat-queries.sh -s 1000 > run-ssb-flat-queries.log 2>&1 &バッチテスト用の SQL 文の詳細については、「ssb-flat-queries」をご参照ください。
クエリパフォーマンスの結果とクエリプロセスに関する情報は、ツールのインストールディレクトリにある run-ssb-flat-queries.log ファイルに保存されます。1000 GB のデータに関するテスト結果については、「テスト結果」をご参照ください。
単一クエリの SQL パフォーマンスのテスト
また、次のように SelectDB で単一の SQL 文のパフォーマンスをテストすることもできます。
SelectDB インスタンスに接続します。詳細については、「DMS を使用した ApsaraDB for SelectDB インスタンスへの接続」をご参照ください。
ターゲット SQL 文を実行します。
SSB 標準テスト
「SSB 標準テストクエリ文」からターゲット SQL 文を取得して実行します。
また、このテストで使用された SQL 文のいずれかを選択して実行することもできます。
--Q1.1 SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE FROM lineorder, dates WHERE lo_orderdate = d_datekey AND d_year = 1993 AND lo_discount BETWEEN 1 AND 3 AND lo_quantity < 25; --Q1.2 SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE FROM lineorder, dates WHERE lo_orderdate = d_datekey AND d_yearmonth = 'Jan1994' AND lo_discount BETWEEN 4 AND 6 AND lo_quantity BETWEEN 26 AND 35; --Q1.3 SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE FROM lineorder, dates WHERE lo_orderdate = d_datekey AND d_weeknuminyear = 6 AND d_year = 1994 AND lo_discount BETWEEN 5 AND 7 AND lo_quantity BETWEEN 26 AND 35; --Q2.1 SELECT SUM(lo_revenue), d_year, p_brand FROM lineorder, dates, part, supplier WHERE lo_orderdate = d_datekey AND lo_partkey = p_partkey AND lo_suppkey = s_suppkey AND p_category = 'MFGR#12' AND s_region = 'AMERICA' GROUP BY d_year, p_brand ORDER BY p_brand; --Q2.2 SELECT SUM(lo_revenue), d_year, p_brand FROM lineorder, dates, part, supplier WHERE lo_orderdate = d_datekey AND lo_partkey = p_partkey AND lo_suppkey = s_suppkey AND p_brand BETWEEN 'MFGR#2221' AND 'MFGR#2228' AND s_region = 'ASIA' GROUP BY d_year, p_brand ORDER BY d_year, p_brand; --Q2.3 SELECT SUM(lo_revenue), d_year, p_brand FROM lineorder, dates, part, supplier WHERE lo_orderdate = d_datekey AND lo_partkey = p_partkey AND lo_suppkey = s_suppkey AND p_brand = 'MFGR#2239' AND s_region = 'EUROPE' GROUP BY d_year, p_brand ORDER BY d_year, p_brand; --Q3.1 SELECT c_nation, s_nation, d_year, SUM(lo_revenue) AS REVENUE FROM customer, lineorder, supplier, dates WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_orderdate = d_datekey AND c_region = 'ASIA' AND s_region = 'ASIA' AND d_year >= 1992 AND d_year <= 1997 GROUP BY c_nation, s_nation, d_year ORDER BY d_year ASC, REVENUE DESC; --Q3.2 SELECT c_city, s_city, d_year, SUM(lo_revenue) AS REVENUE FROM customer, lineorder, supplier, dates WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_orderdate = d_datekey AND c_nation = 'UNITED STATES' AND s_nation = 'UNITED STATES' AND d_year >= 1992 AND d_year <= 1997 GROUP BY c_city, s_city, d_year ORDER BY d_year ASC, REVENUE DESC; --Q3.3 SELECT c_city, s_city, d_year, SUM(lo_revenue) AS REVENUE FROM customer, lineorder, supplier, dates WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_orderdate = d_datekey AND ( c_city = 'UNITED KI1' OR c_city = 'UNITED KI5' ) AND ( s_city = 'UNITED KI1' OR s_city = 'UNITED KI5' ) AND d_year >= 1992 AND d_year <= 1997 GROUP BY c_city, s_city, d_year ORDER BY d_year ASC, REVENUE DESC; --Q3.4 SELECT c_city, s_city, d_year, SUM(lo_revenue) AS REVENUE FROM customer, lineorder, supplier, dates WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_orderdate = d_datekey AND ( c_city = 'UNITED KI1' OR c_city = 'UNITED KI5' ) AND ( s_city = 'UNITED KI1' OR s_city = 'UNITED KI5' ) AND d_yearmonth = 'Dec1997' GROUP BY c_city, s_city, d_year ORDER BY d_year ASC, REVENUE DESC; --Q4.1 SELECT d_year, c_nation, SUM(lo_revenue - lo_supplycost) AS PROFIT FROM dates, customer, supplier, part, lineorder WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_partkey = p_partkey AND lo_orderdate = d_datekey AND c_region = 'AMERICA' AND s_region = 'AMERICA' AND ( p_mfgr = 'MFGR#1' OR p_mfgr = 'MFGR#2' ) GROUP BY d_year, c_nation ORDER BY d_year, c_nation; --Q4.2 SELECT d_year, s_nation, p_category, SUM(lo_revenue - lo_supplycost) AS PROFIT FROM dates, customer, supplier, part, lineorder WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_partkey = p_partkey AND lo_orderdate = d_datekey AND c_region = 'AMERICA' AND s_region = 'AMERICA' AND ( d_year = 1997 OR d_year = 1998 ) AND ( p_mfgr = 'MFGR#1' OR p_mfgr = 'MFGR#2' ) GROUP BY d_year, s_nation, p_category ORDER BY d_year, s_nation, p_category; --Q4.3 SELECT d_year, s_city, p_brand, SUM(lo_revenue - lo_supplycost) AS PROFIT FROM dates, customer, supplier, part, lineorder WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_partkey = p_partkey AND lo_orderdate = d_datekey AND s_nation = 'UNITED STATES' AND ( d_year = 1997 OR d_year = 1998 ) AND p_category = 'MFGR#14' GROUP BY d_year, s_city, p_brand ORDER BY d_year, s_city, p_brand;SSB フラットテスト
「SSB フラットテストクエリ文」からターゲット SQL 文を取得して実行します。
また、このテストで使用された SQL 文のいずれかを選択して実行することもできます。
--Q1.1 SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue FROM lineorder_flat WHERE LO_ORDERDATE >= 19930101 AND LO_ORDERDATE <= 19931231 AND LO_DISCOUNT BETWEEN 1 AND 3 AND LO_QUANTITY < 25; --Q1.2 SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue FROM lineorder_flat WHERE LO_ORDERDATE >= 19940101 AND LO_ORDERDATE <= 19940131 AND LO_DISCOUNT BETWEEN 4 AND 6 AND LO_QUANTITY BETWEEN 26 AND 35; --Q1.3 SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue FROM lineorder_flat WHERE weekofyear(LO_ORDERDATE) = 6 AND LO_ORDERDATE >= 19940101 AND LO_ORDERDATE <= 19941231 AND LO_DISCOUNT BETWEEN 5 AND 7 AND LO_QUANTITY BETWEEN 26 AND 35; --Q2.1 SELECT SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR, P_BRAND FROM lineorder_flat WHERE P_CATEGORY = 'MFGR#12' AND S_REGION = 'AMERICA' GROUP BY YEAR, P_BRAND ORDER BY YEAR, P_BRAND; --Q2.2 SELECT SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR, P_BRAND FROM lineorder_flat WHERE P_BRAND >= 'MFGR#2221' AND P_BRAND <= 'MFGR#2228' AND S_REGION = 'ASIA' GROUP BY YEAR, P_BRAND ORDER BY YEAR, P_BRAND; --Q2.3 SELECT SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR, P_BRAND FROM lineorder_flat WHERE P_BRAND = 'MFGR#2239' AND S_REGION = 'EUROPE' GROUP BY YEAR, P_BRAND ORDER BY YEAR, P_BRAND; --Q3.1 SELECT C_NATION, S_NATION, (LO_ORDERDATE DIV 10000) AS YEAR, SUM(LO_REVENUE) AS revenue FROM lineorder_flat WHERE C_REGION = 'ASIA' AND S_REGION = 'ASIA' AND LO_ORDERDATE >= 19920101 AND LO_ORDERDATE <= 19971231 GROUP BY C_NATION, S_NATION, YEAR ORDER BY YEAR ASC, revenue DESC; --Q3.2 SELECT C_CITY, S_CITY, (LO_ORDERDATE DIV 10000) AS YEAR, SUM(LO_REVENUE) AS revenue FROM lineorder_flat WHERE C_NATION = 'UNITED STATES' AND S_NATION = 'UNITED STATES' AND LO_ORDERDATE >= 19920101 AND LO_ORDERDATE <= 19971231 GROUP BY C_CITY, S_CITY, YEAR ORDER BY YEAR ASC, revenue DESC; --Q3.3 SELECT C_CITY, S_CITY, (LO_ORDERDATE DIV 10000) AS YEAR, SUM(LO_REVENUE) AS revenue FROM lineorder_flat WHERE C_CITY IN ('UNITED KI1', 'UNITED KI5') AND S_CITY IN ('UNITED KI1', 'UNITED KI5') AND LO_ORDERDATE >= 19920101 AND LO_ORDERDATE <= 19971231 GROUP BY C_CITY, S_CITY, YEAR ORDER BY YEAR ASC, revenue DESC; --Q3.4 SELECT C_CITY, S_CITY, (LO_ORDERDATE DIV 10000) AS YEAR, SUM(LO_REVENUE) AS revenue FROM lineorder_flat WHERE C_CITY IN ('UNITED KI1', 'UNITED KI5') AND S_CITY IN ('UNITED KI1', 'UNITED KI5') AND LO_ORDERDATE >= 19971201 AND LO_ORDERDATE <= 19971231 GROUP BY C_CITY, S_CITY, YEAR ORDER BY YEAR ASC, revenue DESC; --Q4.1 SELECT (LO_ORDERDATE DIV 10000) AS YEAR, C_NATION, SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit FROM lineorder_flat WHERE C_REGION = 'AMERICA' AND S_REGION = 'AMERICA' AND P_MFGR IN ('MFGR#1', 'MFGR#2') GROUP BY YEAR, C_NATION ORDER BY YEAR ASC, C_NATION ASC; --Q4.2 SELECT (LO_ORDERDATE DIV 10000) AS YEAR, S_NATION, P_CATEGORY, SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit FROM lineorder_flat WHERE C_REGION = 'AMERICA' AND S_REGION = 'AMERICA' AND LO_ORDERDATE >= 19970101 AND LO_ORDERDATE <= 19981231 AND P_MFGR IN ('MFGR#1', 'MFGR#2') GROUP BY YEAR, S_NATION, P_CATEGORY ORDER BY YEAR ASC, S_NATION ASC, P_CATEGORY ASC; --Q4.3 SELECT (LO_ORDERDATE DIV 10000) AS YEAR, S_CITY, P_BRAND, SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit FROM lineorder_flat WHERE S_NATION = 'UNITED STATES' AND LO_ORDERDATE >= 19970101 AND LO_ORDERDATE <= 19981231 AND P_CATEGORY = 'MFGR#14' GROUP BY YEAR, S_CITY, P_BRAND ORDER BY YEAR ASC, S_CITY ASC, P_BRAND ASC;
テスト結果
次の表は、SSB 標準テストと SSB フラットテストの 1000 GB のクエリパフォーマンス結果を示しています。テストは、カーネルバージョン 4.1.1、96 コア、384 GB メモリ、1200 GB のクラスターキャッシュ領域を備えた SelectDB インスタンスで実行されました。
クエリ | SSB 1000 | SSB-Flat 1000 |
Q1.1 | 0.14 | 0.07 |
Q1.2 | 0.08 | 0.03 |
Q1.3 | 0.08 | 0.08 |
Q2.1 | 0.56 | 0.36 |
Q2.2 | 0.65 | 0.33 |
Q2.3 | 0.43 | 0.25 |
Q3.1 | 1.46 | 0.62 |
Q3.2 | 0.55 | 0.38 |
Q3.3 | 0.42 | 0.23 |
Q3.4 | 0.12 | 0.04 |
Q4.1 | 1.64 | 0.9 |
Q4.2 | 0.5 | 0.17 |
Q4.3 | 0.27 | 0.12 |
合計 | 6.9 | 3.58 |