1

2 つの別々の SQL Server スケジュール ジョブに埋め込まれた 2 つの xmla クエリ (SSAS キューブを処理するため) があります。これらのジョブはコードによってランダムにトリガーされ、両方のジョブが同時にトリガーされる場合があります。この場合、1 つのジョブ (実際にはそのスケジュールされたジョブに関連付けられた XMLA クエリ) が優先され、他のジョブが終了するまで待機し続けます。両方の xmla クエリを同時に実行したいと思います。それは可能ですか?両方の XMLA の構造は次のとおりです。

  <Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Parallel>
    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200">
      <Object>
        <DatabaseID>SSAS Database ID here</DatabaseID>
        <CubeID>Cube ID here</CubeID>
      </Object>
      <Type>ProcessFull</Type>
      <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
    </Process>
  </Parallel>
</Batch>

可能な提案/回答を探しています。

4

1 に答える 1

1

両方の処理命令が共通のオブジェクト (パーティションまたはディメンション) にアクセスする場合、一方は他方が終了するまで待機する必要があります。Analysis Services - OLAP 用に最適化されており、非常に粗い粒度のロック モデルを使用します。パーティションやディメンションなどのオブジェクトへの書き込みアクセスごとに、このオブジェクトに書き込みロックが設定されます。このロックは、ジョブが終了した後にのみ解放されます。エラー。

両方の処理ジョブが異なるオブジェクトにのみアクセスする場合、競合は発生せず、並行して実行できます (たとえば、ジョブ 1 はディメンション A と B およびメジャー グループ X を処理し、ジョブ 2 はディメンション C と D およびメジャー グループ Y と Z を処理します)。 )。

ほとんどのリレーショナル データベースの場合のように、アクセスする各データ行のロックをチェックする必要がないため、ロックのこの粗い粒度は高速であるという側面の 1 つです。これはオーバーヘッドの原因となります。

于 2014-01-23T17:58:05.397 に答える