본문 바로가기
728x90
반응형

쿼리튜닝7

[SQL튜닝] 조인 조건이 없는 조인 [SQL튜닝] 조인 조건이 없는 조인 주요내용 CARTESIAN PRODUCT의 개념 자주 사용하는 방법 CARTESIAN PRODUCT 적용 예제 학습목표 조인 조건이 없는 SQL 문장의 조인에 대한 이해를 바탕으로 비효율적으로 수행되는 SQL문장을 진단할 수 있다. 조인 조건이 없는 SQL문장의 조인을 활용하여 SQL문장을 성능목표에 부합하도록 개선할 수 있다. 조인 조건이 없는 SQL문장의 조인의 활용을 통해 개선된 SQL문장이 성능목표에 부합하는지 테스트할 수 있다. CARTESIAN PRODUCT의 개념 Cartesian Product가 발생하는 경우 WHERE절이 없는 조인 수행 조인을 위한 조건 없이 조인 수행 '데이터 복제'라는 개념을 위해서 사용하지만, 잘못 사용하게 되면 .. 2024. 3. 25.
[SQL튜닝] NESTED LOOPS JOIN [SQL튜닝] NESTED LOOPS JOIN 주요내용 NESTED LOOPS JOIN NESTED LOOPS JOIN의 수행 절차 NESTED LOOPS JOIN의 장단점 조인 순서 제어 방법 연결고리에 대한 인덱스 학습목표 NESTED LOOPS 조인에 대한 이해를 바탕으로 비효율적으로 수행되는 SQL문장을 진단할 수 있다. NESTED LOOPS 조인을 활용하여 SQL문장을 성능목표에 부합하도록 개선할 수 있다. NESTED LOOPS 조인 활용을 통해 개선된 SQL 문장이 성능목표에 부합하는지 테스트할 수 있다. NESTED LOOPS JOIN 옵티마이저가 Driving Table을 결정함(Outer Table) Driving Table이 아닌 테이블은 Driven Table로 지정함 -> Inn.. 2024. 3. 19.
[SQL튜닝] 인덱스 활용이 불가능한 경우 [SQL튜닝] 인덱스 활용이 불가능한 경우 주요내용 인덱스를 사용하지 말아야 하는 경우 인덱스 사용이 불가능한 경우 옵티마이저에 의한 선택 절차 학습목표 인덱스 사용이 불가능한 경우에 대한 이해를 바탕으로 비효율적으로 수행되는 SQL 문장을 진단할 수 있다. 인덱스 사용이 불가능한 경우, 효율적인 SQL 문장으로 개선할 수 있다. 인덱스 사용이 불가능한 경우, 개선한 SQL 문장이 성능목표에 부합하는지 테스트할 수 있다. 인덱스를 사용하지 말아야 하는 경우 인덱스 스캔을 하면 무조건 빠른가? => 조건에 의한 처리범위가 넓어짐으로 인해 분포도가 나빠지는 경우가 있는데, 이 경우 인덱스 스캔을 하는 것 보다는 FULL TABLE SCAN을 하는 것이 바람직함 FULL TABLE SCAN 시엔 한 번의 I/.. 2024. 3. 13.
[SQL튜닝] 결합인덱스 [SQL튜닝] 결합인덱스 주요내용 인덱스 머지 VS 결합인덱스 결합인덱스의 구성 결합인덱스 사용 방법 결합인덱스 컬럼에 대한 '='의 의미 학습목표 결합인덱스에 대한 이해를 바탕으로 비효율적으로 수행되는 SQL 문장을 진단할 수 있다. 결합인덱스를 활용하여 SQL 문장을 성능목표에 부합하도록 개선할 수 있다. 결합인덱스 활용을 통해 개선된 SQL 문장이 성능목표에 부합하는지 테스트할 수 있다. 인덱스 머지 VS 결합인덱스 인덱스 머지 : 단 하나의 컬럼으로 구성된 인덱스가 하나의 테이블에 두 개 이상 있었을 때 그 인덱스를 동시에 사용해 돌아가는 현상을 가리킨다.(비효율적) 결합인덱스 : 두 컬럼을 모두 결합해서 하나의 인덱스를 구성하기 때문에 프로세스가 간결하다. 인덱스 머지에 따른 비효.. 2024. 3. 12.
[SQL튜닝] 인덱스 [SQL튜닝] 인덱스 주요내용 인덱스의 필요성 B*Tree 구조 인덱스 선정 절차 인덱스 생성 및 변경 시 고려할 사항 인덱스 스캔의 원리 인덱스 사용 학습목표 인덱스에 대한 이해를 바탕으로 비효율적으로 수행되는 SQL 문장을 진단할 수 있다. 인덱스를 활용하여 SQL 문장을 성능목표에 부합하도록 개선할 수 있다. 인덱스 활용을 통해 개선된 SQL 문장이 성능목표에 부합하는지 테스트할 수 있다. 인덱스의 필요성 사용자가 인덱스를 사용하는 이유 : 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기 위해 인덱스를 생성하여 사용함 모든 SQL이 인덱스를 사용해야 하는가? => 일반적으로, 인덱스는 테이블의 전체 데이터 중에서 10~15% 이하의 데이터를 처리하는 경우에 효율적이며, 그 이상의 데이터를 처리할 .. 2024. 3. 11.
[SQL튜닝] 옵티마이저 [SQL튜닝] 옵티마이저 주요내용 옵티마이저의 개념 옵티마이저의 종류 옵티마이저의 레벨별 설정 RBO와 CBO의 실행계획 비교 학습목표 옵티마이저 종류에 따라 달라지는 데이터베이스 성능을 모니터링할 수 있다. CBO, RBO의 실행계획 확인을 통해 SQL 문장에 적합한 옵티마이저를 선택할 수 있다. 옵티마이저의 개념 옵티마이저 : 사용자가 실행한 SQL을 해석하고, 데이터 추출을 위한 실행계획을 수립하는 프로세스 옵티마이저의 종류 RBO(Rule Based Optimizer) : 초창기 버전부터 제공함 기본적으로 15개의 순위가 매겨진 규칙이 있음 -> 이를 기초로 해서 실행계획을 수립함 SQL에 대한 실행계획이 하나 이상일 경우, 순위가 높은 규칙을 이용하게 됨 수립될 실행계획이 예측 가능하기 때문에 .. 2024. 3. 7.
[SQL튜닝] 실행계획 [SQL튜닝] 실행계획 주요내용 실행계획의 정의 실행계획 확인 방법 실행계획 분석 학습목표 SQL 문장의 실행계획을 통해 데이터베이스 성능을 모니터링할 수 있다. 실행계획을 통해 비효율적으로 수행되는 SQL문장의 개선항목을 도출할 수 있다. 실행계획의 정의 실행계획 : 사용자가 SQL을 실행하여 데이터를 추출하려고 할 때, 옵티마이저가 수립하는 작업절차SELECT A.ENAME, A.DEPTNO, B.DNAME FROM EMP A, DEPT B WHERE A.DEPTNO = B.DEPTNO; OPTIMIZER : SQL해석 > 실행계획 수립 > 실행 실행계획 확인 방법 1) EXPLAIN PLAN SQL에 대한 실행계획만을 확인할 수 있음 명령을 사용할 때 데이터를 처리하지 않음EXPLAIN PLAN S.. 2024. 3. 6.
728x90
반응형