728x90
728x90
SQL 처리 과정 : Parsing -> Optimization -> Row source generation -> Execution : 다 하면 hard parsing
Parsing->execution : soft parsing
block : I/O의 기본 단위, 제일 작은 단위
Sequential Access : 높은 효율 데이터를 순서대로 읽거나 쓰는 방식으로 인덱스 leaf block을 읽는다. Table full scan
Random Access : 낮은 효율, 한 건을 읽기 위해 논리적, 물리적 순서랑 무관하게 한 블럭씩 접근
Redo Log File : 데이터 변경사항을 저장, 복구 시 사용
- 로그 스위치 이벤트로 파일이 순환적으로 교체.
- SQL 튜닝의 목적은 무엇이며, 주요 방법은 어떤 것들이 있는가?
- 목적: 최소의 작업량으로 원하는 결과를 얻는 것.
- 주요 방법: SQL 재작성, 힌트 추가, 인덱스 생성 또는 변경.
- Soft Parsing과 Hard Parsing의 차이는 무엇이며, Hard Parsing이 비효율적인 이유는?
- 차이점: Soft Parsing은 기존 실행 계획을 재사용, Hard Parsing은 새로운 실행 계획 생성.
- Hard Parsing의 비효율성: 높은 비용 소모.
- 인덱스는 SQL 성능에 어떤 영향을 미치며, 설정 시 고려해야 할 주요 사항은?
- 성능 영향: 검색 속도 향상.
- 주요 고려 사항: 자주 사용하는 컬럼, 높은 카디널리티, 결합 인덱스 구성 시 선행 컬럼 설정.
- B-tree 인덱싱을 제일 많이 사용함.
- Clustered Index와 Non-Clustered Index의 차이점은 무엇인가?
- Clustered Index: 테이블 데이터가 인덱스 순서대로 물리적으로 정렬.
- Non-Clustered Index: 데이터와 인덱스가 분리되어 저장.
- Nested Loop Join과 Hash Join의 사용 사례와 특징은 무엇인가?
- Nested Loop Join: 소규모 데이터, OLTP 시스템에 적합.
- Hash Join: 대량 데이터, OLAP 시스템에 적합.
- Access 조건과 Filter 조건의 차이를 설명하시오.
- Access 조건: 데이터 접근 전에 적용되는 조건.
- Filter 조건: 데이터 반환 후 추가로 필터링하는 조건.
- Partitioning의 주요 유형과 각각의 특징은 무엇인가?
- Range Partitioning: 범위 기반.
- List Partitioning: 특정 값 그룹 기반.
- Hash Partitioning: 데이터 분산을 위해 해시 함수 사용.
- Oracle 실행 계획(Explain Plan)이란 무엇이며, 주요 항목은 어떤 것들이 있는가?
- 실행 계획: SQL이 데이터를 조회하는 방식에 대한 계획.
- 주요 항목: Operation(작업유형), E-Rows(예상 행 수), Buffers(I/O 블록 수).
- Oracle Hint의 역할과 사용 시 유의사항은 무엇인가?
- 역할: 옵티마이저의 실행 계획을 조정.
- 유의사항: 실행 환경과 데이터 특성을 고려하여 신중히 사용.
- SQL 튜닝 과정에서 함수 기반 인덱스(Function-Based Index)의 장단점은 무엇인가?
- 장점: 특정 함수나 표현식을 기반으로 검색 속도 향상.
- 단점: 데이터 입력/수정 시 부하 증가.
1. 참/거짓 문제
- (참/거짓) Soft Parsing은 Hard Parsing에 비해 더 많은 리소스를 소모한다.
2. 빈칸 채우기
- SQL 튜닝은 최소의 ________으로 원하는 결과를 얻는 것을 목표로 한다.
- ________ 파티셔닝은 데이터를 특정 값이나 코드에 따라 분류하여 저장한다.
3. 단답형 문제
- B-Tree 인덱스에서 데이터를 검색할 때 가장 중요한 세 가지 탐색 단계는 무엇인가?
- Hash Join이 적합한 SQL 쿼리 유형은 무엇인가?
4. 다지선다형 문제
- 아래 중 Function-Based Index(FBI)의 올바른 사용 사례를 고르시오.
- 데이터 입력/수정이 빈번한 테이블.
- 자주 사용하는 컬럼에 특정 함수를 적용하여 검색 속도를 높이는 경우.
- SELECT 절에 계산식이 포함된 경우.
- 읽기보다는 쓰기가 많은 테이블.
5. 정렬 문제
다음 SQL 처리 과정을 올바른 순서로 정렬하시오.
- Optimization
- Syntax Check
- Execution
- Semantic Check
- Parsing
6. 용어 설명 문제
- 카디널리티(Cardinality)가 무엇인지 간단히 설명하시오.
7. 코드 분석 문제
다음 SQL 쿼리가 효율적으로 인덱스를 사용하기 위한 개선안을 작성하시오.
sql
코드 복사
SELECT * FROM orders WHERE SUBSTR(order_date, 1, 4) = '2023';
8. 비교 문제
- Nested Loop Join과 Hash Join의 차이점을 2가지 이상 기술하시오.
9. 예/아니오 문제
- (예/아니오) Index Organized Table(IOT)은 모든 데이터가 인덱스에 저장되며, 별도의 데이터 테이블이 필요 없다.
10. 사례 문제
다음 조건을 참고하여 적절한 인덱스 설계를 제안하시오.
- 테이블: 고객 정보(customers)
- 주요 검색 조건: 고객 이름(name), 생년(birthyear), 휴대폰 번호(mobile)
아래는 위에서 제공한 문제의 답안입니다.
1. 참/거짓 문제
- (거짓) Soft Parsing은 Hard Parsing에 비해 더 적은 리소스를 소모한다.
2. 빈칸 채우기
- SQL 튜닝은 최소의 작업량으로 원하는 결과를 얻는 것을 목표로 한다.
- List 파티셔닝은 데이터를 특정 값이나 코드에 따라 분류하여 저장한다.
3. 단답형 문제
- B-Tree 인덱스에서 중요한 탐색 단계
- 수직적 탐색 (Root → Branch → Leaf)
- 수평적 탐색 (Leaf 내부)
- 테이블 Random Access
- Hash Join이 적합한 SQL 쿼리 유형
- 대용량 테이블을 조인하거나, OLAP 시스템에서 사용.
4. 다지선다형 문제
- 정답: 2. 자주 사용하는 컬럼에 특정 함수를 적용하여 검색 속도를 높이는 경우.
5. 정렬 문제
- 올바른 순서:
Parsing → Syntax Check → Semantic Check → Optimization → Execution
6. 용어 설명 문제
- 카디널리티(Cardinality)
테이블 내에서 서로 다른 값의 개수를 의미하며, 높은 카디널리티는 인덱스 사용에 적합하다.
7. 코드 분석 문제
- 개선안:
sql
코드 복사
SELECT * FROM orders WHERE order_date LIKE '2023%';
- 이유: SUBSTR(order_date, 1, 4)는 컬럼 가공으로 인해 인덱스를 사용할 수 없으므로 LIKE를 사용해 인덱스 활용 가능하도록 수정.
8. 비교 문제
- Nested Loop Join과 Hash Join의 차이점
- Nested Loop Join은 작은 데이터셋과 OLTP 쿼리에 적합, Hash Join은 대용량 데이터와 OLAP 쿼리에 적합하다.
- Nested Loop Join은 인덱스를 기반으로 동작하며, Hash Join은 메모리에 테이블을 로드하여 동작한다.
9. 예/아니오 문제
- (예) Index Organized Table(IOT)은 모든 데이터가 인덱스에 저장되며, 별도의 데이터 테이블이 필요 없다.
10. 사례 문제
제안된 인덱스 설계:
- 결합 인덱스(Index Combination): birthyear + name + mobile
- 이유:
- 자주 검색되는 조건(birthyear)과 정렬이 필요한 조건(name)을 선행 컬럼으로 구성.
- 효율적인 인덱스 탐색을 위해 자주 사용하는 조건을 우선 설정.
- 이유:
728x90
728x90
'데이터베이스 DB' 카테고리의 다른 글
SQL 실행 계획 분석 실전 (0) | 2024.12.17 |
---|---|
SQL 실행 계획 분석하기 (0) | 2024.12.17 |
인덱스 설정 기준 및 SQL 작성법 (0) | 2024.12.16 |
SQL Indexing은 왜 필요할까? 어떻게 빨라지는 걸까? (0) | 2024.12.16 |
SQL TUNING : Soft Parsing, Hard Parsing (0) | 2024.12.16 |
댓글