Upload
vuthien
View
261
Download
19
Embed Size (px)
Citation preview
SQL Server 기반의고성능-대용량 SAP 시스템 만들기
이랜드 시스템스유규성
• SQL Programming• 인덱스와 실행계획 확인• 데이터 압축
이 주제를 이해하는데 필요한 지식
개념 및
소개 수준
선수 지식
불필요
100중간 수준
100에
더하여
기술적 세부
사항 설명
200고급 수준
200에
더하여
능숙한 사용
경험, 아키텍처
지식 필요
300전문가
수준
400
Level 300
• 2000.01 ~ 현재 : 이랜드시스템스 DBA / DA
강사소개
80:20 법칙
16
224,000
19,0786,155
??
• 시스템 정보• 성능관리
– 통계 정보 관리– 인덱스 관리
• 공간 관리• Summary
순서
시스템 정보
SAP System Landscape(Korea)PRDPRDQASQASDEVDEV
Ret
ail
Ret
ail
Fash
ion
Fash
ion
ERPERP
BWBW
CRMCRM
ERPERP
BWBW
공통
공통 HRHR
DR
# 각 부문(유통, 패션, 공통) 별 User Interface는 SAP EP로 구축됨.
Netweaver 7.0
Netweaver BI 7.0
CRM 5.0
Netweaver 7.0
Netweaver BI 7.0
Netweaver 7.0
SAP System Landscape(China)
PRDPRDQASQASDEVDEV
Fash
ion
Fash
ion ERPERP
BWBW
Stand-by
Server(한국)
BPCBPC
Netweaver 7.0
Netweaver BI 7.0
BPC 5.0
# User Interface는 SAP EP로 구축됨.
System 구성 및 현황(Korea)Div. Appl. Type No. H/W model CPU RAM Disk OS DBMS DB Size
유통
ERPDB 1
Unisys ES7000/one
32 96Hitachi USP
Windows 2003 Datacenter IA64
SQL Server 2008 Enterprise
7 TB5GB/Day
APPL 5Unisys
ES7000/one48 96
Windows 2003 Datacenter IA64
BWDB 1
HP Superdome
16 32Hitachi USP
Windows 2003 Datacenter IA64
SQL Server 2008 Enterprise
6.5 TB
APPL 4HP
Superdome24 48
Windows 2003 Datacenter IA64
CRMDB 1 HP DL580 16 32
EMC CX700
Windows 2003 Enterprise X64
SQL Server 2005 Enterprise
0.7 TB
APPL 3 HP DL580 24 48Windows 2003 Enterprise X64
패션
ERPDB 1
HP Superdome
34 96Hitachi NSC55
Windows 2003 Datacenter IA64
SQL Server 2008 Enterprise
16TB 8TB12GB/Day
APPL 5HP
Superdome40 80
Windows 2003 Datacenter IA64
BWDB 1
HP Superdome
28 88EMC
CX700Windows 2003 Datacenter IA64
SQL Server 2008 Enterprise
2.9 TB
APPL 4HP
Superdome34 64
Windows 2003 Datacenter IA64
공통 HRDB 1
HP Superdome
8 24HitachiNSC55
Windows 2003 Datacenter IA64
SQL Server 2005 Enterprise
0.4 TB
APPL 2HP
Superdome16 40
Windows 2003 Datacenter IA64
System 구성 및 현황(China)
Div. Appl. Type No. H/W model CPU RAM Disk OS DBMS DB Size
패션
ERPDB 2 Unisys 24 96
Hitachi USP
Windows 2003 Enterprise x64
SQL Server 2008 Enterprise
1.1 TB
APPL 5 Dell Blade 40 80Windows 2003 Enterprise x64
BWDB 1 Unisys 24 96
Hitachi USP
Windows 2003 Enterprise x64
SQL Server 2008 Enterprise
581 GB
APPL 5 Dell Blade 40 80Windows 2003 Enterprise x64
통계 정보 관리
무슨 문제일까요?
select * from mwhere firstname = 'JHWHJUG'
Rows Exec StmtText
1 1 SELECT * FROM [m] WHERE [firstname]=@1
1 1|--Clustered Index Scan(OBJECT:([Credit].[dbo].[m].[m_ident]), WHERE:([
Credit].[dbo].[m].[firstname]='JHWHJUG'))
(1개 행이 영향을 받음)테이블'm'. 검색수 1, 논리적 읽기수 146, 물리적 읽기수 0
Query execution steps
Use Statistics
• 옵티마이저가 최적의 실행계획을 판단하는 기준• 데이터 분포정보를 통해 dencity를 제공하고, 조회
결과를 예측하게 함
통계 정보란?
sampling . . .
Key valuedata
Table 1
Table 2
Table 3
• sys.sysindexes– Statblob 칼럼에 저장됨
• sys.stats• DBCC SHOW_STATISTICS
통계정보 조회하기
• DBCC SHOW_STATISTICS (테이블, 칼럼|통계명)
통계 정보 조회
기본정보
Density vector
Histogram
• Densityd = 1 / (distinct row count)
• Predicate • Cardinality estimate
통계 정보 조회
• Histogram– Captures distribution of values for a column– Max number of steps = 200– Used for estimating cardinality of search
predicates
통계 정보 조회
RANGE_HI_KEY Histogram의 step 기준 칼럼의 값
RANGE_ROWS 이전 RANGE_HI_KEY < ( row count) < 현재 RANGE_HI_KEY
EQ_ROWS RANGE_HI_KEY 값에 해당하는 (row count)
AVG_RANGE_ROWS RANGE_ROWS / DISTINCT_RANGE_ROWS
DISTINCT_RANGE_ROWS 이전 RANGE_HI_KEY < (distinct row count) <현재 RANGE_HI_KEY
통계 정보 조회
• Database option– AUTO_CREATE_STATISTICS – AUTO_UPDATE_STATISTICS – AUTO UPDATE uses default sampling
• sp_autostats– Display, change auto-stats setting (ON/OFF)– Can disable auto-stats per index, table
• sp_createstats, sp_updatestats, sp_helpstats
통계 정보 자동생성/업데이트
• 각 통계정보에 포함된 칼럼의 변경된비율(= sysindexes.rowmodctrs / total rows)값을 기반으로 판단
통계 정보 자동 업데이트 시점
rowmodctrs >= 500 + 20%
통계 자동 업데이트 - sampling
샘플링 비율
Row count
55,000건 : 100 %
100만건 : 6% ~ 10% 1000만건 :
1.5 %1억건0.45 %
• 대용량 DB 자동 통계관리 취약점– 오래된 통계정보– 빈약한 통계정보– 통계정보 업데이트 많은 비용
통계 정보 관리
sampling . . .
Key valuedata
Table 1time
통계정보수정시점
1. 통계 정보미반영 데이터
2. 자주 사용하는데이터
• Use auto create and auto update statistics
Best Practices
ALTER DATABASE [DB명] SET AUTO_CREATE_STATISTICS ON;
ALTER DATABASE [DB명] SET AUTO_UPDATE_STATISTICS ON;
• If needed, selectively use FULLSCAN statistics
UPDATE STATISTICS …WITH FULLSCAN
• Consider limiting use of multi-statement TVFs and table variables
• Avoid modification of stored procedure parameters in an SP prior to use in a query
Best Practices
CREATE PROCEDURE GetRecentSales (@date datetime) WITH RECOMPILEASBEGIN
IF @date IS NULLSET @date = dateadd("mm",-3,(SELECT MAX(OrderDATE)
FROM Sales.SalesOrderHeader))SELECT * FROM Sales.SalesOrderHeader h, Sales.SalesOrderDetail dWHERE h.SalesOrderID = d.SalesOrderIDAND h.OrderDate > @date
END
• Consider more frequent statistics gathering for ascending keys
• Use asynchronous statistics update if synchronous update causes undesired delay
Best Practices
ALTER DATABASE [Credit]SET AUTO_UPDATE_STATISTICS_ASYNC ON
• Consider filtered statistics for heterogeneous data , for partitioned tables
• Auto Stats OFF for tables VBHDR, VBDATA, VBMOD(SAP)
Best Practices
• 상황에 맞는 적절한 수동 업데이트 작업– 인덱스별 샘플링 비율관리– 통계 업데이트 주기관리
– 수정빈도 높은 최근 데이터와 filtered statistics 에 대한 별도 관리
Best Practices
행수 통계업데이트 기준
1만~200만 rowmodctr >= 1.0%
200만~500만 rowmodctr >= 0.8%
500만~1천만건 rowmodctr >= 0.5%
1천만건 ~ 변경 rows >= 5만건
• Guidelines – Check table statistics – Only selective fields should be used– Selective fields should take precedence,
Avoid creating unselective index
Creating indexes
• Guidelines – Limit the number of fields used in an index to
as few as possible– Reduce the number of indexes created per
table to as slow as possible– If >=, <=, >, < or between is used, indexes
can be only used up to the column where these are used
Creating indexes
• Guidelines – Check missing indexes (SAP)– covering index, filtered index 활용– 필요 시 적절한 clustered 인덱스로 교체– 운영 DB에서 온라인으로 생성 후 CTS 전송(SAP)– index 사용정보를 확인 후 불필요한 인덱스는 비
활성화(SAP)– 인덱스 힌트를 지양하고 세밀한 통계정보로 인덱
스 사용률 높이기
Creating indexes
공간 관리
• 데이터 보존 정책• 아카이빙• 데이터압축
– 저장 공간 감소, 성능 향상 기대• 압축 백업
– 백업 공간 감소– 백업 및 복원시간 단축
효율적인 대용량 데이터관리
데이터 보존 정책
초고속 저장소 저속 대용량 저장소
재무
회계
생산
영업
물류
3년
3년
1년
1년
18개월
영구보존/제거
비즈니스상 더 이상필요 없는 데이터는
제거
빈도 낮으나, 필요 시사용할 수 있도록유지하는 데이터
고속 대용량 저장소
재무
회계
생산
영업
물류
5년, 10년
가장 빈번히사용되는 데이터
[프로그램 최적화]필요한 데이터만 처리하도록 프로
그램 개선하여 시스템 속도 향상
[데이터 저장소재배치]
자주 사용되는 데이터만 최적의 장소에보관하도록 하여 속도 향상,저장소
비용절감
데이터 생명 주기(Data Life Cycle)
저장소이관
저장소이관
데이터 압축 아카이빙
• 행 압축
데이터 압축
4바이트
1바이트
• 페이지 압축 : 접두사
데이터 압축
• 페이지 압축 : 사전
데이터 압축
• 대상 테이블 선정– Table size 기준 Top 150 (80:20)– 변경 비율 < 5%
(update+delete)/(slect single + select + insert)
• 압축 방식– 페이지 압축 선택
• 반복되는 데이터 패턴이 많음(SAP 특성)• 순차 저장, 조회 위주의 데이터• CPU 유휴자원 준비
데이터 압축 사례
ST04 테이블 크기 상위 150개 추출
• ST02>세부분석메뉴>테이블 호출통계
ST02 - 테이블 변경비율 확인
데이터 압축 결과
데이터 압축 결과
• 50%의 데이터 공간 절감• 데이터 증가속도 둔화
• 대용량 테이블의 압축– 압축 대상 테이블의 별도의 통계 관리
• 압축 작업 – 통계업데이트 작업간 blocking 발생
– 압축 수행 전 DB 복구모델을 Simple이나 Bulk logged 모드로 변경 할 것
– 압축 작업 진행간 모니터링 및 결과 기록 프로그램
데이터 압축 작업을 할 때..
SUMMARY
• 세밀한 통계정보 관리로 똑똑한 옵티마이저 만들자– 자동 통계 업데이트 활성화– 상황에 맞는 적절한 수동 업데이트 작업– 테이블 파티셔닝 활용
• SQL Server의 특성을 활용한 인덱스 관리– 선택도, 적절한 클러스터드 인덱스 사용하도록
변경– 온라인 인덱스 생성– filtered index, covering index
Summary
• SQL Server의 특성을 활용한 공간 관리– 보존기간 내 : 압축, 보존기간 이후 : 아카이빙– 아카이빙 작업에 적절한 인덱스 추가– 데이터 압축시 변경비율(5%이내) + Size 기준으
로 대상선정, 통계관리 작업과 조율– 백업 정책, 압축백업 적용
Summary
감사합니다