일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SQL
- SQL 튜닝
- join
- 오버라이딩
- 배열
- java
- 함수
- 반복문
- StringBuffer
- 객체지향
- 인텔리제이 Web 애플리케이션
- SQL튜닝
- 상속
- 자바의정석
- spring 게시판 삭제
- 객체
- 논리 연산자
- 비교 연산자
- 식별자
- 예약어
- SpringSecurity 로그인
- 연산자
- SpringSecurity 로그아웃
- 스프링시큐리티 로그아웃
- @PreAuthorize("isAuthenticated()")
- 오버로딩
- 이클립스 설치
- 산술 연산자
- 친절한 SQL
- 친절한 SQL 튜닝
- Today
- Total
목록First/SQL 튜닝 (9)
gi_dor
DML 성능에 영향을 주는 다른 요소와 튜닝방법들을 모아 따로 설명하자 ! 1️⃣ 기본 DML 튜닝 1 - 1 DML 성능에 미치는 요소 인덱스 무결성 제약 조건절 where 서브쿼리 Redo 로깅 Undo 로깅 Lock 커밋 인덱스와 DML 성능 테이블에 레코드 ( 행 )를 입력하면 인덱스에도 입력을 해야한다 테이블은 Freelist를 통해 입력할 블록을 할당 받지만 인덱스는 정렬된 자료구조 이므로 수직적 탐생을 통해 입력할 블록을 찾아야 한다. Insert, Update, Delete 중 Update의 부담이 제일 크다. ( Update = Delete + Insert ) ▶ Freelist : 테이블마다 데이터 입력이 가능한 (여유 공간 있는) 블록 목록을 관리하는데 이것을 ' Freelist ' ..
1️⃣ 소트 튜닝 소트는 기본적으로 PGA에 Sort Area에서 이루어진다 PGA : DB에 접속하는 유저에게 할당되는 각각의 서버 프로세스가 독자적으로 사용하는 오라클 메모리 영역 개인공간이라고 생각하면 편함. ◽ Sort Area 공간이 다 차면 디스크 Temp 테이블스페이스를 활용 한다. ◽ Sort Area가 찰 때마다 Temp 영역에 저장해 둘 때 이 중간 단계의 집합을 'Sort Run'이라고 함. ◽ Sort Area의 크기가 'Sort Run'에 있는 크기에 비례하여 한번에 읽어들일 수 있다면 추가적인 Disk I/O는 발생하지 않지만, 그보다 크기가 작다면 여러번 액세스해야 하므로 성능이 나빠짐. Sort Area에서 작업을 완료할수 있는지에 따라 소트를 2가지 유형으로 나눈다 ◾ 메모..
😁 서브쿼리 조인 1 - 1 서브쿼리 변환이 필요한 이유 옵티마이저는 비용을 평가하고 실행계획을 생성하기에 앞서 사용자로부터 전달받은 SQL을 최적화에 유리한 형태로 변환하는 작업 쿼리변환부터 진행한다 옵티마이저 엔진은 무거워지고 최적화에 소요되는 시간도 점점 늘어나고 있다 쿼리변환은 옵티마이저가 SQL을 분석해 동일하면서 더 나은 성능이 기대되는 형태로 재작성을 말한다 서브쿼리는 하나의 SQL문 안에 괄호로 묶은 별도의 쿼리 블록을 말한다. DBMS마다 조금씩 서브쿼리를 다르게 분류하는데 하단 그림에있는 오라클은 3가지로 분류한다 select c.고객번호, c.고객명, t.평균거래, t.최소거래, t.최대거래 , (select 고객분류명 from 고객분류 where 고객분류코드 = c.고객분류코드) /..
🛵 HASH JOIN NL조인은 인덱스를 이용한 조인 방식이다 , 인덱스 구성에 따라 성능 차이가 심하다 반면 소트머지 조인과 해시조인은 , 조인 과정에서 인덱스를 이용하지 않기 때문에 ' 대량 데이터 조인할때 NL 조인보다 훨씬 빠르고 , 일정한 성능을 보인다' 소트머지 조인은 항상 양쪽 테이블을 정렬 하는 부담이 있다 해시 조인은 그런 부담이 없다 그렇다고 모든 조인을 해시조인으로 처리할수는 없다 1 - 1 기본 메커니즘 해시조인은 소트머지 조인처럼 2단계로 진행된다 Build 단계 : 작은 쪽 테이블을 읽어 해시 테이블(해시 맵)을 생성 Probe 단계 : 큰 쪽 테이블을 읽어 해시 테이블을 탐색하면서 조인한다 해시 조인은 use_hagh 힌트로 유도하는데 사원 테이블 기준 으로 고객 테이블과 조인..
🍺 소트 머지 조인 인덱스가 없어서 정렬 한 뒤에 조인한다. 단점 : 대량이라 공간을 많이 차지함 조인 컬럼에 인덱스가 없을 때 대량의 데이터 조인이어서 인덱스가 효과적이지 않을 때 옵티마이저는 NL조인 대신 소트머지 조인 이나 다음절에서 해시 조인을 선택한다 ❗ 해시 조인을 사용 할수 없는 상황에서 대량 데이터를 조인하고자 할떄 유용함 1 - 1 SGA vs PGA PGA : 개인 사용자 private , 정렬필터 SGA : 공통 , 공유 사용자 Temp : Temp라는 테이블 스페이스 🔑 PGA 는 다른 프로세스와 공유하지 않는 독립적인 메모리 공간인데 같은 양의 데이터를 읽더라도 SGA 버퍼캐시에서 읽을 때 보다 훨씬 빠르다. - 따로 Lock 걸지는 않음 1 - 2 기본 메커니즘 1 ) 소트 단계..