Database/OracleSQL

200402 // SYNONYM, VIEW, CRUD, 인덱스 INDEX, , 클러스터링

Jaybon 2020. 4. 2. 19:05

오라클은 사용자를 생성하면 데이터베이스도 자동으로 생성한다

1. 사용자
2. DB
3. 테이블

-----------

SYNONYM은
CREATE PUBLIC SYNONYM EMP FOR SCOTT.EMP; (다른 사용자의 테이블을 시노님으로 가져오기)
위처럼 쓰면 FROM EMP; 처럼 이용해도 가져와진다.

위처럼 쓰지 않으면 다른테이블을 가져올때 항상
FROM SCOTT.EMP; 처럼 사용해야 한다

---------------------------------

뷰의 핵심은 동기화

외부직원에게 테이블의 민감한 정보를 제외하고 제공할때 복제해서주면 동기화의 문제와 다시합칠때 문제가 있다

VIEW를 이용하면 정보를 은닉하여 보여주고 싶은 것만 보여주고 동기화도 자동으로 된다

 

---------------------------------

CRUD (필수 꼭외울 것)

INSERT - C (create)

SELECT - R (read)

UPDATE - U

DELETE - D

--------------------------------

SELECT * 
FROM EMP; 를 하면 DB에 검색을 바로 하는게 아니라 DBMS(오라클)를 검색한다
1. 파싱 ( 코드 구문분석)
2. 데이터딕셔너리에게 메타데이터를 물어본다 (EMP테이블이 있어? ENAME라는 컬럼이 있어?)
3. 있으면 DB(램을 검색하고 램에 없으면 하드에서 램으로 올려서 검색)
(한번 수행했던 쿼리는 다시 수행하면 파싱이나 딕셔너리접근을 하지않아서 빠르게 출력된다)

 

--------------------------------

CPU - 캐시메모리 - 램

이면 캐시메모리가 캐시 역할

CPU - 램 - 하드디스크

이면 램이 캐시 역할

 

CPU가격은 캐시메모리가 정한다(속도가 매우 빠르기때문)

---------------------------------

최근 프로그래밍에서 속도증가는 자료구조 등 보다 하드디스크접근(I/O)을 줄이는 것에 집중되어 있다

디스크 접근(I/O)을 줄이는 방법
1.캐시메모리를 늘리기 / 메모리에 자주쓰는 데이터를 올리는 기법
2.시퀀셜 엑세스 기법
3.랜덤엑세스 기법

1번이 가장 중요

 

2.시퀀셜 엑세스 기법

순서대로 블록 전체를 다 읽어서 필요한 데이터를 찾아낸다.(풀스캔)

풀스캔 - 찾을 데이터가 많으면 많을수록 유리해진다

 

3.랜덤 엑세스 기법 (프라이머리 키)

필요한 블록만 하나씩 가져오는 것

데이터가 적으면 적을수록 유리해진다

통상 15%이내의 데이터를 검색할 때 시퀀셜보다 랜덤 엑세스가 유리하다

----------------------------

클러스터 - 군집화

클러스터링 팩터 전략
데이터를 아무곳에나 놓는 것이 아니라 비슷한것은 모아두는 것(검색시 속도향상)

------------------------------