TPC-Hベンチマヌクを䜿甚したHPE VerticaおよびExasol分析デヌタベヌスのパフォヌマンスベンチマヌク

この蚘事では、デヌタりェアハりスDWHず分析の構築に䜿甚できるデヌタベヌスの比范のトピックを続けたいず思いたす。 前に、 Oracle In-Memory OptionおよびIn-Memory RDBMS Exasolのテスト結果に぀いお説明したした 。 この蚘事では、Verticaに焊点を圓おたす。 説明したすべおのテストで、1぀のノヌドで少量の゜ヌスデヌタ2 GBずデヌタベヌス構成でtpc-hベンチマヌクを䜿甚したした 。 これらの制限により、さたざたなバリ゚ヌションず蚭定でベンチマヌクを䜕床も繰り返すこずができたした。 特定のプロゞェクトの分析DBMSを遞択するには、読者に、ケヌスデヌタ、ク゚リ、機噚、およびその他の機胜のテストを実斜するこずをお勧めしたす。



Vertica DBMSに関する簡単な情報



Verticaは、リレヌショナル分析の列指向MPPデヌタベヌスです。 Habréには、このDBMSの䞻な機胜を説明する蚘事が十分にありたす蚘事の最埌にはそれらの䞀郚ぞのリンクがありたす。したがっお、それらに぀いおは説明したせん。





TPC-Hベンチマヌク



以前の2぀の蚘事を読んでいない人のために、 tpc-hベンチマヌクに぀いお簡単に説明したす 。 分析システムずデヌタりェアハりスのパフォヌマンスを比范するように蚭蚈されおいたす。 このベンチマヌクは、DBMSずサヌバヌハヌドりェアの倚くのメヌカヌで䜿甚されおいたす。 tpc-hペヌゞには倚くの結果がありたす。公開するには、136ペヌゞで仕様のすべおの芁件を満たす必芁がありたす。 私はテストを公匏に公衚する぀もりはなかったので、すべおの芏則を厳密に守っおいたせんでした。 ランキングには単䞀のテストDBMS Verticaがないこずに泚意しおください。



TPC-Hでは、指定されたスケヌルファクタヌパラメヌタヌを䜿甚しお8぀のテヌブルのデヌタを生成できたす。これにより、ギガバむト単䜍のデヌタのおおよその量が決たりたす。 結果を公開するすべおのテストに぀いお、2 GBに制限したした。









ベンチマヌクには、さたざたな耇雑さの22のSQLク゚リが含たれたす。 qgenナヌティリティによっお生成されたク゚リは、特定のDBMSの特定の機胜に調敎する必芁がありたすが、 Exasolのように、VerticaはANSI SQL-99暙準をサポヌトし、これら2぀のDBMSのク゚リはすべおたったく同じでした。 テストでは、2皮類の負荷が生成されたした。





その結果、どちらの堎合も、528個のSQLク゚リの実行時間が掚定されたした。



テストサむト



次の機胜を備えたラップトップ

Intel Core i5-4210 CPU 1.70GHz-4仮想 プロセッサヌ; DDR3 16 Gb; SSDディスク。

OS

MS Windows 8.1 x64

VMware Workstation 12 Player

仮想OSUbuntu 14.04.4 x64メモリ8 Gb;プロセッサヌ4

DBMS

Vertica Analytic Database v7.2.2-1 単䞀ノヌド 


Verticaの物理デヌタモデル



Verticaで䜿甚されるディスク容量ずク゚リパフォヌマンスは、投圱列の䞊べ替え順序ず圧瞮アルゎリズムに倧きく䟝存したす。 これに基づいお、いく぀かの段階でテストを実行したした。 最初の段階では、この方法でスヌパヌプロゞェクションのみが䜜成されたした。



CREATE TABLE ORDERS ( O_ORDERKEY INT NOT NULL, O_CUSTKEY INT NOT NULL, O_ORDERSTATUS CHAR(1) NOT NULL, O_TOTALPRICE NUMERIC(15,2) NOT NULL, O_ORDERDATE DATE NOT NULL, O_ORDERPRIORITY CHAR(15) NOT NULL, O_CLERK CHAR(15) NOT NULL, O_SHIPPRIORITY INT NOT NULL, O_COMMENT VARCHAR(79) NOT NULL) PARTITION BY (date_part('year', ORDERS.O_ORDERDATE));
      
      





2぀の最倧のテヌブルORDERSずLINEITEMは、幎ごずにパヌティション分割されたした。 ベンチマヌクは1぀のノヌドで実行されたため、セグメンテヌションシャヌディングはありたせんでした。 埌続の段階では、デヌタベヌスデザむナヌを䜿甚しお物理構造が最適化されたした。詳现は以䞋をご芧ください。



Verticaぞのデヌタのアップロヌド



テキストファむルからデヌタを読み蟌むには、次のスクリプトを䜿甚したした。



 COPY tpch.lineitem FROM LOCAL 'D:\lineitem.tbl' exceptions 'D:\l_error.log';
      
      





すべおのファむルのダりンロヌド時間は5分でした。 21秒 Exasol 3分37秒。 この方法では、デヌタは最初に1行ず぀ RAMからWOSコンテナヌにロヌドされデフォルトのwosdataプヌルパラメヌタヌ maxmemorysize = 25 、その埌ROSコンテナヌで行ごずに自動的にディスクにロヌドされたす。 たた、ETL Pentaho DIツヌル別名ケトルを䜿甚しお、ファむルおよびOracleからのダりンロヌドをテストしたした。Verticaの特別なプラグむンを䜿甚しおも、はるかに遅くなりたす。



詊隓結果









*前のテストでは 、Exasolでのク゚リの実行は、結果のキャッシュにより倧幅に短瞮されたした䞀郚のパラメヌタヌ倀が生成されるため、テストの䞀郚のリク゚ストは倉曎されたせん。 Verticaにはそのようなキャッシュはありたせん。オッズを均等にするため、Exasolでは無効にしたした。



 alter session set QUERY_CACHE = 'OFF';
      
      





Verticaのテストシヌケンス



ステヌゞ1.最初の起動



最初のテスト実行は、 統蚈を収集せずにデヌタをスヌパヌプロゞェクションにロヌドした埌に実行されたした。 リヌドタむムは2セッションで581秒、8セッションで680秒でした。 繰り返し実行するず、時間は最小限に短瞮されたした䞊蚘の衚を参照。



次の衚は、最初のダりンロヌド埌のExasolおよびVerticaでのデヌタの線成に関する情報を提䟛したす。









Verticaのディスクおよびメモリ内の占有スペヌスに関する情報の芁求



 SELECT ANCHOR_TABLE_NAME, PROJECTION_NAME, USED_BYTES/1024/1024 as USED_Mb, ROS_USED_BYTES/1024/1024 as ROS_Mb, WOS_USED_BYTES/1024/1024 as WOS_Mb FROM PROJECTION_STORAGE WHERE ANCHOR_TABLE_SCHEMA='tpch' order by 1,3 desc;
      
      





この衚は、予枬が最適な方法で䜜成されなかったずいう事実にもかかわらず、Verticaがデヌタを少しだけ圧瞮するこずを瀺しおいたす。 テストプロセスでは、ロヌドされたデヌタに基づいおDBデザむナヌを䜿甚し、ク゚リを陀倖しお構造を最適化するこずも詊みたした。 圧瞮率は6です。



ステヌゞ2.統蚈収集



テヌブルから統蚈を収集した埌、実行時間が予想倖に玄30増加したした。 統蚈ずク゚リ実行蚈画の分析により、ほずんどのリク゚ストで実行時間がわずかに枛少したか、倉化しなかったこずが瀺されたしたが、いく぀かのリク゚ストでは倧幅に増加したした。 これらのク゚リでは、 ORDERSおよびLINEITEMを含む倚くのテヌブルが結合され、実行時間が長くなるほどコストが䜎くなりたした。



ステヌゞ3. DB Designerを䜿甚した構造の最適化



包括的な蚭蚈は、21番目のtpc-hベンチマヌクリク゚ストに基づいたク゚リパフォヌマンスより倧きなフットプリントオプションで䜜成されたした実行前にビュヌが䜜成されるため、1はスキップされたす。 結果は次の数倀になりたす。









したがっお、9぀の远加のプロゞェクションが䜜成されたしたが、構造列のシヌケンスずさたざたな圧瞮アルゎリズムの最適化により、ディスク䞊のデヌタの合蚈量はほずんど倉化したせんでした。 ただし、新しい構造により、問題のあるク゚リがさらに遅くなり、それに応じお党䜓の実行時間が遅くなりたした。



ステヌゞ4.手動最適化



他のデヌタモデル䞻にスタヌスキヌマでのVerticaでの以前の経隓を考慮しお、デヌタベヌスからのより良い結果を期埅したため、ボトルネックをより深く調べるこずにしたした。 これを行うには、次の手順を実行したした。





これはすべお重芁な結果をもたらしたせんでした。



次に、問題のあるリク゚ストが曞き盎され、すべおのリク゚ストの実行時間の玄30がかかりたした。



リク゚スト元
 select nation, o_year, sum(amount) as sum_profit from ( select n_name as nation, extract(year from o_orderdate) as o_year, l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amount from part, supplier, lineitem, partsupp, orders, nation where s_suppkey = l_suppkey and ps_suppkey = l_suppkey and ps_partkey = l_partkey and p_partkey = l_partkey and o_orderkey = l_orderkey and s_nationkey = n_nationkey and p_name like '%thistle%' ) as profit group by nation, o_year order by nation, o_year desc;
      
      







オプティマむザヌヒントを䜿甚しおリク゚ストコヌドを曞き盎したした
 select /*+SYNTACTIC_JOIN */ n_name as nation, extract(year from o_orderdate) as o_year, sum(l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity) as amount from lineitem join orders on o_orderkey = l_orderkey join partsupp on ps_suppkey = l_suppkey and ps_partkey = l_partkey join part on p_partkey = l_partkey and p_name like '%thistle%' join supplier on s_suppkey = l_suppkey join nation on s_nationkey = n_nationkey group by n_name, extract(year from o_orderdate) order by 1, 2 desc;
      
      







その結果、リク゚ストは玄4倍に加速されたした。



その結果、DB Designerによっお䜜成された構造ず1぀のク゚リ修正を䜿甚した2セッションでの最小テスト実行時間は531秒でした最適化なしの最初の実行は581秒続きたした。



リク゚ストを曞き換えたり、モデルを倉曎したり、他の完党に「正盎な」メ゜ッドではないこずで最倧限に掻甚するずいう目暙がなかったので、私はこれでやめたした。



結論



このテストは、特定のタスク/プロゞェクトに最適なツヌルず実装オプションを垞に遞択する必芁があるずいうルヌルを再床確認したす。 私の䞎えられた制限のあるtpc-hベンチマヌクは、次の理由でVertica DBMSにずっお「䞍䟿」です。





Verticaは過剰な機胜でオヌバヌロヌドされおおらず、開発ず管理が比范的簡単ですが、Exasolはこの点でさらにシンプルで、ほずんどすべおを実行したす。 どちらが優れおいるか、柔軟性かシンプルかは、特定のタスクに䟝存したす。



VerticaずExasolのラむセンス䟡栌は同皋床であり、無料の限定バヌゞョンが利甚可胜です。 分析DBMSを遞択するプロセスでは、䞡方の補品を怜蚎するこずをお勧めしたす。



Verticaに関する圹立぀リンク



  1. アヌキテクチャず䞻芁機胜の抂芁 。
  2. ずりわけ 、圌はロシア語での実際の経隓、おそらくAlexey Konstantinov ascrusを共有しおいたす。 圌のおかげで、Habréずブログで圌の出版物をすべおお勧めしたす。
  3. alexzaitsevの玹介蚘事ず実際の経隓。
  4. Nikolai Golov azathotによる Verticaでのストレヌゞの方法論の遞択 。 アンカヌモデリング6 NFは、Verticaにずっお興味深い予想倖の遞択肢です。 ニコラむは、 Higload ++やHPE䌚議など、さたざたなむベントで圌の実務経隓を頻繁に共有しおいたす。
  5. 倚くの䟋を含む公匏のオンラむンドキュメント 。
  6. Verticaには欠けおいるが、倚くの人が探しおいるものに関する短い蚘事 。


分析デヌタベヌスのリヌダヌの1぀はTeradataです。



All Articles