SQL Server 성능에 대한 ArcGIS 10.2 쿼리 계층


10

ArcMap의 SQL Server에서 쿼리 계층을 사용하고 있습니다. 쿼리 계층은 SQL Server에서 즉시 실행되지만 ArcMap에서 그리는 데 시간이 오래 걸리므로 시스템이 약 10 분 이상 응답하지 않습니다. ArcMap을 그리는 동안 CPU 중 하나가 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 가지 지오메트리 데이터 유형을 지원합니다. 차이점은 다음과 같습니다.

최상의 성능을 위해서는 지구 공간 참조를 사용하는지 여부에 관계없이 데이터의 특성에 따라 SDEBINARY가 아니라 지오메트리 또는 지리를 사용하고 있는지 확인하십시오. 또한 TOWNLANDS 기능 클래스에서 공간 인덱스를 다시 빌드하십시오. 피쳐 클래스, 속성을 마우스 오른쪽 버튼으로 클릭하고 인덱스 탭을 선택하여 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

원래 쿼리에서 조인은 결과에 아무런 이점이없는 것으로 나타났습니다. 선택 행에 Shannon 테이블의 열이 없습니다. 따라서 추가 작업처럼 보입니다.


GIS SE에 오신 것을 환영합니다! 귀하의 답변은 매우 간단하므로이 Asker 및 이후 독자들이 편집 버튼을 사용하여 제안하는 내용을 확장 할 수 있도록 하시겠습니까?
PolyGeo

1

이것은 내가 아는 한 간단한 수정이없는 SQL Server에서 ArcGIS를 사용하는 것으로 알려진 제한 사항입니다.

SQL Server 쿼리 플래너가 쿼리를 실행하기 위해 둘 이상의 CPU가 필요하다고 결정하면 사용중인 공간 인덱스의 확률이 낮습니다.

Microsoft는이 문제를 알고 있지만 공간 계획뿐만 아니라 모든 쿼리에 영향을 미치기 때문에 쿼리 플래너를 개선하기 위해 서두르지는 않습니다.

신뢰할 수있는 유일한 솔루션은 데이터베이스에서 최대 병렬 처리 수준 (MAXDOP)을 1로 설정하는 것입니다. 그러나 이는 해당 DB의 모든 쿼리가 쿼리 당 하나의 CPU 만 사용하므로 모든 것이 느려집니다.

ArcGIS가 테이블의 메타 데이터 및 통계를 쿼리해야하기 때문에 테이블을 나타내는 뷰를 생성하고 공간 인덱스 힌트가 작동하지 않도록하면 뷰가 해당 쿼리를 종료합니다.


0

비슷한 문제가 있습니다. SQL Server에 형상 유형으로 저장된 기능 클래스가 있습니다. 30m의 레코드가 있고 그립니다. 그러나 두 번째 테이블에 연결된 VIEW를 만들면이 VIEW가 중단되고 표시되지 않습니다.

테이블에는 많은 관계 클래스가 첨부되어 있습니다. 이것들이 쿼리 / 도면 성능에 영향을 줍니까?

또한이 문제에 대한 Microsoft의 인정 방향을 알려줄 수 있습니다. 쿼리 플래너가 공간 인덱스를 사용하도록 할 수 있습니까?

계산서


새로운 질문을하십시오.
Mapperz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.