結合された 10 個のテーブルからの大きなクエリに問題があります。ワイド ファクト テーブル (f1) からスター スキーマにデータを移行しています。まず、f1 からディメンション テーブルを作成し、次に新しいファクト テーブル (f2) にディメンション テーブルへの結合を作成して、対応する ID を取得します。
残念ながら、「内部パーティションがメモリに収まりませんでした」というエラーが表示されます。私が見るログから:
2012-10-18 16:20:31.607 Init Session:0x2aac6c02b250 [EE] <INFO> ENABLE_JOIN_SPILL may allow this query to run, with reduced performance
2012-10-18 16:20:31.607 Init Session:0x2aac6c02b250 [EE] <INFO> Query Retry action: Setting add_vertica_options('EE','ENABLE_JOIN_SPILL');
しかし、後で私が得るので、それもうまくいきません:
2012-10-18 16:23:31.138 Init Session:0x2aac6c02b250 [EE] <INFO> Join ((public.owa_search_term_dim x public.page_impressions_with_session) using owa_search_term_dim_projection_node0001 and previous join (PATH ID: 7)) inner partition did not fit in memory; value
2012-10-18 16:23:31.138 Init Session:0x2aac6c02b250 [EE] <INFO> Query Retry action: Swapping join order with override: 1|7|0
Vertica が明らかに結合を実行する方法を見つけようとしている間、これはしばらく続きますが、最終的に結合がメモリに収まらないというエラーで解決します。
結合を実行するために必要なメモリを最小限に抑える方法や、ディスクへのスピルが機能しない理由についてのヒントはありますか? パフォーマンス ヒットを処理できます。必要なのは、クエリを実行できることだけです。