ST_Geometry 공간 인덱스를 사용할 때 Oracle 쿼리 성능과 저장용량 최적화
Article ID: | 33341 |
Software: | ArcSDE 9.2, 9.3, 9.3.1, 10, 10.1 ArcGIS for Desktop Advanced 10.1, 10.2 ArcGIS for Desktop Standard 10.1, 10.2 ArcGIS for Desktop Basic 10.1, 10.2 |
Platforms: | N/A |
개요
본 기술 문서는 ST-Geometry를 사용할 때에 공간 인덱스(ST_Spatial_Index)를 사용하는 공간 쿼리가 인덱스 블록스가 읽히는 수를 줄임으로써 쿼리 성능을 향상시키는 방법을 설명합니다. Structured Query Language (SQL) 작업명령어를 위해 논리적 또는 물리학적 I/O 작업을 줄임으로써 쿼리 시간과 서버의 리소스를 향상 시키고 범위성을 더 넓힐 수 있습니다.
방법
Oracle의 명령어 ALTER TABLE <table_name> SHRING SPACE COMPACT CASCADE는 테이블을 저장 하기 위해 필요한 블록스의 수나 최소한의 블록스 안에 데이터들을 채워 넣음으로써 인덱스의 수를 줄입니다.
공간 인덱스를 줄이려면, 다음 절차들을 따르세요
- 공간 인덱스를 표현하는 도메인 인덱스 테이블의 이름을 찾으세요
밑에서 보이는 예시는 어떻게 ‘PARCELS’이라는 이름의 테이블의 공간 인덱스 식별자를 얻을 수 있는지 와 공간 인덱스를 줄이기 위해서 ALTER TABLE 커맨드를 실행하는 방법을 보여줍니다. 다음 과정들은 테이블을 주인으로써 실행되어야 합니다.
SQL> SELECT ‘S’||index_id||’_IDX$’ AS DOMAIN_INDEX
FROM sde.st_geometry_index
WHERE owner = USER
AND table_name = ‘PARCELS’;
DOMAIN_INDEX
————
S15_IDX$
SQL> ALTER TABLE s15_idx$ SHRINK SPACE COMPACT CASCADE;
Table altered.
- 축소 명령을 실행하기 전과 후에leaf_blocks의 수를 확인 하세요. 축소 명령을 쓰면 생기는 혜택을 입증하는데 도움이 됩니다.
예:
축소 명령 실행 전:
SQL> SELECT index_name, leaf_blocks
FROM user_indexes
WHERE table_name = ‘S15_IDX$’;
INDEX_NAME LEAF_BLOCKS
——————– ———–
S15$_IX2 18427
S15$_IX1 27465
축소 명령 실행 후:
SQL> SELECT index_name, leaf_blocks
FROM user_indexes
WHERE table_name = ‘S15_IDX$’;
INDEX_NAME LEAF_BLOCKS
——————– ———–
S15$_IX1 13973
S15$_IX2 17406
- 공간 인덱스를 축소 한 후에 테이블의 통계를 갱신하세요
SQL> exec dbms_stats.gather_table_stats(user,’parcels’);
본사 링크
HowTo: Optimize Oracle query performance and storage when using the ST_Geometry spatial index
http://support.esri.com/en/knowledgebase/techarticles/detail/33341