SQL ServerパフォーマンスのArcGIS 10.2クエリレイヤー


10

ArcMapのSQL Serverでクエリレイヤーを使用しています。クエリレイヤーはSQL Serverで即座に実行されますが、ArcMapでの描画に時間がかかりすぎて、システムが約10分以上応答しなくなったように見えます。ArcMapの描画中に、CPUの1つがSQL Serverプロセスで最大になります。

私のクエリは、次のように、ポリゴンフィーチャクラス(Townlands)に対するラインフィーチャ(Shannon)のバッファーのSTIntersectsです。

SELECT TOWNLANDS.TL_ID,TOWNLANDS.Shape FROM dbo.TOWNLANDS as townlands
with(index(FDO_Shape)) 
JOIN dbo.Shannon on townlands.Shape.STIntersects 
(Shannon.Shape.STBuffer(2.0))=1

クエリは瞬時に186行を返します。これらは問題なくSQL Server Management Studioの空間ペインに描画できます

まったく同じ構文でArcMapにクエリレイヤーを構築すると、システムが応答しなくなりますが、最終的に描画されます。おそらく、ArcMapが空間インデックスを使用していないか、SQL Serverと異なるため、SQL Serverでクエリが非効率になり、経過時間を返すように見えます。

誰かが治療法についてアドバイスできますか?

ありがとう

ArcGIS Desktop: 10.2
ArcSDE: 10.2
RDBMS: Database and version: SQL Server 2008
OS: Windows Server 

回答:


3

あなたが述べたように、あなたのクエリはデータベースレベルで迅速に実行されているようです。SQLをより効率的にすることができたとしても、実際のパフォーマンスは空間レベルです。

使用しているものと同様に、空間SQLステートメントが許可されたのは、ジオメトリタイプが導入されてからのことです。SQL Server 2008 for ArcSDEは、SDEBINARY、GEOMETRY、GEOGRAPHYの3つのジオメトリデータタイプをサポートしています。違いはここにリストされています

最高のパフォーマンスを得るには、地球の空間参照を使用しているかどうかに関係なく、データの性質に基づいて、GeometryまたはGeography(古いのでSDEBINARYではありません)を使用していることを確認してください。また、タウンランドフィーチャクラスで空間インデックスを再構築してください。これは、ArcCatalogからフィーチャクラス、プロパティを右クリックし、[インデックス]タブを選択することで実行できます。

お役に立てば幸いです。


1

クエリで結合を行う必要があるとは思いません。代わりにWHEREを使用してみてください。

SELECT TOWNLANDS.TL_ID,TOWNLANDS.Shape 
FROM dbo.TOWNLANDS as townlands
with(index(FDO_Shape)) 
WHERE townlands.Shape.STIntersects 
(Shannon.Shape.STBuffer(2.0))=1

元のクエリでは、結合は結果に影響を与えませんでした。select行にShannonテーブルの列が表示されませんでした。したがって、余分な作業のようです。


GIS SEへようこそ!あなたの答えは非常に短いので、このAsker以降の読者を助けるために、編集ボタンを使用して提案している内容を拡張できますか?
PolyGeo

1

これは、SQL ServerでArcGISを使用する際の既知の制限であり、私が知る限り、簡単な修正はありません。

SQL Serverクエリプランナーがクエリを実行するために複数のCPUが必要であると判断した場合、使用されている空間インデックスのオッズは低くなります。

マイクロソフトはこの問題を認識していますが、空間クエリだけでなくすべてのクエリに影響を与えるため、クエリプランナーの改善を急いでいません。

信頼できる唯一の解決策は、データベースの最大並列度(MAXDOP)を1に設定することですが、これはそのDB上のすべてのクエリがクエリごとに1 CPUしか使用しないため、すべてが遅くなることを意味します。

テーブルを表し、空間インデックスヒントを強制するビューを作成することは、ArcGISがテーブルのメタデータと統計をクエリする必要があり、そのようなビューがそれらのクエリを強制終了するため、機能しません。


0

同様の問題があります。SQL ServerにGeometryタイプとして格納されているフィーチャクラスがあります。30mのレコードがあり、描画も問題ありませんが、2番目のテーブルにリンクされたVIEWを作成すると、このVIEWはハングし、表示されません。

テーブルには、それに関連付けられたリレーションシップクラスのロードがあります。これらはクエリ/描画のパフォーマンスに影響しますか?

また、Microsoftがこの問題を認めていることを教えてください。クエリプランナーに空間インデックスを使用するように強制できますか?

ビル


新しい質問をしてください。
Mapperz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.