728x90 반응형 일상다반사41 친절한 SQL튜닝 6장(DML 튜닝) 정리 1. 기본 DML튜닝 DML 성능에 영향을 미치는 요소 1. 인덱스 2. 무결성 제약 3. 조건절 4. 서브쿼리 5. Redo 로깅 6. Undo 로깅 7. Lock 8. 커밋 인덱스는 정렬된 자료구조로 삭제 후 삽입하는 방식으로 처리된다. 데이터 무결성 규칙 4가지 1. 개체 무결성 2. 참조 무결성 3. 도메인 무결성 4. 사용자 정의 무결성 PK, FK 제약은 CHECK, NOT NULL제약보다 성능에 더 큰 영향을 미친다. DML을 수행할 때마다 Redo로그를 생성해야 하므로 Redo 로깅은 DML 성능에 영향을 미친다. DML이 Lock에 의해 블로킹된 경우 DML을 완료할 수 있게 Lock을 푸는 열쇠가 커밋이다. 트랜잭션 저장 과정 1. DML문을 실행하면 Redo 로그버퍼에 변경사항을 기록.. 2024. 11. 13. 친절한 SQL 튜닝 5장 정리(소트 튜닝) 1. 소트 연산에 대한 이해 SQL 수행 중 가공된 데이터 집합이 필요할 경우 오라클은 PGA와 TEMP테이블스페이스를 활용한다. 소트는 기본적으로 PGA에 할당한 SORT AREA에서 이루어진다. SORT AREA아 다 차면 디스크 TEMP 테이블스페이스를 활용한다. 메모리 소트 => 메모리 내에서 완료하는 것 Internal Sort 디스크 소트 => 디스크 공간까지 사용하는 것 External Sort 디스크 소트를 사용하는 순간 I/O가 발생하면서 성능이 나빠지고, 부분범위 처리를 불가능하게 함으로써 OLTP환경에서 애플리케이션 성능을 저하시키는 주요 원인으로 꼽힌다. Sort Group By => 소형 알고리즘을 사용해 그룹별 집계를 수행할 때 사용 ( 메모지 4장을 준비하여, 메모지별로 그룹을.. 2024. 11. 8. 친절한 SQL 튜닝 4장 정리( 조인 튜닝 ) 조인 튜닝 1. NL조인 조인의 기본은 NL조인이다. NL조인은 인덱스를 이용한 조인이다. NL조인은 중첩 루프문과 같은 수행 구조를 사용 일반적으로 NL조인은 OUTER와 INNER 양쪽 테이블 모두 인덱스를 이용한다. OUTER테이블 사이즈가 크지 않다면 인덱스를 이용하지 않을 수 있다. ( TABLE FULL SCAN 한 번에 처리 ) NL조인 순서 1. 1번 테이블 인덱스에서 첫 번째 레코드를 찾는다. 2. ROWID로 1번 테이블 레코드를 찾아간다. 3. 1번 테이블 인덱스에서 읽은 레코드로 2번 테이블 인덱스를 탐색한다. 4. ROWID로 2번 테이블 레코드를 찾는다. 5. 2번 인덱스에서 2번 테이블을 한 건 더 스캔한다. 6. 원하는 결과를 모두 찾으면 스캔 종료 기본적인 조인 프로세싱은 .. 2024. 11. 7. 친절한 SQL 튜닝 3장 정리 테이블 액세스 최소화 SQL튜닝은 랜덤 I/O와의 전쟁이다. 인덱스를 스캔하는 이유는, 검색 조건을 만족하는 소량의 데이터를 인덱스에서 빨리 찾고 ROWID를 얻기 위함 ROWID는 물리적 주소보다 논리적 주소에 가깝다. ROWID는 포인터가 아니다. ROWID는 디스크 상에서 테이블 레코드를 찾아가기 위한 위치 정보를 갖는다. ( 레코드와 물리적으로 연결된 구조는 아니다. ), 버퍼캐시에서 먼저 찾고 없으면 디스크 블록을 읽는다.( 읽을때도 버퍼캐시에 먼저 적재한 후에 읽는다. ) 오라클은 테이블 블록이 수시로 버퍼캐시에서 밀려났다가 다시 캐싱된다. 디스크주소정보(DBA를 )를 이용해서 해시 알고리즘으로 버퍼 블록을 찾는다. I/O성능을 높이려면 버퍼캐시를 활용해야 한다. 디스크주소정보(DBA) -> .. 2024. 11. 5. 이전 1 2 3 4 ··· 11 다음 728x90 반응형