728x90 반응형 SQL11 [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. [SQLP] Redo 오라클은 데이터파일과 컨트롤 파일에 가해지는 모든 변경사항을 하나의 Redo 로그 엔트리로서 Redo 로그에 기록(데이터파일에 대한 변경은 캐시된 블록 버퍼를 통해 이루어짐) - Online Redo 로그 : Redo 로그 버퍼에 버퍼링된 로그 엔트리를 기록하는 파일이며, 최소 두 개 이상의 파일로 구성됨. 현재 사용 중인 Redo 로그 파일이 꽉 차면 다음 Redo 로그 파일로 로그 스위칭이 발생. 계속 Redo 로그를 써 나가다가 모든 Redo 로그 파일이 꽉 차면 다시 첫 번째 Redo 로그 파일로부터 재사용하는 라운드 로빈 방식 사용 - Offline Redo(Archived Redo) 로그 : Online Redo 로그가 재사용되기 전에 다른 위치로 백업해 둔 파일 Redo 로그의 3가지 목적 .. 2024. 1. 15. 자바 용어 학습(2) - 데이터베이스(DataBase) 안녕하세요, 해모해모입니다. 이번 포스팅은 데이터베이스에 대한 내용을 학습하려고 합니다. 데이터베이스에 대한 기본 개념과 관계형 데이터베이스(RDB), SQL(쿼리), NoSQL에 대해 설명해보고자 합니다. 데이터베이스(DataBase)란? 여러 사람이 공유하여 사용할 목적으로 관리하는 데이터의 집합입니다. ※ 데이터베이스 관리 시스템(DBMS) : DBMS는 데이터베이슬르 관리하기 위한 시스템의 이름입니다. 흔히 알고 있는 Oracle(오라클), MySQL, DB2 등을 얘기합니다. 위 그림에서 볼 수 있듯이 클라이언트는 SQL을 이용하여 요청을 하고, 데이터베이스에서 데이터를 넘겨주면 클라이언트는 응답을 받게 됩니다. DBMS는 이를 가능하게 해 주는 중요한 시스템입니다. 관계형 데이터베이스(RDB).. 2023. 8. 28. DB2 SQL 에러 코드 정리(SQLCODE) 안녕하세요, 해모해모입니다. 저는 평소 업무에서 DB2를 사용하고 있는데요. Run할 때 한번에 잘 되면 좋은데 에러가 많이 나더라구요. 그 중에 제일 많이 보였던게 콘솔에 찍히는 SQLCODE였습니다. 그래서 SQL 에러코드 숫자 별 어떤 의미인지 정리해 놓고 업무에 참고하는데, 공유하면 좋을 것 같아서 공유드립니다. SQLCODE 설명 -100 FETCH, UPDATE 또는 DELETE에 대한 행이 없거나 쿼리 결과가 빈 테이블입니다. -101 명령문이 너무 길거나 너무 복잡합니다. -102 string(으)로 시작하는 문자열 상수가 너무 깁니다. -103 숫자 리터럴 literal이(가) 유효하지 않습니다. -104 illegal SYMBOL “token”, 문법에 맞지 않는 구문입니다. -105 .. 2023. 8. 24. 이전 1 2 다음 728x90 반응형