일단 해보는 코딩/Oracle SQL

[오라클/SQL] Transaction&LOCK, View 란 무엇인가?

eun_zoey2 2022. 6. 9. 19:56
728x90

 

Transaction 

 

Transaction이란 하나의 연관되어 완성되는 작업 단위이다.

A가 자신의 A은행에서 B의 B은행에 계좌이체를 예로 보면 A의 은행에서 금액이 빠져나가고 B의 은행에 해당 금액이 입금되는 일련의 작업에서 A가 송금 프로세싱 끝에서 commit(실행)을 해주어야 B에게 완전히 입금된다.

중간에 오류가 있거나 A가 취소하면 A 은행에서 돈이 빠져나가서는 안 되고 B 은행에 입금되어서도 안 되는 무효처리가 되어야 한다. 

 

Oracle에서는 이런 DML이 정상적으로 실행되어도 트랜젝션은 계속 내부적으로 진행 중이다. 따라서 완전히 DML 과정을 종료시키려면 Commit(OR /) 해서 완전히 프로세스를 종료하거나, Rollback을 해서 전체 작업을 취소시켜 주어야 한다.

Transaction은 작업의 완성, Rollback은 작업의 취소이다.

 

 


LOCK

LOCK는 TRANSACTION과 긴밀하게 연관되어 있는데,

예를 들어 A 사용자가 A 테이블의 어느 항목에 대해서 변경 등의 작업을 수행한 뒤 Commit 해서 해당 작업을 완료 하지 않는 한, B 사용자가 똑같은 A 테이블의 동일한 항목에 대해서 쿼리나 변경 등의 작업을 또 시도하면, A 사용자의 작업이 마무리 되지 않았기 때문에 B 사용자의 작업이 수행되지 않는 TABLE LOCK가 발생된다.

이런 이유는 A 사용자가 여전히 A 테이블의 해당 항목에 대한 프로세스를 잡고 있기 때문에 B 사용자가 해당 프로세스를 사용할 수 없기 때문이다.

 

 

 

View 

자주 사용하는 쿼리가 여러 테이블을 조인해서 이뤄질 때 JOIN 하는 테이블 수가 늘어나면 질의문이 길고 복잡해지고 유지보수도 어려울 수 있다. 이럴 때에는 미리 필요한 항목들만 각 테이블에서 추출해서 JOIN 한 뒤 이를 뷰 테이블로 저장해두고 나중에 일반 테이블처럼 사용할 수 있다. View를 가상 테이블이라고 한다.
뷰는 명령어와 스크립트로 생성할 수 있는데 JOIN 하는 과정을 스크립트를 만들어 두거나 STORED PROCEDURE를 사용해서 데이터베이스 서버에 저장해두고 수시로 꺼내서 수정해가면서 재사용할 수 있다. 스크립트는 파일 시스템에 저장되지만 STORED PROCEDURE는 데이터베이스에 저장되어 관리되므로 최초로 compile 한 이후로는 그냥 수정해서 실행하기만 하면 된다. 

 

View의 장점 설명
독립성 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다
편리성 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작설할 수 있다.
보안성 직원의 급여와 같이 숨기고 싶은 정보가 존재한다면, 뷰를 생성할 때 해당 칼럼을 제외하고 생성이 가능하다.