본문 바로가기

DATABASE/TRANSACTION

(4)
04. 수정 중인 데이터 접근을 막는 LOCK LOCK이란? 특정 세션에서 조작중인 데이터는 트랜잭션이 완료(COMMIT, ROLLBACK)되기 전까지 다른 세션에서 조작할 수 없는 상태가 된다. 즉 데이터가 잠기는(LOCK) 것이다. LOCK는 조작 중인 데이터를 다른 세션은 조작할 수 없도록 접근을 보류 시키는 것이다. LOCK 종류 LOCK은 하나의 데이터를 여러 곳에서 동시에 조작할 때 발생할 수 있는 혼란을 최소화 하는 중요한 요소이다. SQL문으로 조작하는 대상 데이터가 테이블의 특정 행 데이터일 경우에 해당 행만 LOCK이 발생한다는 의미로 행 레벨 록 이라고 한다. WHERE절을 지정하지 않은 UPDATE,DELETE문의 경우에는 테이블의 모든 행 데이터에 영향을 주는 명령어이므로 데이블이 저장된 전체 행이 LOCK상태가 된다. 즉 다..
03. 세션과 읽기 일관성의 의미 세션이란? 일반적으로 세션은 어떤 활동을 위한 시간이나 기간을 뜻한다. 오라클 데이터베이스에서 세션은 데이터베이스 접속을 시작으로 여러 데이터베이스에서 관련 작업을 수행한 후 접속을 종료하기까지 전체 기간을 의미한다. 세션이 여러 개라는 말은 현재 오라클 데이터베이스에 접속하여 사용 중인 연결이 여러 개 있다는 뜻이다. 트랜잭션은 데이터 조작 명령어가 모인 하나의 작업 단위를 뜻하며, 세션 내부에는 하나 이상의 트랜잭션이 존재한다. 왜냐하면 데이터베이스에 접속한 후 종료하기까지의 과정이 하나의 세션이고, 이 세션이 유지되는동안 여러 COMMIT, ROLLBACK 작업이 진행되기 때문이다. 세션이 트랜잭션보다 큰 범위의 개념이다. 읽기 일관성의 중요성 데이터베이스는 여러 곳에서 동시에 접근하여 데이터를 관..
02. 트랜잭션을 제어하는 명령어 트랜잭션 개념을 통해 알 수 있듯이 하나의 트랜잭션에 묶여 있는 데이터 조작어의 수행상태는 모든 명령어가 정상적으로 수행 완료된 상태 또는 모든 명령어가 수행되지 않아 취소된 상태 , 두가지 상태로만 존재할 수 있다. 트랜잭션 제어 명령어는 데이터 조작 상태를 이 두 가지 상태 중 하나로 유도하는 명령어를 의미한다. 즉 데이터 조작을 데이터베이스에 영구히 반영하거나 작업 전체를 취소한다. 트랜잭션을 취소하고 싶을 때는 ROLLBACK ROLLBACK은 현재 트랜잭션에 포함된 데이터 조작 관련 명령어의 수행을 모두 취소한다. 트랜잭션을 영원히 반영하고 싶을 때는 COMMIT 지금까지 수행한 트랜잭션 명령어를 데이터베이스에 영구히 반영할 때는 COMMIT명령어를 사용한다. COMMIT명령어 사용을 기점으로 ..
01. 하나의 단위로 데이터를 처리하는 트랜잭션 트랜잭션이란? 트랜잭션이란 더 이상 분할할 수 없는 최소 수행 단위를 뜻한다. 하나의 작업 또는 밀접하게 연관된 작업을 수행하기 위해 한 개 이상의 데이터 조작 명령어로 이루어진다. 어떤 기능 한 가지를 수행하는 'SQL문 덩어리' 라고 볼 수 있다. 트랜잭션은 하나의 트랜잭션 내에 있는 여러 명령어를 한번에 수행하여 작업을 완료하거나 아예 모두 수행하지 않는 상태, 즉 모든 작업을 취소한다. 이런 특성으로 트랜잭션의 의미를 ALL OR NOTHING라고도 한다. 트랜잭션을 제어하기 위해 사용하는 명령어를 TCL(Transaction Control Language)라고 한다.