SlideShare a Scribd company logo
1 of 38
PostGIS와 GeoServer를 이용한
대용량 공간데이터 기반 일기도 서비
스장병진, 금정우
Who am I
 Gaia3D Open Source GIS Technical Manager
 Open Source GIS Korean Localizer
 Risk Surfer
이 PT의 목적
 석사과정 학생이 Oracle을 써서 느리면 학생 잘못
PostGIS를 써서 느리면 오픈소스 잘못!
 Oracle의 장점은 모든 것을 튜닝할 수 있는 것
Oracle의 단점은 모두 튜닝해야만 하는 것
 모든 서버에 다 통하는 격언
 오픈 소스 GIS를 써서 느린 것이 아니라
튜닝을 안 해서 느린 것이다!
배경지식
모바일 일기도 서비스
관측
자료
GRIB
Data
Vector
일기도기상모델 벡터화 이미지화
서비스
용
일기도
시스템 사용자
기상자료 특징
실시간 /
준실시간저해상도
잦은
생산주기다차원 자료
지리적 해상도 낮음
평면+높이(등압면)
+분석모델
+자료시간+예측시간
하루 수차례
~수백차례
항상
최신자료
필요
극복과제
서비스 아키텍처
벡터 일기도
1일 사용자료
회 생산 (00, 06, 12, 18 UTC)
개 공간 테이블
장의 일기도
MB의 자료
행의 공간 데이터
어떻게 이런 서비스를
…
극복과제 3가지
데이터 수집이 느리다
데이터 유지관리가 안 된
다
데이터 조회가 느리다
DB
전범
위
문제
B & F
 튜닝전 상황
 자료 인서트에 5시간
 데이터파일 하루 35기가씩 커짐
 일기도 한 장 조회시 수십초
 개선목표
 30분 이내 인서트
 데이터파일 일정크기 유지
 수초 이내 일기도 조회
임포드속도 개선
대용량 Update
출처: http://novathin.kr/19
건건이 실행
Batch Size 만큼 모아
한번에 실행
SQL을 실행하는 시기에 따라 성능의 차이가 크다!
실제 삽입 속도 비교
하나의 일기도 kml 파일  약 3000행  테스트 기준
 매번 executeUpdate 실행 – 109sec 소요(기존방식)
 addBatch() 100번 후, executeBatch(), 두 과정 30번 – 8.9sec
 addBatch() 500번 후, executeBatch(), 두 과정 6번 – 5.7sec
 addBatch() 1000번 후, executeBatch(), 두 과정 3번– 3.4sec
 addBatch() 3000번 후, executeBatch(), 두 과정 1번 – 1.1sec
★임포트 개선 솔루션★
 JDBC 2.0의 addBatch(), exeuteBatch() 이
용 - JDBC 2.0을 지원하는 모든 DB에서 사
용가능
 기존의 1 insert / 1 commit 에서
 Kml파일 단위의(3000 insert) 마다 commit
으로 변경
데이터 크기유지
PostgreSQL의 데이터관
리
 PostgreSQL은 추기형
 Update, Delete된 데이터 지우지 않음
 마킹만 하고 새 데이터를 아래에 기록
 장점
 속도가 빠름
 여러 버전의 데이터 관리가 가능
 단점
 데이터파일 크기가 심각하게 늘어날 수 있음
 파일크기 증가에 따른 성능저하 가능성
 일기도 DB 파일이 하루 35GB씩 커짐!!!
스냅샷형 vs 추기형
테이블
A
B’
C
D
E
테이블
A
B X
C
D
E
B’
스냅샷
B
Transection 주인
기타 User
갱신전 레코드
갱신후 레코드
갱신전 레코드
갱신후 레코드
Oracle / MySQL PostgreSQL
Transection 완료 후
일반 VACUUM
테이블
A
B X
C X
D
E X
B’
C’
테이블
A
B X
C X
D
E X
B’
C’
테이블
A
F
C X
D
E X
B’
C’
불필요
B X
C X
E X
FSM
불필요
C X
E X
FSM
VACUUM 실행 데이터 Insert
출처: http://www.geocities.jp/sugachan1973/doc/funto60.html
기상청 일기도용 PostgreSQL은 일반 Vacuum 만으로는 계속 데이터파일 증가
VACUUM FULL
기상청 일기도용 PostgreSQL은 Full VACUUM에 15시간 소요.
VACUUM FULL 수행 중 배타적 LOCK 발생
출처: http://www.devmedia.com.br/otimizacao-uma-ferramenta-chamada-vacuum/1710
Partitioning
 Partitioning 이란?
 개념적으로 하나인 테이블을 여러 개로 쪼개어 관리
 테이블당 자료량 줄어 인덱스 크기 감소, 검색속도 향상
일기도
일
기
도
_0
일
기
도
_1
일
기
도
_2
일
기
도
_3
일
기
도_4
일
기
도
_5
일
기
도
_6
일요일 Insert
월요일 Insert
화요일 Insert
일요일 Truncate
월요일 Truncate
화요일 Truncate
Truncate는 실행시간이 거의 초단위이며, VACUUM 없이 파일이 줄어듦
★데이터 유지 솔루션★
 요일단위 파티셔닝
 Insert시 각 요일별 테이블에 삽입
 조회시 부모 데이블을 이용
 날짜 연산을 통해 N일 단위 파티셔닝도 가능
 데이터 삭제
 Truncate를 이용해 자식 테이블 단위 삭제
 항상 N-1 일치 정도의 자료량 유지 가능
조회속도 개선
PostgreSQL의 쿼리특
징
 통계를 적극 이용해 쿼리 실
행
 이용할 인덱스 강제 지정 불가
 쿼리 실행시 통계 데이터 참조
Optimize
 Oracle 10g 보다 우수
 통계는 일반적으로 자동 갱신
(Auto Vacuum과 함께)
 Analyze 명령으로도 갱신 가능
 재대로 된 인덱스 생성이 가장
중요 출처: http://helloworld.naver.com/helloworld/227936
조회속도 개선 과정
데이터
현황 분석
쿼리
찾기
쿼리 플랜
분석
인덱스
개선
데이터 현황분석
 테이블별 행 수 파악
 select count(*)
table_name 은 정말 무
식한 방법
 통계 테이블을 이용하
면 대략적인 행수 파악
가능
 pg_class 테이블에 의미
있는 자료들이 보관됨
 실행시간 1초 내외
select relname as table_name,
to_char(reltuples, '999,999,999')
as row_count
from pg_class
where relnamespace = (select oid
from pg_namespace where nspname
= 'public')
and relam = 0
order by 2 desc, 1;
GeoServer SQL 뷰
 SQL 문을 Layer로 취
급
 Geo DB가 데이터 소
스인 경우만 사용 가능
 다음 난제 해결에 유용
 복잡한 조건을 Layer로
 좌표계 변환
 여러 테이블 Join 필요
 속성을 공간객체로 변
환
쿼리 찾기
 통계 테이블을 통해 실행중인
SQL 확인
 pg_stat_activity 테이블 이용
 튜닝을 위한 필수 과정
 실행에 걸린 시간도 확인 가
능
 PostgreSQL 버전에 따라 쿼
리 차이 존재
select query_start, current_query
from pg_stat_activity
where username = ‘mobile’
and current_query not like ‘<IDLE>%’
orde by query_start desc;
SELECT
"val",encode(ST_AsBinary(ST_Force_2D("geom
")),'base64') as "geom"
FROM (
select mdl, mdl_var,
placemark_name, val, lyrs_cd,
forecast_time,
create_time as anal_time,
ST_Transform(the_geom, 7188) as geom
from contour
where mdl_var = 'TMP'
) as "vtable"
WHERE (((("mdl" = 'GDAPS' AND "lyrs_cd" =
'A925.0') AND "forecast_time" =
'2011.06.27 00:00') AND "anal_time" =
'2011.06.27 00:00') AND "geom" &&
ST_GeomFromText('POLYGON ((-1056768 -
2105344, -1056768 -1040384, 8192 -1040384,
8192 -2105344, -1056768 -2105344))',
7188));
쿼리플랜 분석
 PostgreSQL은 쿼리 분석기능 기본 탑재
 pgAdmin III-쿼리-분석설명 메뉴
 Explain Analyze 명령 – 이 방법이 분석 용이
인덱스 개선
 개선 원칙
 Where 절에 있는 컬럼 모두 묶어 인덱스 구성
 공간컬럼은 별도 인덱스
 포함된 데이터 종류가 많은 컬럼을 먼저 써줘야
 가능한 한 등위연산자로 비교되는 항목부터
 불필요 인덱스 제거 – 인서트시 영향
 개선 적용 예
-- contour_0
DROP INDEX index_createtime_contour_0;
DROP INDEX index_forecasttime_contour_0;
DROP INDEX index_lyrscd_contour_0;
DROP INDEX index_mdl_contour_0;
DROP INDEX index_mdlvar_contour_0;
CREATE INDEX index_contour_0_all
ON contour_0 (forecast_time ASC NULLS LAST, mdl_var ASC NULLS LAST, lyrs_cd ASC NULLS LAST, create_time DESC
NULLS LAST, mdl ASC NULLS LAST);
 결과
 개별적 인덱스 삭제 후 통합 인덱스 생성으로 데이터 용량 20% 감소
 테이블별로 6~25배의 속도 개선 (큰 테이블이 효과 큼)
★조회속도 개선 솔루션★
 적절한 인덱스 생성
 자료량 확인
 GeoServer가 생성하는 쿼리 확인
 쿼리플랜 확인
 데이터 분포 고려한 인덱스 생성
개선결과
결과 종합
 데이터 인서트
 몇 건마다 실행할 지가 중요
 사용 시스템에 따른 최적조건 찾기 필요
 100배 정도 성능 개선
 데이터파일 크기
 파티셔닝과 Truncate의 조합
 N-1일치 안정적 유지
 조회 시간
 쿼리에 맞는 적절한 인덱스
 20배 정도 속도 개선
시연
결론
 PostgreSQL은 정말 훌륭한 DBMS다!
 GeoServer와의 궁합도 정말 좋다.
 하지만 특성을 알아야 하고 튜닝해야 한다.
감사합니다!!!

More Related Content

What's hot

오픈소스GIS 개론 과정 - OpenLayers 기초
오픈소스GIS 개론 과정 - OpenLayers 기초오픈소스GIS 개론 과정 - OpenLayers 기초
오픈소스GIS 개론 과정 - OpenLayers 기초HaNJiN Lee
 
Proj4를 이용한 좌표계 변환
Proj4를 이용한 좌표계 변환Proj4를 이용한 좌표계 변환
Proj4를 이용한 좌표계 변환BJ Jang
 
공간SQL을 이용한 공간자료분석 기초실습
공간SQL을 이용한 공간자료분석 기초실습공간SQL을 이용한 공간자료분석 기초실습
공간SQL을 이용한 공간자료분석 기초실습BJ Jang
 
State of OpenGXT: 오픈소스 공간분석엔진
State of OpenGXT: 오픈소스 공간분석엔진State of OpenGXT: 오픈소스 공간분석엔진
State of OpenGXT: 오픈소스 공간분석엔진MinPa Lee
 
GeoTools와 GeoServer를 이용한 KOPSS Open API의 구현
GeoTools와 GeoServer를 이용한 KOPSS Open API의 구현GeoTools와 GeoServer를 이용한 KOPSS Open API의 구현
GeoTools와 GeoServer를 이용한 KOPSS Open API의 구현MinPa Lee
 
[FOSS4G Korea 2016] Workshop - Advanced GeoServer
[FOSS4G Korea 2016] Workshop - Advanced GeoServer[FOSS4G Korea 2016] Workshop - Advanced GeoServer
[FOSS4G Korea 2016] Workshop - Advanced GeoServerMinPa Lee
 
공간정보거점대학 1.geo server_고급과정
공간정보거점대학 1.geo server_고급과정공간정보거점대학 1.geo server_고급과정
공간정보거점대학 1.geo server_고급과정BJ Jang
 
지리정보체계(GIS) - [1] GIS 데이터 유형, 구조 알기
지리정보체계(GIS) - [1] GIS 데이터 유형, 구조 알기지리정보체계(GIS) - [1] GIS 데이터 유형, 구조 알기
지리정보체계(GIS) - [1] GIS 데이터 유형, 구조 알기Byeong-Hyeok Yu
 
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료BJ Jang
 
지리정보체계(GIS) - [2] 좌표계 이해하기
지리정보체계(GIS) - [2] 좌표계 이해하기지리정보체계(GIS) - [2] 좌표계 이해하기
지리정보체계(GIS) - [2] 좌표계 이해하기Byeong-Hyeok Yu
 
오픈소스 GIS 교육 - PostGIS
오픈소스 GIS 교육 - PostGIS오픈소스 GIS 교육 - PostGIS
오픈소스 GIS 교육 - PostGISJungHwan Yun
 
PostGIS - National Education Center for GIS: Open Source GIS
PostGIS - National Education Center for GIS: Open Source GIS PostGIS - National Education Center for GIS: Open Source GIS
PostGIS - National Education Center for GIS: Open Source GIS MinPa Lee
 
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PGPgDay.Seoul
 
[공간정보시스템 개론] L06 GIS의 이해
[공간정보시스템 개론] L06 GIS의 이해[공간정보시스템 개론] L06 GIS의 이해
[공간정보시스템 개론] L06 GIS의 이해Kwang Woo NAM
 
오픈 소스 GIS와 OSGeo
오픈 소스 GIS와 OSGeo오픈 소스 GIS와 OSGeo
오픈 소스 GIS와 OSGeoSANGHEE SHIN
 
Qgis 기초 2019
Qgis 기초 2019Qgis 기초 2019
Qgis 기초 2019Joonho Lee
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반BJ Jang
 
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for UnrealKyu-sung Choi
 
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028MinPa Lee
 

What's hot (20)

GeoServer 기초
GeoServer 기초GeoServer 기초
GeoServer 기초
 
오픈소스GIS 개론 과정 - OpenLayers 기초
오픈소스GIS 개론 과정 - OpenLayers 기초오픈소스GIS 개론 과정 - OpenLayers 기초
오픈소스GIS 개론 과정 - OpenLayers 기초
 
Proj4를 이용한 좌표계 변환
Proj4를 이용한 좌표계 변환Proj4를 이용한 좌표계 변환
Proj4를 이용한 좌표계 변환
 
공간SQL을 이용한 공간자료분석 기초실습
공간SQL을 이용한 공간자료분석 기초실습공간SQL을 이용한 공간자료분석 기초실습
공간SQL을 이용한 공간자료분석 기초실습
 
State of OpenGXT: 오픈소스 공간분석엔진
State of OpenGXT: 오픈소스 공간분석엔진State of OpenGXT: 오픈소스 공간분석엔진
State of OpenGXT: 오픈소스 공간분석엔진
 
GeoTools와 GeoServer를 이용한 KOPSS Open API의 구현
GeoTools와 GeoServer를 이용한 KOPSS Open API의 구현GeoTools와 GeoServer를 이용한 KOPSS Open API의 구현
GeoTools와 GeoServer를 이용한 KOPSS Open API의 구현
 
[FOSS4G Korea 2016] Workshop - Advanced GeoServer
[FOSS4G Korea 2016] Workshop - Advanced GeoServer[FOSS4G Korea 2016] Workshop - Advanced GeoServer
[FOSS4G Korea 2016] Workshop - Advanced GeoServer
 
공간정보거점대학 1.geo server_고급과정
공간정보거점대학 1.geo server_고급과정공간정보거점대학 1.geo server_고급과정
공간정보거점대학 1.geo server_고급과정
 
지리정보체계(GIS) - [1] GIS 데이터 유형, 구조 알기
지리정보체계(GIS) - [1] GIS 데이터 유형, 구조 알기지리정보체계(GIS) - [1] GIS 데이터 유형, 구조 알기
지리정보체계(GIS) - [1] GIS 데이터 유형, 구조 알기
 
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료
 
지리정보체계(GIS) - [2] 좌표계 이해하기
지리정보체계(GIS) - [2] 좌표계 이해하기지리정보체계(GIS) - [2] 좌표계 이해하기
지리정보체계(GIS) - [2] 좌표계 이해하기
 
오픈소스 GIS 교육 - PostGIS
오픈소스 GIS 교육 - PostGIS오픈소스 GIS 교육 - PostGIS
오픈소스 GIS 교육 - PostGIS
 
PostGIS - National Education Center for GIS: Open Source GIS
PostGIS - National Education Center for GIS: Open Source GIS PostGIS - National Education Center for GIS: Open Source GIS
PostGIS - National Education Center for GIS: Open Source GIS
 
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
 
[공간정보시스템 개론] L06 GIS의 이해
[공간정보시스템 개론] L06 GIS의 이해[공간정보시스템 개론] L06 GIS의 이해
[공간정보시스템 개론] L06 GIS의 이해
 
오픈 소스 GIS와 OSGeo
오픈 소스 GIS와 OSGeo오픈 소스 GIS와 OSGeo
오픈 소스 GIS와 OSGeo
 
Qgis 기초 2019
Qgis 기초 2019Qgis 기초 2019
Qgis 기초 2019
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반
 
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
 
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
 

Viewers also liked

[Foss4 g2013]the architecture of mobile traffic map service final
[Foss4 g2013]the architecture of mobile traffic map service final[Foss4 g2013]the architecture of mobile traffic map service final
[Foss4 g2013]the architecture of mobile traffic map service finalBJ Jang
 
QGIS 기초
QGIS 기초 QGIS 기초
QGIS 기초 slhead1
 
오픈소스 GIS 개요
오픈소스 GIS 개요오픈소스 GIS 개요
오픈소스 GIS 개요slhead1
 
State of the Map 2012 talk
State of the Map 2012 talkState of the Map 2012 talk
State of the Map 2012 talkWm Leler
 
PGDay.Seoul 2016 lightingtalk
PGDay.Seoul 2016 lightingtalkPGDay.Seoul 2016 lightingtalk
PGDay.Seoul 2016 lightingtalkhyeongchae lee
 
PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개PgDay.Seoul
 
공간정보거점대학 - PyQGIS 및 플러그인 개발
공간정보거점대학 - PyQGIS 및 플러그인 개발공간정보거점대학 - PyQGIS 및 플러그인 개발
공간정보거점대학 - PyQGIS 및 플러그인 개발MinPa Lee
 
QGIS 고급 및 PyQGIS - 김기웅, 임영현
QGIS 고급 및 PyQGIS - 김기웅, 임영현 QGIS 고급 및 PyQGIS - 김기웅, 임영현
QGIS 고급 및 PyQGIS - 김기웅, 임영현 SANGHEE SHIN
 

Viewers also liked (8)

[Foss4 g2013]the architecture of mobile traffic map service final
[Foss4 g2013]the architecture of mobile traffic map service final[Foss4 g2013]the architecture of mobile traffic map service final
[Foss4 g2013]the architecture of mobile traffic map service final
 
QGIS 기초
QGIS 기초 QGIS 기초
QGIS 기초
 
오픈소스 GIS 개요
오픈소스 GIS 개요오픈소스 GIS 개요
오픈소스 GIS 개요
 
State of the Map 2012 talk
State of the Map 2012 talkState of the Map 2012 talk
State of the Map 2012 talk
 
PGDay.Seoul 2016 lightingtalk
PGDay.Seoul 2016 lightingtalkPGDay.Seoul 2016 lightingtalk
PGDay.Seoul 2016 lightingtalk
 
PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개
 
공간정보거점대학 - PyQGIS 및 플러그인 개발
공간정보거점대학 - PyQGIS 및 플러그인 개발공간정보거점대학 - PyQGIS 및 플러그인 개발
공간정보거점대학 - PyQGIS 및 플러그인 개발
 
QGIS 고급 및 PyQGIS - 김기웅, 임영현
QGIS 고급 및 PyQGIS - 김기웅, 임영현 QGIS 고급 및 PyQGIS - 김기웅, 임영현
QGIS 고급 및 PyQGIS - 김기웅, 임영현
 

Similar to [Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례

[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영NAVER D2
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) YoungSu Son
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint NAVER D2
 
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)Jaikwang Lee
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법YoungSu Son
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
Mongodb and spatial
Mongodb and spatialMongodb and spatial
Mongodb and spatialJiyoon Kim
 
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계PgDay.Seoul
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기YoungSu Son
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes창언 정
 
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기Amazon Web Services Korea
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Gruter
 
[찾아가는세미나] 클라우드 데이터 가상화솔루션
[찾아가는세미나] 클라우드 데이터 가상화솔루션[찾아가는세미나] 클라우드 데이터 가상화솔루션
[찾아가는세미나] 클라우드 데이터 가상화솔루션해은 최
 
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930Jaikwang Lee
 
Alluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-CloudAlluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-CloudJinwook Chung
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupJude Kim
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재PgDay.Seoul
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & BeyondJay Lee
 
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀EXEM
 

Similar to [Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례 (20)

[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
 
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
Mongodb and spatial
Mongodb and spatialMongodb and spatial
Mongodb and spatial
 
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes
 
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)
 
pgday-2023
pgday-2023pgday-2023
pgday-2023
 
[찾아가는세미나] 클라우드 데이터 가상화솔루션
[찾아가는세미나] 클라우드 데이터 가상화솔루션[찾아가는세미나] 클라우드 데이터 가상화솔루션
[찾아가는세미나] 클라우드 데이터 가상화솔루션
 
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930대용량 로그분석 Bigquery로 간단히 사용하기 20160930
대용량 로그분석 Bigquery로 간단히 사용하기 20160930
 
Alluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-CloudAlluxio: Data Orchestration on Multi-Cloud
Alluxio: Data Orchestration on Multi-Cloud
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetup
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & Beyond
 
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
 

More from BJ Jang

Mago3D Barcelona ICGC(카탈루니아 지형 및 지질연구소) 발표자료
Mago3D Barcelona ICGC(카탈루니아 지형 및 지질연구소) 발표자료Mago3D Barcelona ICGC(카탈루니아 지형 및 지질연구소) 발표자료
Mago3D Barcelona ICGC(카탈루니아 지형 및 지질연구소) 발표자료BJ Jang
 
2017년 나의 계획
2017년 나의 계획2017년 나의 계획
2017년 나의 계획BJ Jang
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습BJ Jang
 
[FOSS4G Korea 2016] GeoHash를 이용한 지형도 변화탐지와 시계열 관리
[FOSS4G Korea 2016] GeoHash를 이용한 지형도 변화탐지와 시계열 관리[FOSS4G Korea 2016] GeoHash를 이용한 지형도 변화탐지와 시계열 관리
[FOSS4G Korea 2016] GeoHash를 이용한 지형도 변화탐지와 시계열 관리BJ Jang
 
QGIS 소개 및 ArcMap과의 비교
QGIS 소개 및 ArcMap과의 비교QGIS 소개 및 ArcMap과의 비교
QGIS 소개 및 ArcMap과의 비교BJ Jang
 
PyQGIS 개발자 쿡북
PyQGIS 개발자 쿡북PyQGIS 개발자 쿡북
PyQGIS 개발자 쿡북BJ Jang
 
Open Source based GIS devlopment cases by Gaia3D_20150417
Open Source based GIS devlopment cases by Gaia3D_20150417Open Source based GIS devlopment cases by Gaia3D_20150417
Open Source based GIS devlopment cases by Gaia3D_20150417BJ Jang
 
Managing Multi-DBMS on a Single UI , a Web-based Spatial DB Manager-FOSS4G A...
Managing Multi-DBMS on a Single UI, a Web-based Spatial DB Manager-FOSS4G A...Managing Multi-DBMS on a Single UI, a Web-based Spatial DB Manager-FOSS4G A...
Managing Multi-DBMS on a Single UI , a Web-based Spatial DB Manager-FOSS4G A...BJ Jang
 
올챙이 국제스타 만들기 20141023
올챙이 국제스타 만들기 20141023올챙이 국제스타 만들기 20141023
올챙이 국제스타 만들기 20141023BJ Jang
 
Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001BJ Jang
 
Big size meteorological data processing and mobile displaying system using ...
Big size meteorological data processing and mobile displaying system using ...Big size meteorological data processing and mobile displaying system using ...
Big size meteorological data processing and mobile displaying system using ...BJ Jang
 
[Foss4 g2014 korea] qgis를 플랫폼으로 한 파이썬기반 공간통계 구현 사례
[Foss4 g2014 korea] qgis를 플랫폼으로 한 파이썬기반 공간통계 구현 사례[Foss4 g2014 korea] qgis를 플랫폼으로 한 파이썬기반 공간통계 구현 사례
[Foss4 g2014 korea] qgis를 플랫폼으로 한 파이썬기반 공간통계 구현 사례BJ Jang
 
Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028BJ Jang
 

More from BJ Jang (13)

Mago3D Barcelona ICGC(카탈루니아 지형 및 지질연구소) 발표자료
Mago3D Barcelona ICGC(카탈루니아 지형 및 지질연구소) 발표자료Mago3D Barcelona ICGC(카탈루니아 지형 및 지질연구소) 발표자료
Mago3D Barcelona ICGC(카탈루니아 지형 및 지질연구소) 발표자료
 
2017년 나의 계획
2017년 나의 계획2017년 나의 계획
2017년 나의 계획
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
 
[FOSS4G Korea 2016] GeoHash를 이용한 지형도 변화탐지와 시계열 관리
[FOSS4G Korea 2016] GeoHash를 이용한 지형도 변화탐지와 시계열 관리[FOSS4G Korea 2016] GeoHash를 이용한 지형도 변화탐지와 시계열 관리
[FOSS4G Korea 2016] GeoHash를 이용한 지형도 변화탐지와 시계열 관리
 
QGIS 소개 및 ArcMap과의 비교
QGIS 소개 및 ArcMap과의 비교QGIS 소개 및 ArcMap과의 비교
QGIS 소개 및 ArcMap과의 비교
 
PyQGIS 개발자 쿡북
PyQGIS 개발자 쿡북PyQGIS 개발자 쿡북
PyQGIS 개발자 쿡북
 
Open Source based GIS devlopment cases by Gaia3D_20150417
Open Source based GIS devlopment cases by Gaia3D_20150417Open Source based GIS devlopment cases by Gaia3D_20150417
Open Source based GIS devlopment cases by Gaia3D_20150417
 
Managing Multi-DBMS on a Single UI , a Web-based Spatial DB Manager-FOSS4G A...
Managing Multi-DBMS on a Single UI, a Web-based Spatial DB Manager-FOSS4G A...Managing Multi-DBMS on a Single UI, a Web-based Spatial DB Manager-FOSS4G A...
Managing Multi-DBMS on a Single UI , a Web-based Spatial DB Manager-FOSS4G A...
 
올챙이 국제스타 만들기 20141023
올챙이 국제스타 만들기 20141023올챙이 국제스타 만들기 20141023
올챙이 국제스타 만들기 20141023
 
Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001
 
Big size meteorological data processing and mobile displaying system using ...
Big size meteorological data processing and mobile displaying system using ...Big size meteorological data processing and mobile displaying system using ...
Big size meteorological data processing and mobile displaying system using ...
 
[Foss4 g2014 korea] qgis를 플랫폼으로 한 파이썬기반 공간통계 구현 사례
[Foss4 g2014 korea] qgis를 플랫폼으로 한 파이썬기반 공간통계 구현 사례[Foss4 g2014 korea] qgis를 플랫폼으로 한 파이썬기반 공간통계 구현 사례
[Foss4 g2014 korea] qgis를 플랫폼으로 한 파이썬기반 공간통계 구현 사례
 
Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028
 

[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례

  • 1. PostGIS와 GeoServer를 이용한 대용량 공간데이터 기반 일기도 서비 스장병진, 금정우
  • 2. Who am I  Gaia3D Open Source GIS Technical Manager  Open Source GIS Korean Localizer  Risk Surfer
  • 3. 이 PT의 목적  석사과정 학생이 Oracle을 써서 느리면 학생 잘못 PostGIS를 써서 느리면 오픈소스 잘못!  Oracle의 장점은 모든 것을 튜닝할 수 있는 것 Oracle의 단점은 모두 튜닝해야만 하는 것  모든 서버에 다 통하는 격언  오픈 소스 GIS를 써서 느린 것이 아니라 튜닝을 안 해서 느린 것이다!
  • 7. 기상자료 특징 실시간 / 준실시간저해상도 잦은 생산주기다차원 자료 지리적 해상도 낮음 평면+높이(등압면) +분석모델 +자료시간+예측시간 하루 수차례 ~수백차례 항상 최신자료 필요
  • 10. 1일 사용자료 회 생산 (00, 06, 12, 18 UTC) 개 공간 테이블 장의 일기도 MB의 자료 행의 공간 데이터
  • 12. 극복과제 3가지 데이터 수집이 느리다 데이터 유지관리가 안 된 다 데이터 조회가 느리다 DB 전범 위 문제
  • 13. B & F  튜닝전 상황  자료 인서트에 5시간  데이터파일 하루 35기가씩 커짐  일기도 한 장 조회시 수십초  개선목표  30분 이내 인서트  데이터파일 일정크기 유지  수초 이내 일기도 조회
  • 15. 대용량 Update 출처: http://novathin.kr/19 건건이 실행 Batch Size 만큼 모아 한번에 실행 SQL을 실행하는 시기에 따라 성능의 차이가 크다!
  • 16. 실제 삽입 속도 비교 하나의 일기도 kml 파일  약 3000행  테스트 기준  매번 executeUpdate 실행 – 109sec 소요(기존방식)  addBatch() 100번 후, executeBatch(), 두 과정 30번 – 8.9sec  addBatch() 500번 후, executeBatch(), 두 과정 6번 – 5.7sec  addBatch() 1000번 후, executeBatch(), 두 과정 3번– 3.4sec  addBatch() 3000번 후, executeBatch(), 두 과정 1번 – 1.1sec
  • 17. ★임포트 개선 솔루션★  JDBC 2.0의 addBatch(), exeuteBatch() 이 용 - JDBC 2.0을 지원하는 모든 DB에서 사 용가능  기존의 1 insert / 1 commit 에서  Kml파일 단위의(3000 insert) 마다 commit 으로 변경
  • 19. PostgreSQL의 데이터관 리  PostgreSQL은 추기형  Update, Delete된 데이터 지우지 않음  마킹만 하고 새 데이터를 아래에 기록  장점  속도가 빠름  여러 버전의 데이터 관리가 가능  단점  데이터파일 크기가 심각하게 늘어날 수 있음  파일크기 증가에 따른 성능저하 가능성  일기도 DB 파일이 하루 35GB씩 커짐!!!
  • 20. 스냅샷형 vs 추기형 테이블 A B’ C D E 테이블 A B X C D E B’ 스냅샷 B Transection 주인 기타 User 갱신전 레코드 갱신후 레코드 갱신전 레코드 갱신후 레코드 Oracle / MySQL PostgreSQL Transection 완료 후
  • 21. 일반 VACUUM 테이블 A B X C X D E X B’ C’ 테이블 A B X C X D E X B’ C’ 테이블 A F C X D E X B’ C’ 불필요 B X C X E X FSM 불필요 C X E X FSM VACUUM 실행 데이터 Insert 출처: http://www.geocities.jp/sugachan1973/doc/funto60.html 기상청 일기도용 PostgreSQL은 일반 Vacuum 만으로는 계속 데이터파일 증가
  • 22. VACUUM FULL 기상청 일기도용 PostgreSQL은 Full VACUUM에 15시간 소요. VACUUM FULL 수행 중 배타적 LOCK 발생 출처: http://www.devmedia.com.br/otimizacao-uma-ferramenta-chamada-vacuum/1710
  • 23. Partitioning  Partitioning 이란?  개념적으로 하나인 테이블을 여러 개로 쪼개어 관리  테이블당 자료량 줄어 인덱스 크기 감소, 검색속도 향상 일기도 일 기 도 _0 일 기 도 _1 일 기 도 _2 일 기 도 _3 일 기 도_4 일 기 도 _5 일 기 도 _6 일요일 Insert 월요일 Insert 화요일 Insert 일요일 Truncate 월요일 Truncate 화요일 Truncate Truncate는 실행시간이 거의 초단위이며, VACUUM 없이 파일이 줄어듦
  • 24. ★데이터 유지 솔루션★  요일단위 파티셔닝  Insert시 각 요일별 테이블에 삽입  조회시 부모 데이블을 이용  날짜 연산을 통해 N일 단위 파티셔닝도 가능  데이터 삭제  Truncate를 이용해 자식 테이블 단위 삭제  항상 N-1 일치 정도의 자료량 유지 가능
  • 26. PostgreSQL의 쿼리특 징  통계를 적극 이용해 쿼리 실 행  이용할 인덱스 강제 지정 불가  쿼리 실행시 통계 데이터 참조 Optimize  Oracle 10g 보다 우수  통계는 일반적으로 자동 갱신 (Auto Vacuum과 함께)  Analyze 명령으로도 갱신 가능  재대로 된 인덱스 생성이 가장 중요 출처: http://helloworld.naver.com/helloworld/227936
  • 27. 조회속도 개선 과정 데이터 현황 분석 쿼리 찾기 쿼리 플랜 분석 인덱스 개선
  • 28. 데이터 현황분석  테이블별 행 수 파악  select count(*) table_name 은 정말 무 식한 방법  통계 테이블을 이용하 면 대략적인 행수 파악 가능  pg_class 테이블에 의미 있는 자료들이 보관됨  실행시간 1초 내외 select relname as table_name, to_char(reltuples, '999,999,999') as row_count from pg_class where relnamespace = (select oid from pg_namespace where nspname = 'public') and relam = 0 order by 2 desc, 1;
  • 29. GeoServer SQL 뷰  SQL 문을 Layer로 취 급  Geo DB가 데이터 소 스인 경우만 사용 가능  다음 난제 해결에 유용  복잡한 조건을 Layer로  좌표계 변환  여러 테이블 Join 필요  속성을 공간객체로 변 환
  • 30. 쿼리 찾기  통계 테이블을 통해 실행중인 SQL 확인  pg_stat_activity 테이블 이용  튜닝을 위한 필수 과정  실행에 걸린 시간도 확인 가 능  PostgreSQL 버전에 따라 쿼 리 차이 존재 select query_start, current_query from pg_stat_activity where username = ‘mobile’ and current_query not like ‘<IDLE>%’ orde by query_start desc; SELECT "val",encode(ST_AsBinary(ST_Force_2D("geom ")),'base64') as "geom" FROM ( select mdl, mdl_var, placemark_name, val, lyrs_cd, forecast_time, create_time as anal_time, ST_Transform(the_geom, 7188) as geom from contour where mdl_var = 'TMP' ) as "vtable" WHERE (((("mdl" = 'GDAPS' AND "lyrs_cd" = 'A925.0') AND "forecast_time" = '2011.06.27 00:00') AND "anal_time" = '2011.06.27 00:00') AND "geom" && ST_GeomFromText('POLYGON ((-1056768 - 2105344, -1056768 -1040384, 8192 -1040384, 8192 -2105344, -1056768 -2105344))', 7188));
  • 31. 쿼리플랜 분석  PostgreSQL은 쿼리 분석기능 기본 탑재  pgAdmin III-쿼리-분석설명 메뉴  Explain Analyze 명령 – 이 방법이 분석 용이
  • 32. 인덱스 개선  개선 원칙  Where 절에 있는 컬럼 모두 묶어 인덱스 구성  공간컬럼은 별도 인덱스  포함된 데이터 종류가 많은 컬럼을 먼저 써줘야  가능한 한 등위연산자로 비교되는 항목부터  불필요 인덱스 제거 – 인서트시 영향  개선 적용 예 -- contour_0 DROP INDEX index_createtime_contour_0; DROP INDEX index_forecasttime_contour_0; DROP INDEX index_lyrscd_contour_0; DROP INDEX index_mdl_contour_0; DROP INDEX index_mdlvar_contour_0; CREATE INDEX index_contour_0_all ON contour_0 (forecast_time ASC NULLS LAST, mdl_var ASC NULLS LAST, lyrs_cd ASC NULLS LAST, create_time DESC NULLS LAST, mdl ASC NULLS LAST);  결과  개별적 인덱스 삭제 후 통합 인덱스 생성으로 데이터 용량 20% 감소  테이블별로 6~25배의 속도 개선 (큰 테이블이 효과 큼)
  • 33. ★조회속도 개선 솔루션★  적절한 인덱스 생성  자료량 확인  GeoServer가 생성하는 쿼리 확인  쿼리플랜 확인  데이터 분포 고려한 인덱스 생성
  • 35. 결과 종합  데이터 인서트  몇 건마다 실행할 지가 중요  사용 시스템에 따른 최적조건 찾기 필요  100배 정도 성능 개선  데이터파일 크기  파티셔닝과 Truncate의 조합  N-1일치 안정적 유지  조회 시간  쿼리에 맞는 적절한 인덱스  20배 정도 속도 개선
  • 37. 결론  PostgreSQL은 정말 훌륭한 DBMS다!  GeoServer와의 궁합도 정말 좋다.  하지만 특성을 알아야 하고 튜닝해야 한다.