본문 바로가기

전체 글

(33)
[개념정리] 3-01 데이터 분석 개요 데이터 분석 기법 이해 DW or DM이나, Legacy(기존 운영시스템), 스테이징영역(임시영역?), ODS(Operational Data Store) 에서 데이터 get (되도록 클린징 영역인 ODS에서 데이터 전처리해서 활용하는 것이 이상적) 시각화는 대용량 데이터 분석, 탐색적 분석시 필수로 복잡한 분석보다도 더 효율적이고, SNA(사회연결망 분석)에 자주 활용 공간분석(GIS)은 공간적 차원과 관련 속성들을 시각화하며, 지도위에 속성들을 크기, 모양, 선굵기 등으로 구분 탐색적 자료분석 특이한 점, 의미있는 사실 도출, 분석의 최종 목적을 달성해가는 과정. 데이터 이해(변수 분포, 특성파악), 변수생성, 변수선택에 활용. 통계분석 통계 : 현상을 일정한 체계에 따라 숫자, 표, 그림 형태로 표현..
[개념_퀴즈] 1-2 데이터 모델과 SQL 괄호 빈칸으로 만들어 풀어볼 것 정규화 제1 정규형 : 모든 속성은 반드시 ( 하나의 ) 값을 가져야 한다. 중복속성 분리, 로우 단위(전화번호 속성의 한 행에 여러 번호), 컬럼 단위(같은 의미의 컬럼이 한 테이블에 여러개) 중복도 1차 정규화의 대상. 제2 정규형 : 엔터티의 일반속성은 ( 주식별자 ) 전체에 ( 종속적 ) 이어야 한다. 함수 종속성은 데이터들이 어떤 기준값에 의해 종속되는 현상. 기준값을 ( 결정자 )라 하고 종속되는 값을 ( 종속자 )라 한다. 식별자 전체가 아닌 일부에만 종속적일 때 ( 부분종속 )라 한다. 제3 정규형 : 엔터티의 ( 일반속성 ) 간에는 서로 종속적이지 않는다. 반정규화는 성능을 위해 ( 데이터 중복 )을 허용. 조회 성능의 향상 대신 DML 성능이 저하 될 수..
[개념_퀴즈] 1-1 데이터 모델링의 이해 SQL 전문가 가이드 1과목 1장 정리 P.18 데이터 모델링 유의점 3가지 ( )( )( ) ( ) 을 유의해서 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다. 사소한 업무변화에 데이터 모델을 변경하지 않도록, 데이터 정의를 사용 프로세스와 분리함으로써 프로세스의 작은 변화가 데이터베이스에 중대 변화를 일으키지 않도록 ( )을 유의한다. 다른 데이터와 모순될 수 있다는 가능성을 배제한 체 데이터를 수정할 경우 연관된 데이터 사이에 ( )이 발생한다. 데이터 간 상호 연관 관계에 대한 명확한 정의는 이러한 위험을 사전에 예방할 수 있게 한다. 데이터 모델링의 3단계 진행 추상화 수준에 따라 ( )( )( )로 정리 ( )은 추상화 수준이 높고 업무 중심적, 포괄적 수준의 모델링. 엔터티 중심..
[개념 정리] 조인 튜닝 - 서브 쿼리 조인 쿼리 변환 옵티마이저는 SQL을 최적화에 유리한 형태로 변환, SQL을 의미적으로는 동일 하면서도 더 나은 성능이 기대되는 형태로 재작성 쿼리 블록 단위로(select 절 단위로) 최적화 수행 - 메인쿼리와 서브쿼리를 각각 최적화 하는 형식 -> 서브커리를 독립적으로 최적화 하는 작업이 전체 쿼리 실행에는 부조화 일 수도. 서브쿼리 조인 필터 오퍼레이션(중첩 서브쿼리-exists 해당) NL조인과 동일 처리 루틴(NL 처럼 부분 범위 처리도 가능) NL조인과 차이 메인쿼리 결과 집합이 서브쿼리쪽 집합 수준으로 확장되는 것을 방지하도록, 메인쿼리의 row가 서브쿼리의 한 row 와 조인에 성공하는 순간 진행 멈추고, 메인쿼리 다음 row 계속 처리. (Exists조건절일 때만 이겠지?) 캐싱 기능 : 쿼리..
[개념정리] 조인튜닝 - 소트머지조인, 해시 조인 소트머지조인과 해시조인은 PGA (process/program/private global area - 프로세스에 종속적인 고유 데이터를 저장하는 용도)를 사용해 SGA 버퍼캐시에서 데이터를 읽을 때 보다 훨씬 빠르게 대량의 데이터 조인을 처리 할 수 있다. SGA 에 캐싱된 데이터는 여러 프로세스가 공유 할 수 있지만, 동시 엑세스가 안된다. 프로세스간 엑세스를 래치(lock)로 직렬화 하고, 나아가 블록 읽을 때 버퍼 lock이 실행 되기 때문에 PGA에 비해 느릴 수 밖에 없다. 소트 머지 조인 : 조인 컬럼에 인덱스가 없거나 대량 데이터 조인이여서 인덱스가 효과적이지 않거나 NL은 대량 데이터 조인 시 성능이 매우 느림 - 조인 과정에서 액세스 하는 모든 블록을 랜덤 액세스 방식으로 '건건이' DB..
[개념정리] 조인 튜닝 - NL 조인 인덱스를 이용한 조인으로 인덱스 튜닝 원리 적용. Outer, Inner 테이블 모두 인덱스 사용(Outer 테이블크기가 작다면 Table Full Scan 이용할 수도), Inner 테이블은 인덱스 사용(인덱스 사용 안할 경우Outer 결과집합 건수만큼 Table Full Scan하며 조인 하기 때문) (옵티마이저 힌트 - use_nl(테이블 명 or alias)) Nl 조인은 그 수행 과정에 있어, 중첩 루프 처럼 Outer 테이블의 한 레코드씩 순차적으로 진행한다. NL 조인 특징 랜덤 액세스 방식 - 레코드 하나를 읽기 위해 블록 전체 Read (대량 데이터 조인시 NL조인 불리한 이유) 한 레코드씩 순차 진행 - 부분범위 처리가 가능한 상황에서 빠른 응답 인덱스 구성 전략 중요 - 조인 컬럼 인..
[개념정리] 인덱스 스캔 효율화 인덱스 선행컬럼이 조건절에 없거나, '='조건이 아닐 경우 스캔량이 비효율 적으로 많아진다. 인덱스 스캔 효율성 측정 SQL 트레이스에 인덱스 스캔과정에서 읽은 블록(cr 이 블록 개수 인데, 인덱스 리프 블록에는 평균 500개의 레코드가 담기므로, 읽은 블록 수 * 500 = 읽은 레코드 수) 수에 비해 얻은 레코드 수가 현저히 적다면 비효율 정도를 가늠 할 수 있다. 액세스 조건 / 필터 조건 인덱스 스캔 단계에 처리하는 조건절은 액세스 조건 / 필터 조건으로 나뉨 인덱스 액세스 조건 : 인덱스 스캔 범위를 결정하는 조건 (스캔 시작점을 결정, 리프블록 스캔 중 어디서 멈출지를 결정) 인덱스 필터 조건 : 테이블로 액세스 할 지를 결정하는 조건(p.183 c4가 테이블 액세스..? 여기서 테이블 액세..
[개념정리] 인덱스 인덱스 RowId에 대한 오해 인덱스를 통한 RowId로 테이블 액세스는 고비용연산 이다. -> Index Range Scan이 Table Full Scan보다 오래 걸릴 수 있다. RowId가 메인 메모리 DB 처럼 물리적으로 데이터와 바로 연결된 포인터가 아니라, 디스크 상에서 테이블 레코드를 찾아가기 위한 위치정보를 담는 논리적 주소이기 때문. 포인터의 역할을 할 수 없는 이유는? 테이블 블록이 LRU에 의해 캐싱되었다, 밀려났다 다시 캐싱되기를 반복, 그때마다 다른 공간에 캐싱되므로, 인덱스에서 포인터로 연결 할 수 없다. 읽어야 할 데이터가 일정량을 넘는 순간, 테이블 전체를 스캔 하는 것보다 오히려 느려진다.(인덱스 손익 분기점) Table Full Scan은 추출 건수와 상관없이 조회 성능이..