728x90
반응형

1. System Global Area 

 

Database Budder Cache : Disk I/O의 영향도를 줄이기 위해 Data File의 Data Block을 메모리에 가져다 놓는다.

Shared Pool : SQL 및 SQL 실행계획을 공유해서 같은 SQL의 Parsing은 권한 확인만 수행 하도록 만들어서 실행 속도를 높이도록 만든다. (Data Dictionary Cache를 활용해서 실행계획을 만들고 저장해서 공유한다.)

Redo Log Budder : 데이터 변경사항 (DML발샐시)정보를 가지며 Redo log file에 Write되기 이전에 Memory에 먼저 Write되는 영역 

Large Pool : Parallel Query 메시징 or 대용량의 메모리 할당이 필요한 경우 사용된다.

Java Pool : Java Object에 대한 메모리 영역 

Stream Pool : Data 복제 등을 위한 Stream 사용 영역 

 

2. Program Global Area

SQL Work Area : 정렬에 관련된 작업 Sort by, Group by 같은 정렬이 필요할 경우 or Hash join시 디스크 I/O를 감소 

Private SQL Area : SQL Runtime Memory Structure로서 Cursor & Data Fetch 및 SQL 바인드 변수 

 

 

 

 

 

반응형
728x90
반응형

1.프로세스 종류 

 

User Process : 우리가 SQL을 작성하기 위해서 Orange,Sqldeveloper 툴로 연결하는 프로세스를 말한다.

 

Orace Server Process : User Process가 Listener에 접속을 하고 이때 접속에 성공하면 Oracle Server Process가

하나 생성된다. 쉽게 생각해서 User Process와 Oracle Server Process는 1:1 관계로 생성된다.

 

Oracle Backgound Process : SMON,PMON,DBWR,CKPT,RECO,LGWR 등 매우 많은 프로세스가 존재한다.

 

2. 메모리 종류 

 

PGA (Program Global Area) : User Process의 연결로 생성된 Server Process에서 사용되는 Non Shared Memoey 

SGA (System Global Area) : 모든 Server Process가 접근할 수 있는 Shared Memory 

 

3. 데이터베이스 파일 

 

Datafile : 오라클 DB를 구성하는 주요 파일로서 주로 사용자 데이터가 저장된다.

Redo Log File : DML과 같은 데이터의 변경사항을 실시간 기록한다.

Control File : 오라클 Structure 주요 변경사항을 기록한다.

 

실행순서 및 동작 알아보기 

 

User Process : 집 PC에서 DB접속을 한다. 여러가지 DB 툴이나 애플리케이션 서버의 접속도 User Process를 생성한다.

Listener : 비밀번호등 여러 권한을 체크한다.

Server Process : 2번에서 이상이 없었다면 Server Process가 하나 만들어진다.(User Process와 Server Process는 1:1)

User Process : 사용자가 SELECT SQL을 만들어서 질의한다.

Server Process : Server Process는 우선 SGA에서 해당 SQL이 있는지 확인하고 있다면 실행계획을 다시 만들지 않고 바로 사용하며 Buffer Cache에 조회하려는 Data Block이 있다면 Data file에 접근 하지않고 메모리에서 결과를 바로 return 한다.

 

참고 : https://debaeloper.tistory.com/47?category=1019750

반응형

'IT > DB' 카테고리의 다른 글

[ORACLE] SGA와 PGA  (0) 2022.09.21
[DB] 문자열 타입 및 SQL문 예시 및 연습  (0) 2022.01.13
[DB]데이터타입과 키 타입  (0) 2022.01.07
데이터베이스의 기본 개념  (0) 2022.01.03
[SQL] SUBQUERY,NESTED SUBQUERY  (0) 2021.11.30
728x90
반응형

 

SELECT : 테이블의 데이터를 조회할때 사용하는 구문

 

* : 모든 컬럼들의 값을 보여달라는 뜻 ( 그 이외에 것들을 입력하면 그것들만 입력 가능)

 

FROM : ~로 부터 어느 테이블부터 조회할지 (FROM 뒤에 나오는 건 해당 테이블 조회 

 

WHERE : 조건문 조회할때

 

맨 뒤에는 ; 세미콜론을 꼭 붙힘 

 

LIKE 문 : LIKE문 안의 내용을 조회 할때 

% : % 사이의 공백 

 

같지 않음 : !=,<>

이 중에 있는 ~ (IN)

한 글자를 나타내는 _ 

 

DATE 데이터 타입 관련 예시 

 

반응형

'IT > DB' 카테고리의 다른 글

[ORACLE] SGA와 PGA  (0) 2022.09.21
[Oracle] 오라클 아키텍처 구성요소 3대 필수 항목  (0) 2022.09.21
[DB]데이터타입과 키 타입  (0) 2022.01.07
데이터베이스의 기본 개념  (0) 2022.01.03
[SQL] SUBQUERY,NESTED SUBQUERY  (0) 2021.11.30
728x90
반응형

데이터타입 종류 

 

정수(integer) - INT 

 

실수형데이터타입 - DOUBLE 소수점까지 표현가능 

 

문자열 - TEXT  

 

member table의 식별키 - id 

 

NN - NOT NULL(널이 아니다)

 

NOT NULL - 적용 값에는 반드시 어떤 값이 들어가야 한다.

 

NULL - 값이 존재하지 않는 상태  

 

NULL은 값이 없다는 의미  

 

Primary key - 테이블에서 하나의 row를 고유하게 식별할 수 있도록 해주는 column

 

Primary key는 반드시 NOT NULL 

 

1.Natural Key 

 

실제로 어떤 개체가 갖고 있는 속성을 나타내는 컬럼이 Primary Key가 됐을 때 이를 Natural Key라고 한다.

사람은 주민번호 책은 ISBN으로 

 

2.Surrogate Key 

 

설정했던 id 컬럼같은 Primary Key를 의미 어떤 회원의 속성을 직접적으로 나타내는 컬럼은 아닙니다.

제가 Primary key로 사용하기 위해 인위적으로 생성한 컬럼 입니다. 어떤 개체의 실제 속성은 아니지만

Primary key로 쓰기 위해 추가한 컬럼을 Surrogate key라고 합니다. 

 

보통은 Surrogate Key를 많이 쓴다. 

 

 

반응형
728x90
반응형

 

데이터베이스 :데이터의 집합소

테이블 : 표 형식으로 저장된 데이터의 집합

 

 

 

row : 개체 하나를 나타내는 단위,행,위의 테이블은 5개의 행이 있습니다

column : 학생 하나의 속성 ,열, 위의 테이블엔 4개의 컬럼이 있다.

 

DBMS를 통해 사용가자 관리

 

DBMS (DataBaseManagementSystem)(=데이터베이스 관리 시스템)

 

데이터베이스 관리 가능 

 

DBMS의 예

 

 

상황에 알맞은 DBMS를 쓰면 된다.

 

데이터베이스 구축은 해당 DBMS를 선택하여 구축 

DBMS만 고르면 된다.

 

모든 DBMS는 SQL이라는 명령으로 명령을 내림 

 

SQL(StructuredQueryLanguage) 

 

DBMS에 명령을 내리기 위해 사용하는 언어

 

DBMS 마다 표준SQL과 비슷하거나 조금 다르다 주요 기능은 같다. 

 

client(클라이언트) : 사용자가 서버에 접속해서 원하는 데이터베이스 관련 작업을 할 수 있도록 SQL을 입력할 수 있는 화면 제공

 

server(서버 프로그램) : client로부터 SQL문 등을 전달받아 데이터베이스 관련 작업 직접 처리하는 프로그램

 

 

 

반응형

'IT > DB' 카테고리의 다른 글

[DB] 문자열 타입 및 SQL문 예시 및 연습  (0) 2022.01.13
[DB]데이터타입과 키 타입  (0) 2022.01.07
[SQL] SUBQUERY,NESTED SUBQUERY  (0) 2021.11.30
[SQL] CARTESIAN PRODUCT  (0) 2021.11.29
[SQL] SORT/MERGE JOIN  (0) 2021.11.29
728x90
반응형

SUBQUERY

 

- 하나의 질의문 내부에 하나 이상의 다른 질의문이 포함되어 그 결과를 이용할 때 내부에 포함된 쿼리문을 말함

- Group by절을  제외하고는 어디든 위치할 수 있음 

 

NESTED SUBQUERY 

 

- 서브쿼리가 WHERE절에서 사용된 경우 NESTED SUBQUERY라고 함

- NESTED SUBQUERY가 Main Query보다 먼저 실행될 때 속도를 낼 수 있는 유형임 

- 단, 서브쿼리 쪽에서 조회하는 Main Query값에 인덱스가 없으면 서브쿼리는 먼저 실행되지 않음 

 

CORRELATED SUBQUERY 

 

- 서브쿼리가 WHERE절에서 사용되고 메인 쿼리에서 데이터를 하나씩 읽을때마다 

 서브쿼리가 실행되어 데이터를 리턴하는 서브쿼리를 CORRELATED SUBQUERY라고 함

 

메인쿼리에서 데이터를 읽고 있는 ROW수 만큼 서브쿼리가 실행됨 

 

SCALAR SUBQUERY 

 

- 단 하나의 데이터와 단 하나의 칼럼에 대한 정보를 리턴함

- SCALAR SUBQUERY 사용 위치 

  - Select List항목, 함수의 인자, WHERE절의 조건,Order by 절,case 조건절,case 결과절 

 

ROLLUP & CUBE 

 

- ROLLUP : 데이터의 총계를 나타낼때 사용하는 함수 

- CUBE : 데이터의 소계를 나타낼 때 사용하는 함수 

 

GROUPING SETS()

  

여러 개의 GROUP BY 쿼리를 동시에 실행한 것과 같은 결과를 나타냄 

GROUPING SETS()로 ROLLUP(),CUBE(),ROLLUP()&CUBE()구현이 가능함 

 

ANALYTIC FUNCTIONS

 

행과 행 간의 관계를 정의하거나 비교,연산하기 위해 사용함 

Arguments 함수에 따라 0~3개의 인자가 지정됨
Partition By절 전체 집합을 기준에 의해 소그룹으로 나눔
Orfer By 절  어떤 항목에 대한 정렬 기준을 기술함
Windowing 절  함수에 의해서 제어하고자 하는 데이터 범위를 정의함

ANALYTIC FUNCTIONS 종류

 

- 그룹 내 테이터 순위 : ROW_NUMBER,RANK,DENSE_RANK

- 그룹 내 비율 : RATIO_TO_REPORT

반응형

'IT > DB' 카테고리의 다른 글

[DB]데이터타입과 키 타입  (0) 2022.01.07
데이터베이스의 기본 개념  (0) 2022.01.03
[SQL] CARTESIAN PRODUCT  (0) 2021.11.29
[SQL] SORT/MERGE JOIN  (0) 2021.11.29
[SQL] NESTED LOOPS JOIN 조인  (0) 2021.11.29
728x90
반응형

CARTESIAN PRODUCT의 개념 

 

- Cartesian Product가 발생하는 경우 

 

1.where절이 없는 조인 수행

2.조인을 위한 조건 없이 조인 수행 

 

- '데이터 복제'라는 개념을 활용하기 위해 사용하지만,

잘못 사용하게 되면 오히려 데이터를 부풀리는 원인이 되기 때문에 

퍼포먼스를 오히려 나쁘게 할 수도 있음

 

2.자주 사용하는 방법 

 

 

정리 

 

CARTESIAN PRODUCT 

 

곱집합 

특정 테이블의 데이터를 필요한 만큼 복사하기 위한 방법 

CARTESIAN PRODUCT가 발생되는 경우 

  - WHERE절이 없는 조인을 수행할 경우 

  - 조인을 위한 조건 없이 조인을 수행할 경우 

 

Cartesian product시 자주 사용하는 테이블 

 

- Cartesian product만을 위한 전용  테이블을 생성해서 사용 

- 이미 생성되어 있는 정규 테이블을 사용 

- DUAL과 같은 dummy 테이블 사용 

 

CARTESIAN PRODUCT 적용 예제 

 

- UNION으로 연결된 각각의 SQL이 읽고 있는 데이터가 전부 같을 경우 

  데이터 복제와 같은 개념 활용을 위해 사용 

- 데이터 구조 변환을 통해 사용자가 요청한 구조대로 데이터를 조회할때 사용 

- SQL문으로 일년 치 날짜를 만들 때 사용 

 

반응형

'IT > DB' 카테고리의 다른 글

데이터베이스의 기본 개념  (0) 2022.01.03
[SQL] SUBQUERY,NESTED SUBQUERY  (0) 2021.11.30
[SQL] SORT/MERGE JOIN  (0) 2021.11.29
[SQL] NESTED LOOPS JOIN 조인  (0) 2021.11.29
[SQL] 인덱스 활용이 불가능한 경우  (0) 2021.11.23
728x90
반응형

SORT/MERGE JOIN의 사용

 

1.연결 고리에 인덱스가 전혀 없는 경우 

2.대용량의 자료를 조인해야 함으로써 인덱스 사용에 따른 랜덤 액세스의 오버헤드가 많은 경우

 

SORT/MERGE JOIN

 

1.각 테이블에 대해 동시에 독립적으로 데이터를 먼저 읽어 들임

2.읽혀진 각 테이블의 데이터를 조인을 위한 연결 고리에 대하여 정렬을 수행함 

3.정렬이 모두 끝난 후에 조인 작업이 수행됨 

 

- 튜닝 포인트 

 

- 각 테이블로부터 데이터를 빨리 읽어 들이도록 함

- 메모리를 최적화함

 

SORT/MERGE JOIN의 장단점

 

1.연결고리에 인덱스가 생성되어 있지 않은 경우에 빠른 조인을 위하여 사용됨

2.조인하고자 하는 각 테이블에 대해서 독립적으로 데이터를 읽어 들일 때 

  이를 얼마나 빠르게 할 것 인가가 중요함 

3.각 테이블로부터 읽혀진 데이터를 연결고리에 대해 정렬을 수행할 때 이를 얼마나 빠르게 할 것인가가 중요함 

 

HASH JOIN 

 

NESTED LOOPS JOIN - 인덱스 사용에 의한 랜덤 액세스의 오버헤드 

SORT/MERGE JOIN - 정렬 작업으로 인한 오버헤드 

 

SORT/MERGE 조인과 비교해 보면 

각 테이블에 대한 처리를 독립적으로 하는 것은 같지만

HASH JOIN에서는 Driving Table이 있음

 

읽어 들인 각 테이블의 데이터를 서로 조인하기 위해 

해싱을 이용해서 해시 값을 만듬

-> 해시 값으로 조인을 수행함

 

튜닝 포인트 

 

- Driving table을 결정함 

- 각 테이블로부터 데이터를 읽어 들일 때, 빨리 읽을 수 있도록 함 

- 메모리를 최적화함 

 

HASH JOIN의 장단점 

 

Hash Bucket이 조인 집합에 구성되어 해시 함수 결과를 저장해야 하는데 이러한 처리에는 많은 메모리와 

CPU자원을 소모하게 됨 

기본적으로 HASH_AREA_SIZE에 지정된 크기만큼의 메모리가 할당되어 사용됨 

 

조인을 수행하기에 메모리가 부족하다면 가장 큰 순서대로 

Hash Bucket에 변경이 일어날 때마다 디스크 I/O가 발생하게 되어 성능이 현저하게 저하됨 

 

하드웨어 자원이 넉넉한 상황에서는 다른 조인에 비해 보다 효율적인 수행이 가능하지만, 부족한 상황에서는 다른 조인 방법보다 오히려 느려질 수 도 있음 

 

정리 

 

SORT/MERGE JOIN을 사용해야 하는 경우 

 

- 연결 고리에 인덱스가 전혀 없는 경우 

- 대용량의 자료를 조인해야 함으로써 인덱스 사용에 따른 랜덤 액세스의 오버해드가 많은 경우 

 

튜닝포인트 

 

- 각 테이블로부터 데이터를 빨리 읽어 들이도록 함 

- 각 테이블로부터 읽어 들인 데이터를 조인하기 전에 정렬을 하는데, 

  이러한 정렬 작업을 빨리 끝낼 수 있도록 함

 

HASH JOIN의 장단점 

 

- Hash Bucket이 조인 집합에 구성되어 해시 함수 결과를 저장해햐야 하는데 이러한 처리에는

많은 메모리와 CPU자원을 소모하게 됨 

- 기본적으로 HASH_AREA_SIZE에 지정된 크기만큼의 메모리가 할당되어 사용됨

조인을 수행하기에 메모리가 부족하다면 가장 큰 순서대로 Hash Bucket이 Temporary Tablespace로 내려가서 구성됨

-> 디스크로 내려간 Hash Bucket에 변경이 일어날 때마다 디스크 I/O가 발생하게 되어 성능이 현저하게 저하됨

 

하드웨어 자원이 넉넉한 상황에서는 다른 조인에 비해 보다 효율적인 수행이 가능하지만 부족한 상황에서는 

다른 조인 방법보다 오히려 느려질 수도 있음 

 

SORT/MERGE JOIN의 수행 절차 

 

1) 각 테이블에 대해 동시에 독립적으로 데이터를 먼저 읽어 들임 

2) 읽혀진 각 테이블의 데이터를 조인을 위한 연결고리에 대하여 정렬을 수행함.

3) 정렬이 모두 끝난 후에 조인 작업이 수행됨 

 

SORT/MERGE JOIN이 불리한 경우

 

- 각 테이블로부터 읽어 들인 데이터를 조인하기 전에 정렬하게 되는데  

   이 때 정렬할 데이터가 지나치게 큰 경우 

- 각 테이블로부터 읽어 들인 데이터의 크기가 매우 큰 경우 

 

SORT/MERGE JOIN의 장단점 

 

장점 : 연결고리에 인덱스가 생성되어 있지 않은 경우에 빠른 조회를 수행할 수 있음

단점 : 각 테이블로부터 읽어 들인 데이터의 크기가 매우 큰 경우 성능상 불리함 

 

HASH JOIN 

 

각 테이블에 대한 처리를 독립적으로 하지만 Hash Join은 Driving Table이 있음

읽어 들인 각 테이블의 데이터를 서로 조인하기 위해 해싱을 이용해서 해시 값을 만들어 조인을 수행함 

튜닝포인트 

 

- Driving Table의 결정 

- 각 테이블로부터 독립적으로 데이터를 읽어 들일 때 빨리 처리하도록 함 

- 해시 조인을 위한 메모리를 최적화함

 

HASH JOIN의 수행 절차 

 

- Driving Table 결정 

- Driving Table의 연결조건 컬럼 해싱 및 해시 값 생성 

- 읽어 들인 데이터와 해싱해서 만들어진 해시 값을 메모리에 저장 

- Hash Join이 적용될 테이블의 연결조건 컬럼 해싱 및 해시 값 생성 

- 읽어 들인 데이터와 해싱에서 만들어진 해시 값을 메모리에 저장 

- 각 테이블에 조인할 데이터가 있는지 조인하고자 만들었던 해시 값 간에 충돌이 있는지 확인 

  -> 충돌이 발생할 경우,2차 해싱 수행 

- 각 테이블의 해시값을 "="로 조인을 수행 

 

HASH JOIN의 장단점

 

장점 : 하드웨어 자원이 넉넉한 상황에서는 다른 조인에 비해 보다 효율적인 수행이 가능 

단점 : 하드웨어 자원이 부족한 상황에서는 다른 조인 방법보다 비효율적임 

 

 

반응형

'IT > DB' 카테고리의 다른 글

[SQL] SUBQUERY,NESTED SUBQUERY  (0) 2021.11.30
[SQL] CARTESIAN PRODUCT  (0) 2021.11.29
[SQL] NESTED LOOPS JOIN 조인  (0) 2021.11.29
[SQL] 인덱스 활용이 불가능한 경우  (0) 2021.11.23
[SQL] 옵티마이저의 개념 및 종류와 인덱스  (0) 2021.11.09

+ Recent posts