0

スタースキーマと単一の非正規化テーブルを使用して、ベクターごとにいくつかのテストを実行しています。非正規化されたテーブルには、varchar (100) を超える 5 つの余分な列があります。私は列指向の世界に慣れていないので、事実を正しく理解するために理解したいと思っています。

いくつかの事実 :

  1. クエリメモリ = 20G、キャッシュメモリは 7G に設定

  2. 名前の列だけのサイズは、約 6G、6.5G、2.6G、および 650M です。明らかに、これらは私のキャッシュメモリに収まらないため、システムは I/O バウンドです。

  3. スタースキーマアプローチを使用すると、メインメモリキャッシュに簡単に収まる事実から整数列をキャッシュする必要があるため、高速に動作します。

これに関していくつか質問があります:

  1. 単一のテーブルを使用する必要がある場合、これらすべての列がメモリに収まるように RAM を増やす必要がありますか? 他の誰かが Vertica または他の列指向データベースを使用してこの種の構造を作成したかどうかを知りたいです。はいの場合、すべての varchar 列が RAM に収まる必要がある同じアプローチを使用していますか?

  2. 単純なスター スキーマ クエリ

    select col1,col2, col3, sum(col4), sum(col5) from fact_table join tabl1 on condition join tab2 on condition where tab1.col1 = 1234 and tab2.col2 = 6789

    以下より遅く動作します:

    select col1,col2,col3,sumcol4, sumcol5 from (select col1,col2, col3, sum(col4) as sumcol4, sum(col5) as sumcol5 from fact_table where fact_table.col1 = 1234 and fact_table.col2 = 6789) as facts join tabl1 on condition join tab2 on condition

    なんで?

    注: マスター テーブル tab1 および tab2 は、メイン メモリ常駐です。

Vectorwiseを使用していますが、これらの観察結果が Vertica にも当てはまるかどうかを知りたいだけですか?

4

1 に答える 1

0

Vertica には、テーブルをメモリに常駐させるという考えはありません。場合によっては、また一部の種類の結合では、テーブル データが既にメモリ内にあるか、そこに置かれている可能性があります。しかし、究極的には、Vertiac のパフォーマンスは、ディスクへの保存方法に依存します。

Vectorwise での 2 つのクエリのパフォーマンスが、Vertica での同様のクエリとテーブルのパフォーマンスに影響するとは思いません。とはいえ、2 番目のクエリの結合に関連する行数が少ないということは、さまざまなクエリ実行エンジンでより適切に機能することを示唆しています。

于 2012-09-18T21:50:26.787 に答える