오라클 데이터베이스 성능 튜닝.

Slides:



Advertisements
Similar presentations
Make a Real DBA 오라클 저장 영역 구조 ㈜ 신한시스템즈 김 종 근김 종 근 김 종 근김 종 근.
Advertisements

오라클 백업과 복구.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
데이터 베이스 설계 및 실습 #1 - 오라클 설치 및 SQL 기본.
연결리스트(linked list).
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
12장 데이터 읽기 일관성과 락.
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
목차 백업과 복원.
14장 질의응답 한빛미디어(주).
Windows Server 장. 사고를 대비한 데이터 백업.
11 테이블 관리와 데이터 딕셔너리 데이터베이스 응용 프로젝트 개발 테이블 구조 변경 데이터 딕셔너리.
3장. 데이터베이스 구축의 전체 과정 미리 실습하기
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
5장 Mysql 데이터베이스 한빛미디어(주).
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
HDFS와 대용량 데이터 처리 콘텐츠서비스연구팀 최완.
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
KHS JDBC Programming 4 KHS
5장 Mysql 데이터베이스 한빛미디어(주).
KIM HEESANG PL/SQL 2 KIM HEESANG
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
04 데이터 타입 데이터 타입의 종류 데이터 타입의 특성 데이터 타입의 결정 전략.
자바 5.0 프로그래밍.
JDBC Lecture 004 By MINIO.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
뇌를 자극하는 Windows Server 2012 R2
USN(Ubiquitous Sensor Network)
Chapter 03. 관계 데이터베이스 설계.
데이터 베이스 DB2 관계형 데이터 모델 권준영.
CHAP 21. 전화, SMS, 주소록.
Canary value 스택 가드(Stack Guard).
문성우 SQL 실습 Part Ⅰ 문성우.
데이터 동적 할당 Collection class.
단축키 기능 1. 단축키 기능 설명 Alt + R 조회 S 저장 I 삽입 A 추가 D 삭제 P 출력 Q 닫기
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
오라클 11g 보안.
14 뷰(View) 뷰의 개념 뷰 관리.
제 23 장 오라클에서 보안 기능.
Chapter 10 데이터 검색1.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
Summary of Pointers and Arrays
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
제 4 장 Record.
maria db JDBC PROGRAMMING 5
CHAP 15. 데이터 스토리지.
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
fastestslowest 실제 질의문에서 사용 타입 추천 인덱스 SELECT list Default
6 객체.
교과서 78쪽 학습 목표 정보 관리의 필요성을 이해할 수 있다. 데이터베이스의 개념과 필요성을 이해할 수 있다.
Presentation transcript:

오라클 데이터베이스 성능 튜닝

테이블 구성시 성능 관련 참고 사항 테이블 설계시 주의사항 설계단계에서 이후 비즈니스의 가변성 등을 예측하고 충분한 분석을 통해 정규화 작업을 수행함 논리 설계를 마치고 물리 설계시에 각 벤더사의 DBMS에 최적화된 물리설계를 통해 성능의 잇점을 최대화 함

테이블 구성시 성능 관련 참고 사항 정규화(Normalization) 정규화란 정규화는 눈리적 데이터 모델을 일관성이 있고 중복을 제거하여 보다 안정성을 갖는 바람직한 자료구조로 개선시켜 나아가는 과정을 말함 정규화의 장점 새로운 요구 사항의 발견과 적용이 절차적, 단계적으로 추가하기에 용이함

테이블 구성시 성능 관련 참고 사항 정규화(Normalization) 정규화의 종류 1차 정규화 – 복구의 속성 값을 갖는 속성을 분리 2차 정규화 – 주식별자에 종속적이지 않은 속성의 분리, 부분 종속(Partial Dependency) 속성을 분리 3차 정규화 – 속성에 종속적인 속성의 분리, 이전 속성(Transitive Dependency) 속성을 분리 보이스-코드 정규화 – 다수의 주식별자 분리 4차 정규화 – 다가 종속(Multi-Valued Dependency) 속성분리 5차 정규화 – 결합 종속(Join Dependency)일 경우는 두개 이상의 N개로 분리

테이블 구성시 성능 관련 참고 사항 물리 설계시의 주의사항 스토리지에 대한 충분한 고려 스토리지 경합에 대한 고려 효과적인 관리, 백업, 복구에 대한 고려

테이블 구성시 성능 관련 참고 사항 데이터 타입 종류 CHAR VARCHAR2 NUMBER LONG LOB DATE TIMESTAMP 등

테이블 구성시 성능 관련 참고 사항 CHAR 타입 고정길이 문자타입의 데이터 타입 4000 byte 문자이외는 공백으로 입력됨 불필요한 저장 공간을 사용할 수 있음 비교시에 공백에 대한 처리를 해야 함

테이블 구성시 성능 관련 참고 사항 VARCHAR2 타입 가변길이 문자티입의 데이터 타입 4000 byte 저장 공간을 절약할 수 있음 DML 등의 데이터 변경 시에 기타 추가 작업에 의한 성능 이슈에 대한 고려 필요

테이블 구성시 성능 관련 참고 사항 LONG 타입 대용량 파일 및 텍스트 저장을 위한 데이터 타입 2GB 하나의 테이블에 하나의 컬럼만 정의 가능 인덱스 생성 불가 특수한 조회 방법을 이용

테이블 구성시 성능 관련 참고 사항 LOB 타입 LONG 타입의 확장된 기능으로 추가된 데이터 타입 4GB

테이블 구성시 성능 관련 참고 사항 Row Migration 현상 현재 데이터가 저장되어 있는 Data Block이 꽉 차게 되면..? 만약 꽉 찬 Data Block에 Update가 발생을 한다면..? 위와 같은 경우에 Row Migration 현상이 발생하게 된다

테이블 구성시 성능 관련 참고 사항 Row Migration 현상 Row Data Row Data Point 정보 Pctfree Pctfree Pctfree Pctfree insert or update update Row Data Block에 저장 공간을 다 사용했을 때 Update로 Row 길이가 늘어나면 블록에 저장할 공간의 부족한 현상이 발생함 길이가 늘어난 Row를 다른 빈 Block에 저장해야 함 빈 Block에 저장하고 이전 공간에 신규 저장한 곳의 위치 정보를 남겨 둠 데이터베이스가 데이터를 검색하기 위해 두 개의 Block을 읽어야 함

테이블 구성시 성능 관련 참고 사항 Row Chaining 현상 Row를 처음 insert 할 경우 Row 데이터가 단일 Block에 들어가지 않는 경우 마치 Chain과 같이 서로 연결된 Data Block에 Row를 저장 함 대개 LONG, LONG RAW 등의 데이터 타입의 열을 포함하는 Row 같이 크기가 큰 Row에 대한 insert시 발생함 Row Chaining의 경우 불가피한 상황임 데이터베이스가 Row 데이터를 읽을 때 두 개 이상의 Block 접근해야 하기 때문에 I/O 성능의 감소를 초래함

테이블 구성시 성능 관련 참고 사항 PCTFREE Block에 데이터를 insert 시 pctfree에 정해진 %만큼의 여유공간은 쓰지 않겠다를 의미함 변경 데이터를 위해 Block의 pctfree로 정해진 %의 양 만큼 확보함을 의미 Row Migration 현상을 줄일 수 있음 데이터의 수정이 빈번한 경우 10 정도로 수정이 거의 없을 경우 0로 설정해서 사용함

테이블 구성시 성능 관련 참고 사항 PCTUSED Block의 재사용을 위해 기준으로 정해둔 Block 사용율 %를 의미함 최초 Block이 Free 상태에서 사용이 됨. PCTFREE를 제외한 부분이 다 사용이 되고 난 후 Block의 상태는 Used로 변경되고 상태가 Used Block에는 데이터의 삽입이 불가함 상태가 다시 Free로 변경되어야 Insert가 가능한데 이때 Block의 사용율이 PCTUSED 이하로 떨어져야 Free 상태로 변경됨

테이블 구성시 성능 관련 참고 사항 PCTUSED Row Caining과 Row Migration 현상을 줄일 수 있음 삭제가 거의 발생하지 않을 경우에는 90정도로 큰 값을 설정하고 수정작업이 자주 발생하면서 Row Size가 증가할 경우에는 40정도로 낮은 값을 설정해도 됨 적정하지 않은 값을 설정하게 되면 Storage를 낭비하게 됨

테이블 구성시 성능 관련 참고 사항 ASSM(Automatic Segment Space Management) FS1 FS2 PCTFREE insert / update delete Local Management 방식으로 관리되는 Tablespace에 Segment에 사용 가능 PCTUSED, FREELIST, FREELIST GROUP 등의 옵션이 무시됨 Segment에 대해서 오라클 DB 서버가 알아서 자동으로 관리하여 줌

테이블 구성시 성능 관련 참고 사항 ASSM(Automatic Segment Space Management) Row Caining과 Row Migration 현상을 줄일 수 있음 삭제가 거의 발생하지 않을 경우에는 90정도로 큰 값을 설정하고 수정작업이 자주 발생하면서 Row Size가 증가할 경우에는 40정도로 낮은 값을 설정해도 됨 적정하지 않은 값을 설정하게 되면 Storage를 낭비하게 됨

테이블 구성시 성능 관련 참고 사항 테이블 Reorgnization Row Caining과 Row Migration 현상이 심하면 SQL 성능에 영향을 미침 테이블에 Fragmentation이 많을 경우 SQL 성능에 영향을 미침 빈번한 update, delete가 많은 테이블은 Row Chaining과 Row Migration 현상이 많이 발결될 확률이 높으며 테이블의 Fragmentation이 발생할 확률이 높음 위 사항들에 대해서 해결을 하기 위한 테이블을 재구성하는 작업을 Reorgnization 작업이라고 함

테이블 구성시 성능 관련 참고 사항 테이블 Reorgnization exp 툴로 테이블을 백업한 후 DROP하고 다시 테이블을 생성한 후 imp 툴로 백업 데이터를 넣어줌 CTAS(Create Table ~ AS ~)로 테이블 재구성 ALTER TABLE ~ SHRINK SPACE COMPACT; 문장을 실행 Row Migration, Row Chaining 현상이 발생한 Row를 찾아 Delete 후 insert 해 줌

테이블 구성시 성능 관련 참고 사항 Extent 동적 할당 Extent 공간에 데이터가 저장되다가 공간이 부족하여 새로운 Extent를 늘리는 현상을 말함 동적 할당 작업이 발생하는 순간 할당 작업으로 평상시 보다 성능이 약간 떨어질 수 있음 ALTER TABLE ~ ALLOCATE EXTENT; 문장을 사용하여 Extent를 미리 할당하여 성능 저하 현상 방지

테이블 구성시 성능 관련 참고 사항 Index 설계 시 주의 사항 테이블에 대한 Access 패턴에 대해 가능한 정확한 분석이 필요함 데이터의 선택도, 분포도가 좋은 컬럼이 대상일수록 효과가 좋음 Index도 저장 공간을 사용하기 때문에 이에 대한 고려가 있어야 함

테이블 구성시 성능 관련 참고 사항 Index의 종류 B*Tree Index Reverse Index Bitmap Index Index-Organized Table Function-Based Index

테이블 구성시 성능 관련 참고 사항 … B*Tree Index B*Tree Index Index : TAB_PK SELECT * FROM TAB WHERE COL1 = ‘caa’ Root Block(407323FC) lmc(407323404) ddd(407323405) ggg(407323406) ① Root Block Search ② Branch Block Search Branch Block(40732404) lmc(407323407) bbb(407323408) ccc(407323409) Branch Block(40732405) lmc(40732340A) eee(40732340B) fff(40732340C) Branch Block(40732406) lmc(40732340D) hhh(40732340E) iii(40732340F) ③ Leaf Block Search TAB1 Leaf Block(40732407) Null 4073248 abb(rowid) bab(rowid) Leaf Block(40732408) 40732407 40732409 bbc(rowid) caa(rowid) Leaf Block(40732409) 40732408 4073240A dde(407323408) ecd(407323409) … ④ Rowid를 통한 Table Access

테이블 구성시 성능 관련 참고 사항 Reverse Index B*Tree Index와 같은 방식이지만 실제 인덱스의 Leaf 노드에 저장되는 Value가 역순으로 바뀌어서 저장됨 Value를 역순으로 뒤집는 작업을 통해 인덱스의 Leaf 노드에 저장되는 데이터가 분산되는 효과가 있음 인덱스의 정렬순서와 일치하는 순서로 insert나 update 가 자주 발생할 경우 Block에 대한 경합이 발생하게 되나 Reverse를 사용할 경우 순차적인 insert나 update라도 인덱스의 여러 Leaf 노드에 분산이 됨

테이블 구성시 성능 관련 참고 사항 Reverse Index Leaf 노드의 Value가 역순으로 바뀌어서 정렬되어 저장되기 때문에 Range Scan을 사용할 수 없음

테이블 구성시 성능 관련 참고 사항 Bitmap Index

테이블 구성시 성능 관련 참고 사항 Bitmap Index 테이블에 Row가 많으나 인덱스 대상 컬럼의 Cardinality 가 낮을 경우 매우 유용함 (예로, 색상, 성별, 시(City), 나이, 직업, 상태 등등) 위 상황에서 특히나 SQL문의 Where 절에 OR 조건에 대한 수행에 매우 유용함 DML(update, delelte 등)문이 빈번하지 않은 경우에 유리함

테이블 구성시 성능 관련 참고 사항 Decending Index 일반적인 인덱스의 경우 Asc 옵션이 default 임 B*Tree 인덱스의 경우 Asc 옵션으로 기본 생성이 됨 내림차순의 데이터 조회가 빈번한 경우, 특히 최근 날짜에 대한 순으로 조회가 기본으로 여겨지는 SQL 문장에서 유용함 기본 구조는 B*Tree 인덱스의 구조와 동일하며 인덱스 대상 컬럼의 값을 기준으로 Desc 형태로 정렬된 구조임

테이블 구성시 성능 관련 참고 사항 Function-Based Index Leaf 노드의 저장되는 컬럼의 값이 함수가 적용이 되어 나온 값을 기준으로 함 오라클 8i 이후 버전부터 사용 가능함 B*Tree Index의 한계를 계선하기 위해서 발생함

테이블 구성시 성능 관련 참고 사항 Index-Organization Index(IOT) 인덱스와 테이블의 일체형 구조 반드시 Primary Key가 존재해야 함 인덱스와 테이블의 일체화된 구조로 저장 공간의 사용이 절약됨 데이터에 대한 접근이 기존의 경우 인덱스를 통해서 테이블에 접근하지만 IOT의 경우 한번의 접근으로 인덱스와 테이블에 동시 접근이 가능함 하지만 하나의 Leaf Node에 저장되는 Index entry 개수가 작아짐

Index Organization Index 테이블 구성시 성능 관련 참고 사항 Case별 Index 사용 Case Index type 일반적인 테이블 정보에 대한 검색시 사용 B*Tree Index 대용량 데이터베이스 환경에서 나쁜 분포도에 대한 컬럼 검색시 사용된다 Bitmap Index 테이블의 인덱스 검색에 대해 삭제가 빈번하게 발생할 때 사용된다 Reverse Index 최신 행 정보를 우선시 조회할 때 사용된다 Descending Index 검색조건에서 계산 공식을 사용하는 경우 결과치를 인덱스로 생성할 수 있다 Function-Based Index Primary Key를 이용하여 Text 컬럼의 정보를 검색할 때 사용된다 Index Organization Index