[DB] 7장. SQL 옵티마이저
·
Study/친절한 SQL 튜닝
1. 통계정보와 비용계산 원리 선택도와 카디널리티에 이어 통계정보에 구체적으로 어떤 항목들이 있는지 살펴보고, 옵티마이저가 통계정보를 이용해 비용을 계산하는 원리를 간략히 살펴보자.🔎 선택도와 카디널리티⚙️ 선택도(Selectivity)전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율단순 '='조건으로 검색할 때의 선택도만 살펴보면, 컬럼 값 종류 개수( Number of Distinct Values NDV)를 이용해 구한다.선택도 = 1 / NDV⚙️ 카티널리티 (Cardinality)전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수카티널리티 = 총 로우 수 X 선택도 = 총 로우 수 / NDV더보기✨예시로 상품분류 컬럼에 가전, 의류, 식음료, 생활용품의 값이 있을 때, 조건절에 대한 선..
[DB] 6장. DML 튜닝(2)
·
Study/친절한 SQL 튜닝
3. 파티션을 활용한 DML 튜닝 파티션을 이용하면 대량 추가/변경/삭제 작업을 빠르게 처리할 수 있다. 🔎 테이블 파티션파티셔닝(Partitioniong): 테이블 또는 인덱스 데이터를 특정 컬럼(파티션 키) 값에 따라 별도 세그먼트에 나눠서 저장하는 것일반적으로 시계열에 따라 Range방식으로 분할하지만, 그 외 다른 기준(리스트 또는 해시방식)으로 분할할 수 있다.⚙️ 파티션이 필요한 이유 관리적 측면 : 파티션 단위 백업, 추가, 삭제, 변경 → 가용성 향상성능적 측면 : 파티션 단위 조회 및 DML, 경합 또는 부하 분산파티션에는 Range, 해시, 리스트 세 종류가 있다.⚙️ Range 파티션오라클 8버전부터 제공된 가장 기초적인 방식주로 날짜 컬럼을 기준으로 파티셔닝함아래는 주문 테이블을 ..
[DB] 6장. DML 튜닝(1)
·
Study/친절한 SQL 튜닝
1. 기본 DML 튜닝 DML성능에 영향을 주는 요소와 튜닝 방법을 설명해보고, DML성능에 영향을 미치는 요소에 어떤 것들이 있는지 살펴보자.🔎 DML성능에 영향을 미치는 요소인덱스무결성 제약조건절서브쿼리Redo 로깅Undo 로깅Lock커밋🔎 인덱스와 DML 성능테이블에 레코드를 입력하면, 인덱스에도 입력해야 한다.(인덱스에 입력하는 과정이 더 복잡하므로, DML 성능에 미치는 영향도 더 크다.)테이블은 Freelist를 통해 입력할 블록을 할당받지만, 인덱스는 정렬된 자료구조이므로 수직적 탐색을 통해 입력할 블록을 찾아야 한다.(*Freelist :  테이블마다 테이터 입력이 가능한 블록 목록)DELETE할때, 테이블에서 레코드 하나를 삭제하면, 인덱스 레코드를 모두 찾아서 삭제해줘야 한다.UPD..