ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 트랜잭션(Transaction)
    Technique/RDBMS 2016. 6. 6. 23:28
    반응형

    트랜잭션(Transaction)은 작업의 완전성을 보장해 주는 것이다. 즉 논리적인 작업셋을 모두완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상( Partial update ) 이 발생하지 않게 만들어 주는 기능


    MySQL의 트랜잭션

    트랜잭션이라 함은 꼭 여러 개의 변경 작업을 수행하는 쿼리가 조합됐을 때만 의미 있는 개념은 아니다.

    트랜잭션은 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두 개 이상의 쿼리가 있든 관계없이 논리적인 작업 셋 자체가 100% 적용 되거나 ( COMMIT 을 실행 했을 때 ) 또는 아무것도 적용되지 않아야 함(ROLLBACK 또는 오류가 발생했을 경우)을 보장해 주는 것이다.


    주의 사항

    꼭 필요한 최소의 코드에만 적용 하는 것이 좋다. 이는 프로그램 코드에서 트랜잭션의 범위를 최소화 하라는 의미이다.

    프로그램의 코드가 데이터베이스 커넥션을 가지고 있는 범위와 트랜잭션이 활성화돼 있는 프로그램의 범위를 최소화 해야한다.

    또한 프로그램의 코드에서 라인 수는 한두 줄이라 하더라도 네트워크 작업이 있는 경우에는 반드시 트랜잭션에서 배제해야한다. 

    이런 실수 때문에 DBMS 서버가 높은 부하 상태로 빠지거나 위험한 상태에 빠지는 경우가 빈번히 나타나곤 한다.


    나쁜예)

    1. 처리시작

    =>데이터 베이스 커넥션 생성

    => 트랜잭션 시작

    2. 사용자의 로그인 여부 확인

    3. 사용자의 글쓰기 내용의 오류 여부 확인

    4. 첨부로 업로드된 파일 확인 및 저장

    5. 사용자의 입력 내용을 DBMS에 저장

    6. 첨부 파일 정보를 DBMS에 저장

    7. 저장된 내용 또는 기타 정보를 DBMS에서 조회

    8. 게시물 등록에 대한 알림 메일 발송

    9. 알림 메일 발송 이력을 DBMS에 저장

    <= 트랜잭션 종료( COMMIT )

    <= 데이터 베이스 커넥션반납

    10. 처리 완료


    수정 

    1. 처리시작

    2. 사용자의 로그인 여부 확인

    3. 사용자의 글쓰기 내용의 오류 여부 확인

    4. 첨부로 업로드된 파일 확인 및 저장

    => 데이터 베이스 커넥션 생성 ( 또는 커넥션 풀에서 가져오기 )

    => 트랜잭션 시작

    5. 사용자의 입력 내용을 DBMS에 저장

    6. 첨부 파일 정보를 DBMS에 저장

    <= 트랜잭션 종료

    7. 저장된 내용 또는 기타 정보를 DBMS에서 조회

    8. 게시물 등록에 대한 알림 메일 발송

    => 트랜잭션 시작

    9. 알림 메일 발송 이력을 DBMS에 저장

    <= 트랜잭션 종료( COMMIT )

    <= 데이터 베이스 커넥션반납

    10. 처리 완료


    반응형

    'Technique > RDBMS' 카테고리의 다른 글

    MySQL Index 기초지식  (0) 2016.12.22
    MySQL INET 함수  (0) 2016.11.17
    슬로우 쿼리 로그  (0) 2016.06.06
    바이너리 로그, 릴레이 로그  (0) 2016.05.22
    에러 로그 파일  (0) 2016.05.19

    댓글

Designed by Tistory.