[DB_SQL활용] 트랜잭션 제어와 섹션

예지성준·2024년 5월 10일

DB

목록 보기
8/19
post-thumbnail

트랜잭션 제어와 세션

하나의 단위로 데이터를 처리하는 트랜잭션

1. 트랜잭션이란?

1) 관계형 데이터베이스에서 하나의 작업 또는 밀접하게 연관되어 있는 작업 수행을 위해 나눌 수 없는 최소 수행 단위

2) SQL 문법 중 이러한 트랜잭션을 제어하는 데 사용하는 명령어를 TCL 이라고 합니다.

SQL작성
SQL작성
-> 메모리상에 데이터 변경 밥영
COMMIT; 하면 DB에 데이터 영구 변경 반영

📌트랜잭션은 COMMIT 할때까지의 작업

트랜잭션을 제어하는 명령어

1. COMMIT

  • DB에 영구 반영

2. ROLLBACK

  • COMMIT 전에 실행하면 복구 됨
  • COMMIT 후에는 DB에 영구 반영 되었으므로 복구X😱

세션과 읽기 일관성의 의미

1. 세션이란?

  • 데이터베이스 접속을 시작으로 여러 데이터베이스에서 관련 작업을 수행한 후 접속을 종료하기까지 전체 기간

    • 좀 더 익숙한 단어로 표현한다면 게임이나 웹 서비스에 로그인해서 로그아웃할 때까지의 기간 또는 모바일이나 온라인 게임등을 켜고 끌 때까지의 기간 정도로 생각해도 된다.
  • 세션이 여러 개라는 말은 현재 오라클 데이터베이스에 접속하여 사용 중인 연결이 여러 개 있다는 뜻이다.
    예를 들어 현재 우리가 사용하고 있는 오라클 데이터베이스에 토드를 사용하여 SCOTT 계정으로 접속했을 때, 명령어 프롬프트를 켜서 SQL*PLUS를 실행하여 SCOTT으로 접속할 경우에 세션은 두 개가 된다. (dbever쪽에서 하나, cmd에서 하나)

    • dbever에서 DELETE로 테이블을 삭제해도 SQL*PLUS쪽에서는 데이터를 조회할 수 있다.
      -> 실제 데이터 반영은 COMMIT시 반영되기에 그 전까지는 다른 세션에서 공유한 데이터를 볼 수 있다.

2. 읽기 일관성의 중요성

  • 데이터베이스는 여러 곳(여러 사용자, 여러 응용 프로그램)에서 동시에 접근하여 데이터를 관리,사용하는 것이 목적이므로 대부분 수많은 세션이 동시에 연결되어 있습니다.

  • 읽기 일관성이란 어떤 특정 세션에서 테이블의 데이터를 변경 중일 때 그 외 다른 세션에서는 데이터의 변경이 확정되기 전까지 변경 사항을 알 필요가 없으므로, 데이터를 변경 중인 세션을 제외한 나머지 세션에서는 현재 진행 중인 변경과 무관한 본래의 데이터를 보여주는 특성을 의미합니다.

세션1

세션2

커밋을 하기전엔 추가한 데이터가존재하지 않는다

커밋을 해야 하나의 트랜잭션이 만들어짐

수정 중인 데이터 접근을 막는 LOCK

1. LOCK 이란?

  • 특정 세션에서 조작중인 데이터는 트랜잭션이 완료(COMMIT, ROLLBACK)되기 전까지 다른 세션에서 조작할 수 없는 상태

동일한 데이터를 바꿀때는 한쪽 작업이 끝날때까지 다른쪽 작업을 수정할 수 없게 된다

-> 데이터의 일관성을 위해 한쪽 작업이 끝날때 까지 대기함( COMMIT해야 작업이 완료됨 )
한쪽에서 바꾸고 커밋을 안하면 무한로딩한다.

2. LOCK 개념 살펴보기

LOCK 설명자료

SQL

DDL - Data Definition Language: 데이터 정의어

  • 데이터의 구조 정의하는 언어
  • 실행하자마자 COMMIT 바로 실행 -> 바로 영구 반영

    DML - Data Mainpulation Language: 데이터 조작어
  • INSERT, UPDATE, DELETE, SELECT - DQL
  • COMMIT, ROLLBACK이 적용될 수 있음

    DCL -Data Control Language: 데이터 제어어
  • GRANT, REVOKE
  • COMMIT, ROLLBACK - TCL

    세션: 연결 시작과 종료까지가 하나의 세션
profile
꽁꽁 얼어붙은 한강 위로 😺

0개의 댓글