web-dev-qa-db-ja.com

キューブの処理に時間がかかりすぎるか、失敗する

35のディメンションと10のメジャーを持つSSASキューブがあります。

  • 一部の寸法は非常に大きいです。
  • ほとんどすべての次元で、データは更新されて挿入されます。
  • メジャーには大量のデータがあります。

[〜#〜] ssms [〜#〜](SSASデータベースを右クリックして)から実行すると、データベースで「プロセスがいっぱい」になり、約1時間30分かかります。

XMLAスクリプトを介してSQLエージェントジョブからキューブ(プロセスフル)を処理している場合、約1時間20分かかります。

SSMSを使用してディメンションとメジャー(Process Full)を個別に処理すると、1時間50分かかります。

しかし、SSIS(XMLAによるDMLタスク)からディメンションとメジャーを処理している場合、5時間以上かかります。 [メモリ消費量はほぼ100%になりました]

だから私の質問は:

  1. SSISからのディメンションとメジャーの処理には、それだけのコストがかかりますか?
  2. 高速キューブ処理にはどのような処理を選択すればよいですか。プロセスを完全に実行しています。
  3. 最初の2つのオプションからキューブを処理すると、ほとんどの場合、「属性キーが見つかりません」と表示されてキューブが失敗しますが、ディメンションを処理して個別に測定するとうまく機能します。完全なキューブを処理しないと、ディメンションとメジャーの適切な処理が保証されませんか?
7
Zerotoinfinity

あらまあ.

まず第一に。あなたの場合、「デフォルトの処理」オプションを選択することをお勧めします。 Process Full alwaysを使用している場合は、すべてのデータとオブジェクトを削除し、すべてのものを再作成しています。あなたはそれらを必要としません。多くの場合、提案オプションは、ProcessDataの後にProcessIndexを使用することです。

私はSSIS内からキューブを処理しませんでしたが、おそらくSSISが何かをチェックし、データベースで何かをロックしています。最良のオプションは、XMLAを使用することです。 SSIS内からキューブを処理する場合は、処理を実行するスクリプトタスクを記述できます。ネットでスクリプトを検索できます。

クリーンなデータがあるかどうかも確認する必要があります。すべてのキーなどがある場合は、プロジェクトとデータを2回チェックします。別々にディメンションを処理している場合、データはメジャーとディメンションを比較していません。ディメンションに対応する値がないテーブルにいくつかのキーがあると確信しています。これで注文してください。ディメンションに値がなく、それが正しい場合(ソーステーブルに存在しない場合)、各ディメンションに、キー「-1」を含む1つの追加の値と、「N/A」のようなすべての値(該当なし)を追加できます。ディメンションのこのレコードを参照するために、見つからない値をポイントします。

そして最後に。大きなSSASデータベースがある場合は、パーティション分割について考えてください。

話すことはたくさんあります。特定の質問がある場合は、遠慮なく質問してください。

1
sdrzymala

SSISですべてのディメンションとファクトを個別に処理する場合、複数のトランザクションで処理します。サーバーが処理できる場合、1つのトランザクションでキューブ全体を処理する方が高速です。

0
Stefan Wilms

キューブを分割することを強くお勧めします。次に、サーバーはファクトテーブルの処理を並列化できます。これにより、パフォーマンスが最大に向上する可能性があります。

0
nojetlag