검수요청.png검수요청.png

"락"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
(Lock의 종류)
(Lock의 종류)
27번째 줄: 27번째 줄:
  
 
==Lock의 종류==
 
==Lock의 종류==
락(Lock)의 종류는 공유(Shared) Lock과 베타(Exclusive) Lock이 있다. 공유 Lock은 다른 말로 Read Lock이라고 불리며 베타 Lock은 Write Lock이라고도 불린다.  
+
락(Lock)의 종류는 공유락(Shared Lock)과 베타락(Exclusive Lock)있다. 공유락은 다른 말로 Read Lock이라고 불리며 베타락은 Write Lock이라고도 불린다.  
  
===공유 Lock===
+
===공유 ===
공유(Shared) Lock은 데이터를 읽을 때 사용되어지는 Lock이다. 이런 공유 Lock은 공유 Lock끼리는 동시에 접근이 가능하다. 즉, 하나의 데이터를 읽는 것은 여러 사용자가 동시에 할 수 있다. 하지만 공유 Lock이 설정된 데이터에 베타 Lock을 사용할 수는 없다.
+
공유락(Shared Lock)데이터를 읽을 때 사용되어지는 락이다. 이런 공유락은 공유락끼리는 동시에 접근이 가능하다. 즉, 하나의 데이터를 읽는 것은 여러 사용자가 동시에 할 수 있다. 하지만 공유락이 설정된 데이터에 베타락을 사용할 수는 없다.
  
===베타 Lock===
+
===베타 ===
베타(Exclusive) Lock은 데이터를 변경하고자 할 때 사용되며, 트랜잭션이 완료될 때 까지 유지된다. 베타 Lock이 해제될 때 까지 다른 트랜잭션은 해당 [[리소스]]를 접근할 수 없다. 또한 해당 Lock은 다른 트랜잭션이 수행되고 있는 데이터에 대해서는 접근하여 함께 Lock을 설정할 수 없다.<ref name="티스토리"></ref>
+
베타락(Exclusive Lock)데이터를 변경하고자 할 때 사용되며, 트랜잭션이 완료될 때 까지 유지된다. 베타락이 해제될 때 까지 다른 트랜잭션은 해당 [[리소스]]를 접근할 수 없다. 또한 해당 락은 다른 트랜잭션이 수행되고 있는 데이터에 대해서는 접근하여 함께 락을 설정할 수 없다.<ref name="티스토리"></ref>
  
 
==Lock의 설정 범위==
 
==Lock의 설정 범위==

2021년 7월 15일 (목) 11:32 판

(Lock)이란 트랜잭션(Transaction) 처리의 순차성을 보장하기 위한 방법이다.

개요

데이터베이스(DataBase)와 같은 시스템은 같은 데이터에 대해서 동시에 접근을 하는 경우가 생길 수 밖에 없는데 이럴 경우 데이터가 오염 될 수 있다. 그렇게 되지 않도록 데이터의 일관성과 무결성을 유지할 필요가 있는데 이런 경우에 DBMS(DataBase Management System)가 사용하는 공통적인 방법이 락(Lock)이다.[1]

데이터베이스

데이터베이스(DataBase, DB)는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합,관리하는 데이터의 집합이다. 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음이다. 논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을 고도로 구조화함으로써 검색과 갱신의 효율화를 꾀한 것이다. 즉, 몇개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억 시켜 놓은 자료의 집합체라고 할 수 있다.

모델

실제적인 데이터베이스 구현을 위한 현재 몇몇 개념화된 논리적 데이터 모델이 있다.

  • 관계 데이터 모델(relational datamodel) : 데이터 모델 중에서 가장 개념이 간단한 모델로 상대 수학적인 이론을 기반으로 한다. 데이터 모델을 개발하기 위해서는 테이블 관계로 묘사하는 이론적 모델 과정이 발생하는데 이를 개체관계모델(entity relational model)이라고 한다. 이 관계 데이터베이스를 위한 설계 과정은 이론적으로 관계수학에 기초한 실지 구현이라 보면 된다. 현실 세계는 객체관계 다이어그램으로 표현되며, 개체와 그 관계는 각기 사각과 선으로 그려진다.
  • SQL(Structured Query Language) :이 언어는 수학적 관계 대수와 관계 논리(relational calculus)에 기반을 두고 있다. 데이터 모델은 데이터를 조작하기 위한 연산 집합을 가져야 한다. 왜냐하면 그것은 데이터베이스 구조와 제약 조건을 정의하기 때문이다. 다시 말해, 관계 데이터 모델 연산 집합은 관계 대수로 표현되고, 그 연산은 사용자에게 여러 질의를 가능하게 한다.

장단점

  • 데이터베이스 장점 : 데이터 베이스의 장점으로는, 데이터를 공유하며 중복을 최소화하고 표준화가 가능하다. 또한 일관성, 무결성, 보안성을 유지하며 데이터 저장 공간도 절약된다.
  • 데이터베이스 단점 : 데이터베이스 전문가가 필요하고 많은 비용이 부담될 수 있다. 또한 시스템이 복잡하고 대용량 디스크엑세스가 집중되면 과부하도 발생할 수 있으며, 데이터 백업과 복구가 어렵다.[2]

트랜잭션

트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위고, 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위이다.

  • 원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되는지 아니면 전혀 반영되지 않아야 하고, 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 한다. 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.
  • 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환되고, 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 한다.
  • 독립성, 격리성(Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수는 없다. 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.
  • 연속성, 지속성(Durablility) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 한다.

하나의 트랜잭션은 Commit 되거나 Rollback된다.

  • Commit연산 : 하나의 트랜잭션에 대한 작업이 성공적으로 끝났고 데이터베이스가 다시 일관된 상태에 있을 때 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산이다.
  • Rollback연산 : 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때 이 트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소 하는 연산이다. Rollback시에는 해당 트랜잭션을 재시작하거나 폐기한다. [3]

Lock의 종류

락(Lock)의 종류는 공유락(Shared Lock)과 베타락(Exclusive Lock)이 있다. 공유락은 다른 말로 Read Lock이라고 불리며 베타락은 Write Lock이라고도 불린다.

공유 락

공유락(Shared Lock)은 데이터를 읽을 때 사용되어지는 락이다. 이런 공유락은 공유락끼리는 동시에 접근이 가능하다. 즉, 하나의 데이터를 읽는 것은 여러 사용자가 동시에 할 수 있다. 하지만 공유락이 설정된 데이터에 베타락을 사용할 수는 없다.

베타 락

베타락(Exclusive Lock)은 데이터를 변경하고자 할 때 사용되며, 트랜잭션이 완료될 때 까지 유지된다. 베타락이 해제될 때 까지 다른 트랜잭션은 해당 리소스를 접근할 수 없다. 또한 해당 락은 다른 트랜잭션이 수행되고 있는 데이터에 대해서는 접근하여 함께 락을 설정할 수 없다.[1]

Lock의 설정 범위

블로킹

교착상태

각주

  1. 1.0 1.1 차곡차곡 사바라다, 〈(데이터베이스) Lock에 대해서 알아보자 - 기본편〉, 《티스토리》, 2020-10-29
  2. 데이터베이스〉, 《위키백과》
  3. 코딩팩토리, 〈(DB기초) 트랜잭션이란 무엇인가?〉, 《티스토리》, 2018-08-20

참고자료

같이 보기


  검수요청.png검수요청.png 이 락 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.