200402 // SYNONYM, VIEW, CRUD, 인덱스 INDEX, , 클러스터링
오라클은 사용자를 생성하면 데이터베이스도 자동으로 생성한다
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%이내의 데이터를 검색할 때 시퀀셜보다 랜덤 엑세스가 유리하다
----------------------------
클러스터 - 군집화
클러스터링 팩터 전략
데이터를 아무곳에나 놓는 것이 아니라 비슷한것은 모아두는 것(검색시 속도향상)
------------------------------