SMALL

트랜잭션이란?


트랜잭션은 데이터베이스의 상태를 변화시키는 작업 단위를 의미한다.


ATM 출금을 예시를 들어본다.


1. 예금 출금을 누른다.

2. 카드를 넣는다.

3., 비밀번호를 누른다.

4. 출금할 금액을 입력한다.

5. 출금 완료


위와 같은 과정을 트랜잭션이라고 한다.


트랜잭션 특징


트랜잭션 특징에는 ACID 라는 4가지 특징이 있다.


  • 원자성(Atomicity)
원자성은 트랜잭션이 데이터베이스에 모두 반영되거나, 아니면 전혀 반영되지 않아야 한다.

위의 ATM 출금 과정에서 비밀번호를 실패하면 트랜잭션을 실패를 하고, 출금 완료까지하면 트랜잭션을 성공 하는 것이 원자성이다.

  • 일관성(Consistency)
일관성은 트랜잭션의 작업 처리 결과가 항상 일관성 있어야 한다.

위의 ATM 출금을 완료하면 A의 계좌의 남은 잔액과 출금한 금액의 합이 ATM 출금하기전의 잔액과 같아야 하는 것이 일관성이다.

  • 고립성(Isolation)
고립성은 하나의 트랜잭션이 실행 중 일때 변경한 데이터는 트랜잭션이 완료 될 때까지 다른 트랜잭션이 참조할수 없어야 한다.

위의 ATM에서 A의 계좌로 출금 중 일때는 A의 계좌에 대해 관여 할 수 없는 것이 고립성이다.

  • 지속성(Durability)
지속성은 트랜잭션이 완료되면, 영구적으로 데이터가 보존 되어야 한다.

위의 ATM에서 출금 완료를 하면 영구적으로 잔액이 저장되어야 하는 것이 지속성이다.

Commit, Rollback 연산


  • Commit
커밋은 하나의 트랜잭션이 완료되었음을 알려주는 것이다.
ATM 출금이 완료되면 커밋이 되었다라고 말을 한다.

  • Rollback
롤백은 하나의 트랜잭션 처리가 비정상적으로 종료되면 다시 처음 상태로 되돌리는 것이다.
ATM 출금 과정 중 어느 과정에서 에러가 나면 다시 처음 화면으로 돌아 가는 것이다.


LIST

'전공 > 데이터베이스' 카테고리의 다른 글

UNDO와 REDO  (0) 2018.06.14
UNION과 UNION ALL  (0) 2018.06.11
DB정규화  (0) 2018.05.17
조인  (0) 2018.05.02
SQL 인젝션  (0) 2017.11.24
SMALL

JOIN?


관계형 데이터베이스에서 서로 관계있는 데이터가 여러 테이블로 나뉘어 저장되어 있는데, 각 테이블에 저장된 데이터를 효과적으로 검색하기 위해 조인을 사용한다.


조인에는 내부 조인이랑 외부 조인이 있다.


INNER JOIN


내부 조인은 둘 이상의 테이블에 존재하는 공통 속성의 값이 같은 것을 결과로 추출한다. 내부조인에는 동등 조인, 자연 조인, 교차 조인, 셀프 조인이 있다.


1. 동등 조인(EQUI JOIN)

둘 이상의 테이블에 존재하는 공통 속성을 비교하여 출력한다.


SELECT *

FROM emp INNER JOIN dept

ON emp.deptno = dept.deptno


2. 자연 조인(NATURAL JOIN)

조인 대상 테이블의 모든 속성을 비교하여, 공통 속성을 가진 속성으로 조인을 수행한다. 같은 이름을 가진 속성은 한 번만 나타난다.


SELECT *

FROM emp NATURAL JOIN dept



3. 교차 조인(CROSS JOIN)

교차 조인은 카티션 프로덕트로 불리며, 조인에 참여한 모든 데이터가 나타난다.


1) JOIN 조건을 잘못 기술했을 때

2) JOIN 조건을 정의하지 않았을 때

3) JOIN 조건이 JOIN 조건에 참여하는 테이블의 모든 행이 JOIN되는 경우


위와 같은 상황이면 교차 조인이 발생한다.

그래서 조인을 수행 한 뒤, 결과를 확인 해봐야한다.


SELECT *

FROM emp CROSS JOIN dept


4. 셀프 조인(SELF JOIN)
셀프 조인은 EMP 테이블에 사원 정보와 관리자 정보를 함께 보고 싶을 때, 사용한다.


SELECT e.empno, e.ename, m.empno, m.ename

FROM emp E INNER JOIN emp M

ON E.mgr = M.empno




OUTER JOIN


외부 조인은 특정 테이블의 데이터를 모두 포함하는 조인이다. 외부 조인에는 왼쪽 외부 조인, 오른쪽 외부 조인, 완전 외부 조인이 있다.


1. 왼쪽 외부 조인(LEFT OUTER JOIN)




위와 같이 왼쪽의 데이터를 모두 포함하고 있다.


SELECT *

FROM emp

LEFT OUTER JOIN dept

ON emp.deptno = dept.deptno




2. 오른쪽 외부 조인(RIGHT OUTER JOIN)



위와 같이 오른쪽의 데이터를 모두 포함하고 있다.

SELECT *

FROM emp

RIGHT OUTER JOIN dept

ON emp.deptno = dept.deptno



3. 완전 외부 조인(FULL OUTER JOIN)




SELECT *

FROM emp

FULL OUTER JOIN dept

ON emp.deptno = dept.deptno



JOIN 사용 시 주의 사항


1. SQL 문장의 의미를 제대로 파악

  -> 성능이 크게 좌우 된다.

2. 조인 조건을 명확하게 제공

  -> CROSS JOIN이 발생 할 수 있다.

3. 조인 적용 후 테스트를 수행

  -> 여러 개 테이블을 조인 할시 예상 못한 결과를 얻을수 있으니, 테스트를 습관 시해야 한다.



JOIN 사용 시 고려 사항



조인은 생각보다 많은 자원을 소비한다. 그래서 JOIN 사용 시 고려 해야 할 것이 있다.


1. 조인 대상의 양을 최소화

  -> 조인 할 집합에 먼저 조건을 걸 수 있으면 조건을 적용하여 조인의 양을 최소화한다.

2. 인덱스의 활용

  -> 조인 연산의 비용을 낮출 수 있음


LIST

'전공 > 데이터베이스' 카테고리의 다른 글

UNDO와 REDO  (0) 2018.06.14
UNION과 UNION ALL  (0) 2018.06.11
DB정규화  (0) 2018.05.17
트랜잭션  (0) 2018.05.04
SQL 인젝션  (0) 2017.11.24
SMALL

http://blog.daum.net/warmfeel/108 참고


LIST

'전공 > 데이터베이스' 카테고리의 다른 글

UNDO와 REDO  (0) 2018.06.14
UNION과 UNION ALL  (0) 2018.06.11
DB정규화  (0) 2018.05.17
트랜잭션  (0) 2018.05.04
조인  (0) 2018.05.02

+ Recent posts