일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 기본 속성
- 결합 연산
- 파생 속성
- 제이쿼리text
- 연속성
- 집합 연산
- 관계 연산
- 자바스크립트innerText
- 발생시점에 따른 엔터티의 종류
- java
- 복합 속성
- JAVA JVM
- 자바스크립트경고창
- 단일 속성
- alert경고창
- 설계 속성
- 트랜잭션의 특성
- 자바JVM
- 다중값 속성
- 고립성
- sql
- SQL문의 실행 순서
- Oracle
- 오라클
- 속성의 특징
- css 선택자
- 테이블의 구조
- 속성의 종류
- 유형과 무형에 따른 엔터티 종류
- SQL 종류
Archives
- Today
- Total
wms's Programming&Study
DataBase lock 종류 본문
DataBase는 데이터를 영속적으로 저장하고 있는 시스템
이런 시스템은 같은 자원(데이터)에 대해서 동시에 접근하는 경우가 생길 수 밖에 없다.
이럴 경우 데이터가 오염 될 수 있는데 그렇게 되지 않도록 데이터의 일관성과 무결성을 유지해야할 필요가 있다.
예를 들어 수강신청 시스템에서 1명만이 정원으로 남게되었다.
여기서 2사람이 거의 동시에 버튼을 눌렀습니다. 성공은 1명만 되야한다.
이런 상황에서 DBMS(DataBase Management System)가 사용하는 공통적인 방법이 Lock
Lock
Lock이란 트랜잭션 처리의 순차성을 보장하기 위한 방법
트랜잭션이란 DB의 나누어지지 않는 최소한의 처리 단위
그리고 중요한 것은 DBMS마다 Lock을 구현하는 방식과 세부적인 방법이 다르다
따라서 DBMS를 효과적으로 이용하기 위해서는 해당 DB의 Lock에 대한 이해가 요구된다.
Lock의 종류
Lock의 종류로는 공유(Shared) Lock과 베타(Exclusive) Lock이 있다.
공유락은 다른 말로 Read Lock이라고 불리며 베타락은 Write Lock이라고도 불린다.
공유(Shared) Lock
공유 Lock은 데이터를 읽을 때 사용되어지는 Lock
이런 공유 Lock은 공유 Lock 끼리는 동시에 접근이 가능하다
즉, 하나의 데이터를 읽는 것은 여러 사용자가 동시에 할 수 있다라는 것.
하지만 공유 Lock이 설정된 데이터에 베타 Lock을 사용할 수는 없다.
베타(Exclusive) Lock
베타 Lock은 데이터를 변경하고자 할 때 사용되며, 트랜잭션이 완료될 때까지 유지된다.
베타락은 Lock이 해제될 때까지 다른 트랜잭션(읽기 포함)은 해당 리소스에 접근할 수 없다.
또한 해당 Lock은 다른 트랜잭션이 수행되고 있는 데이터에 대해서는 접근하여 함께 Lock을 설정할 수 없다.
Lock의 설정 범위(Level)
데이터베이스
데이터베이스 범위의 lock은 전체 데이터베이스를 기준으로 lock 하는 것.
즉, 1개의 세션만이 DB의 데이터에 접근이 가능합니다. 해당 기능은 일반적으로는 사용하지 않는다.
사용하는 때가 있다면 DB의 소프트웨어 버전을 올린다던지 주요한 DB의 업데이트에 사용한다.
파일
데이터베이스 파일을 기준으로 lock을 설정한다.
파일 이란 테이블, row 등과 같은 실제 데이터가 쓰여지는 물리적인 저장소
해당 범위의 Lock은 잘 사용되지는 않는다.
테이블
테이블 수준의 Lock은 테이블을 기준으로 Lock을 설정한다.
이는 테이블의 모든 행을 업데이트 하는 등의 전체 테이블에 영향을 주는 변경을 수행할 때 유용하다.
즉, DDL(create, alter, drop 등) 구문과 함께 사용되며 DDL Lock이라고도 한다.
페이지와 블럭
파일의 일부인 페이지와 블록을 기준으로 Lock을 설정합니다. 잘 사용되지는 않는다.
컬럼
컬럼 기준의 Lock은 컬럼을 기준으로 Lock을 설정할 수 있다.
하지만 이 형식은 Lock 설정 및 해제의 리소스가 많이 들기 때문에 일반적으로 사용되지는 않는다.
지원하는 DBMS도 많지 않다.
행(Row)
행 수준의 Lock은 1개의 행(Row)를 기준으로 Lock 설정
DML에 대한 Lock으로 가장 일반적으로 사용하는 Lock 이다.
reference
'데이터베이스' 카테고리의 다른 글
트랜잭션(Transaction) (0) | 2021.10.15 |
---|---|
트랜잭션 격리수준 (0) | 2021.10.09 |
[데이터베이스] 오라클 oracle 12c 설치 및 확인 (0) | 2019.09.16 |