DB튜닝 Flashcards

1
Q

데이터베이스 튜닝

A

[리드] DB 성능 최적화
[정의] DB의 불리한 데이터 구조를 제거,재설계 통해 최소의 자원으로 최적의 성능(시간/응답속도)를 얻도록 성능과 가용성을 높이는 작업
[목적] DB 성능 최적화, 시스템 안전성 및 응답속도 개선, 디스크 I/O 최소화, 메모리 공간 최적화, 유지보수 향상
[튜닝 3요소] (개선방향 순)
- DB설계 튜닝 : 모델링 관점 → 테이블분량, 인덱스, 테이블 스페이스 / 반정규화, 분산파일배치
- DBMS 튜닝 : 환경관점 → 버퍼, 캐쉬, Sort Size 크기
- SQL 튜닝 : APP 관점 → 옵티마이저 / Hash, join
[튜닝 3단계] 분석(시스템 성능진단) → 이행(튜닝/분석 단계) → 평가(결과 단계)
<구축/테스트 단계>
- 1단계(설계 튜닝) : 테이블 병합/분할, 식별자 지정, 인덱스 전략, 적절한 데이터타입 선정, 데이터 모델링
- 2단계(DBMS 튜닝) : CPU, Memory, I/O, 네트워크 튜닝, Buffer / Parameter 조정
- 3단계(SQL 튜닝) : SQL 수정(옵티마이저, 실행계획), Hint, 인덱스, 부분처리, 조인 방식/순서 변경

<운영단계> 영향도가 적은 순으로 , 3단계-스키마 아키텍처 고려
- 1단계(SQL 튜닝) : 부분범위처리, SQL구조 변경, Hint / Index / View 사용, Bind 변수 처리
- 2단계(DBMS 튜닝) : DB 파라메터 조정, Partitioning 적용, 옵티마이저 Mode 변경
- 3단계(시스템 튜닝) : H/W Resource 증설/조정, H/W 파라메터 조정, Jumbo Frame 등 N/W 조정
- 4단계(설계 튜닝) : 테이블 분할/통합, 식별자/인덱스 전략, 데이터 모델 변경
</운영단계>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

성능 향상 기법

A

[성능저하 원인]
- SQL측면 : ① 엔티티 간 관계정의 오류 ②모델링 작업시 잘못된 M:M관계 ③인덱스 설정 및 활용 오류 ④조인방식/조인순서 정의 오류
- HW 측면 : ①프로그램에 의한 과도한 CPU사용 ②DBMS 메모리 용량 부족 ③비효율적 디스크 I/O발생 ④NW 충돌 및 과도한 NW 통신량
[성능향상기법]
- SQL기반 : 옵티마이저 기반 질의 최적화(경험기반/의미적 질의최적화), 부분처리 범위 조정, 인덱스 재설정 및 활용, 배치 job 다중처리 개선, 분산환경 병렬쿼리 적용, Hint 통한 속도개선, 조인연산방식(중첩/단일 루프조인, 정렬-합병 조인, 분할-해시 조인), 조인 순서 개선
- H/W기반 : CPU튜닝 통한 최적 용량 확보, 메모리 튜닝 최적화, 디스크 I/O 발생 최소화 튜닝, 네트워크 대역폭 확보 및 튜닝, 작업수행방식 개선, Buffer Pool 최적화, Commit/Check Point
* 충분한HW 용량 확보로 DB 성능 향상 통한 최적 처리속도, 응답 시간 보장, 지속적인 예방 활동 수행으로 CAPEX, OPEX 비용 감소 및 시스템 성능 유지 가능

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

sql튜닝 절차

A

[절차] 인덱스 컬럼 조사 → 인덱스 비교 선택 → 인덱스 효율성 검증 → 드라이빙 테이블 → 조인 유형 선택 → 함수/인라인 뷰 → 인덱스 블록 읽기 → 힌트 사용

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

hint

A

[정의] DB 옵티마이저에게 SQL 실행을 위한 스캐닝 경로, 조인 방법등을 알려주기 위해 SQL 구문에 작성하는 지시문
[사용규칙]
1. SQL문 블록의 첫 키워드(Select, Insert, Delete, Update) 바로 뒤 힌트 주석 사용
2. 단 하나의 주석, 주석 내 다수 힌트 포함 가능
3. 해당 명령문 블록에만 적용, 세션 레벨 매개 변수보다 우선 적용
4. 별칭을 사용하는 경우 힌트에도 별칭을 참조
[유형]
- 최적화 접근 : ALL_ROWS, FISRT_ROWS, CHOOSE, RULE
- 접근 경로 : FULL, ROWID, CLUSTER, HASH, INDEX
- 조인 : ORDERED, STAR, USL_NL(Nested Loop), USE_MERGE(Sorted Merge)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

랜덤액세스

A

[정의] 데이터베이스 성능을 확보하기 위해 rowid 기반 인덱스 참조 후 한 번에 하나의 블록 액세스하는 방식
[유형] (확추정)
1. 확인 랜덤 엑세스 : WHERE 조건의 컬럼이 인덱스에 미존재
2. 추출 랜덤 엑세스 : 인덱스 액세스 후 SELECT 절의 컬럼을 결과로 추출 위해 추가로 테이블 엑세스
3. 정렬 랜덤 엑세스 : ORDER BY, GROUP BY절 컬럼이 인덱스에 존재

How well did you know this?
1
Not at all
2
3
4
5
Perfectly