일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 소프트웨어 시대
- 딥러닝
- 겁나 많아
- 운영체제 서비스
- 공부정리
- 국립과천과학관
- 미래 사회의 단위
- 장치에 할당할 수 없는 NET ID Broadcast주소
- 패킷트레이서 이용
- 운영체제 목적
- 소프트웨어
- 운영체제의 발달 과정
- 운영체제의 미래
- 절차적 사고의 장점
- 선택
- 해결 방안
- 뿌..
- 출력
- 컴퓨터
- 순서도
- 앨런 튜링
- 기계어
- 프로그래밍
- 반복 구조 찾기
- 말 인용
- 절차적 사고
- 운영체제의 기능 1. 자원 관리 기능 2. 시스템 보호 3. 네트워크(통신 기능)
- gensim 3.7.3 설치 오류
- 처리
- 레지스터
- Today
- Total
hye-_
6. 트랜잭션, 병행제어 - 47. 트랜잭션, 병행제어 본문
47. 트랜잭션, 병행제어
1. 트랜잭션의 특성
2. CRUD Matrix
3. 즉각 갱신법
4. 트랜잭션 상태
5. 병행제어
6. Locking
트랜잭션의 정의(Transaction ; 처리과정)
하나의 논리적 기능을 수행하기 위한 하나의 작업 단위이다.
데이터베이스에서 일어나는 연산의 집합이다.
어떤 요청이 있으면 활성화가 된다.
active
부분 완료된 상태
Partially Committed
예) ATM에서 돈을 찾는다.
하나의 트랜잭션 ) 카드 넣기 → 비밀번호 입력 → 출금액 입력 → 지폐계수 확인 → 셧터열림 → 지폐 출금 → 카드 뽑기
- Partially Committed : 지폐출금 → 카드 뽑기 [돈이 나오고 카드가 반납되기 직전]
- committed : 여기에서 정상적으로 카드 뽑기까지 이루어지면 승인완료가 된 상태, 내 통장에 해당하는 내역을 실제로 적용
만약 돈을 세는 과정 중에 ATM이 OFF가 되었다면
이 상태는 나한테 돈도 안 왔고, 카드도 안 왔다. 이 상태에서는 UPS라는 전원공급장치가 ON 되어 돈은 안 나오고 카드 뽑기만 된다. 즉, 실패가 되었을 경우에는 해당 내역이 내 통장에 적용이 되지 않는다.
1. 트랜잭션의 특성 ☆
1. 원자성 (Atomicity)
- 완전하게 수행이 완료되지 않으면 전혀 수행되지 않아야 한다.
- 연산은 Commit, Rollback을 이용하여 적용 또는 취소로 한꺼번에 완료되어야 한다.
- 중간에 하나의 오류가 발생되더라도 취소가 되어야 한다.
2. 일관성 (Consistency)
시스템의 고정 요소는 트랜잭션 수행 전후가 같아야 한다.
즉, 나한테 계좌에 500만 원이 있는데 100만 원을 꺼냈으면 내손에는 100만 원이 있고 통장에는 400만 원이 있어야 된다.
돈을 꺼냈더니 500만 원에서 6천억으로 돈이 말도 안 되게 달라지면 안 된다.
3. 격리성 (Isolation, 고립성)
트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 한다.
4. 영속성 (Durability, 지속성)
트랜잭션의 완료 결과가 데이터베이스에 영구히 기억된다.
즉, 500만 원 중에 100만 원 찾았으니깐 내 계좌에는 계속해서 400만 원이 있어야 된다. 10초 지났더니 애가 500만 원 되고 600만 원이 될 수는 없다. 어떤 액션이 없는 이상은 그냥 Commit 되면 그 금액으로 유지가 되어야 된다.
2. CRUD Matix ☆
데이터베이스에 영향을 주는 생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete) 연산으로 프로세스와 테이블 간에 매트릭스를 만들어서 트랜잭션을 분석하는 도구이다.
즉, 설계할 때 쓰는 도구이다.
테이블 간에 매트릭스
표를 만든다. <학생> 테이블의 학번, 점수, 수강과목, C, R, U, D 각 항목마다 어떤 상황에서 이런 이벤트가 발생하는지에 대한 것을 본다.
학번 | 점수 | 수강과목 | |
C | C | ||
R | R | R | R |
U | U | U | |
D | D | D |
이런 식으로 데이터베이스가 어떤 행위를 하는지에 대한 업무 분석을 하는 것이 CRUD Matrix이다.
C 표시 - 새로운 학생이 들어온다
R 표시 - 읽어올 때 학번, 점수, 과목당 읽어올 수 있어
U 표시 - 학번은 바꿀 수 없고, 점수, 과목은 바꿀 수 있어
D 표시 - DB에서 각각 필드 또는 테이블 대상으로 해서 행위들을 말한다. 학번은 지울 수 없고, 점수, 과목은 지울 수 있다.
업무 프로세스와 데이터 간의 상관관계 분석을 위한 것으로 업무 프로세스와 엔티티타입을 행과 열로 구분하여 행과 열이 만나는 교차점에 이용에 대한 상태를 표시한다.
3. 즉각 갱신법 ☆
데이터를 갱신하면 트랜잭션이 완료되기 전에 실제 데이터베이스에 반영하는 방법이다.
회복 작업을 위해서 갱신 내용을 별도 Log로 기록해야 한다.
그래야지 애내가 어느 단계에서 어떻게 적용이 되었는지 알 수 있기 때문이다.
즉각 갱신을 한 뒤에 만약 어떤 오류가 발생하게 되면
Redo, Undo를 사용하게 된다. (모두 사용 가능하다.)
- Undo : 이거 잘못되었으니깐 되돌려
- Redo : 이거 제대로 되었던 건데 괜히 취소했나 봐 다시 되돌려
트랜잭션의 연산 ☆
1. Commit 연산
트랜잭션 실행이 성공적으로 종료되었음을 선언한다.
2. Rollback 연산
트랜잭션 실행이 실패하였음을 선언한다.
Rollback 연산 : Rollback 연산 수행 후의 상태를 철회(Aborted)라고 한다.
3. Recovery 연산
트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업이다.
4. 트랜잭션의 상태 ☆
1. 활동 (Active)
트랜잭션이 현재 실행 중인 상태를 말한다.
2. 부분 완료 (Partially Committed)
트랜잭션이 마지막 처리를 실행한 뒤 데이터베이스에 그 처리 내용을 적용하기 직전의 상태이다.
3. 완료 (Committed)
부분 완료 상태에서 정상적인 트랜잭션 처리가 이루어져 데이터베이스에 트랜잭션 처리를 적용 완료한 상태이다.
4. 실패 (Failed)
트랜잭션 실행 중 오류로 인해 정상적인 처리가 되지 않아 원자성과 일관성에 문제가 발생하여 더 이상 처리가 불가능한 상태이다.
5. 철회 (Aborted)
트랜잭션 처리 실패를 확인하고 처음 상태로 돌아가는 상태이다.
5. 병행 제어 (Concurrency Control) ☆
동시에 수행되는 트랜잭션들을 일관성 있게 처리하기 위해 제어하는 것이다.
어떤 데이터베이스 테이블 또는 레코드 아니면 필드에 애내를 다른 애들이 접근하지 못하도록 해서 일관성 있게 병행성을 높이는 것이다. 순서대로 줄 세우는 것이다.
예 ) 은행계좌에 접근할 수 있는 방법은 인터넷 뱅킹, ATM, 직불 카드(현금 카드)로 결제할 수 있다.
지금 은행계좌에 500만 원이 있었는데 인터넷 뱅킹으로 100만 원을 인출할 것이다.
이러한 트랜잭션이 진행되는 과정 중에 카드로 술값을 계산한다면?
100만 원이 빠져나가는 과정 중에 카드가 결제가 될까? or 100만원이 빠져나간 다음에 카드가 결제가 될까?
: 답은 100만원이 빠져나간 다음이다. 왜냐하면 과정 중에 카드가 결제가 된다면 일관성, 무결성을 해치기 때문이다.
목적
1. 데이터베이스의 공유를 최대화한다.
2. 데이터베이스의 일관성을 최대화한다.
3. 시스템 활용도를 최대화한다.
4. 사용자에 대한 응답 시간을 최소화한다.
병행 수행의 문제점
갱신하다가 분실, 비완료(되거나) 의존성, 모순성, 연쇄 복귀가 있다.
종류
1. 로킹(DB를 자물쇠로 잠그는 것)
2. 최적 병행 수행
3. 타임스탬프(시간 도장, 도장을 준다 번호표를 주고 기다리라고 한다.)
4. 다중 버전 기법 (동시 접근은 가능하지만 버전 Log를 가지고 나중에 다시 갱신하는 방법)
타임스탬프 ☆
트랜잭션이 DBMS로부터 유일한 타임스탬프 (시간 허가 인증 도장)를 부여받는다.
동시성 제어를 위한 직렬 한 기법으로 트랜잭션 간의 순서를 미리 정하는 방법이다.
6. 로킹(Locking) 특징 ☆
로킹(Locking)은 하나의 트랜잭션이 데이터를 액세스 하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스 할 수 없도록 하는 병행 제어 기법이다.
- 로킹 단위가 커지면 로크의 수가 적어 관리가 쉬워지지만 병행성 수준은 낮아진다.
- 로킹 단위가 작으면 로크의 수가 많아 관리가 어려워지지만 병행성 수준은 높아진다.
로킹 단위
- 로킹의 대상이 되는 객체 (파일, 테이블, 필드, 레코드)의 크기를 로킹 단위라고 한다. 각각 내가 지정하는 거에 따라 달라진다.
- 자물쇠를 잠그는 시간을 의미한다.
관리 예 )
1시간에 로킹단위를 1분 단위로 하여 총 60개의 로크의 수가 나오는 것과
1시간에 로킹단위를 1초 단위로 하여 3,600개의 로크의 수가 나오는 것의 차이점을 생각하면 된다.
로크가 60개 밖에 안되면 관리는 쉬운데 병행 수준은 낮아진다. 왜? 1시간에 60개 밖에 못하니깐
로크가 3,600개면 관리는 어려운데 뱅행 수준은 높아진다. 왜? 1시간에 3,600개의 트랜잭션을 처리할 수 있으므로
보통 DBMS를 구축할 때 해당 DBMS의 로킹 단위를 설정할 수 있게 해 준다.
일반적인 우리가 서버로 사용하는 시스템에서는 동시에 보통 접근할 수 있는 소켓 수를 제한하게 된다.
저렴한 호스팅 같은 경우 30개 아니면 서버 호스팅을 쓴다면 200개 이런 식으로 소켓이 제한이 되고
똑같은 테이블에 접근한다는 가정이 없기 때문에 그 소켓으로 각각 하나씩 로킹 단위가 들어가게 된다.
2단계 로킹 (2-Phase Locking)
- 직렬성은 보장하지만 교착상태 예방은 불가능하다.
- 확장 단계와 축소 단계의 두 단계(Phase)가 있다.
- 각 트랜잭션의 로크 요청과 해제 요청을 2단계로 실시한다.
# 직렬성
트랜잭션을 순서대로 처리하는 것
문제 풀이
1. 데이터베이스에 영향을 주는 생성, 읽기, 갱신, 삭제 연산으로 프로세스와 테이블 간에 매트릭스를 만들어서 트랜잭션을 분석하는 것은?
CRUD Matrix
2. 트랜잭션의 특성 중 다음 설명에 해당하는 것은?
"트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다."
원자성
3. 트랜잭션의 상태 중 트랜잭션의 마지막 연산이 실행된 직후의 상태로, 모든 연산의 처리는 끝났지만 트랜잭션이 수행한 최종 결과를 데이터베이스에 반영하지 않은 상태는?
① Active
② Partially Committed
③ Committed
④ Aborted
2번
4. 데이터베이스 로그(Iog)를 필요로 하는 회복 기법은?
① 즉각 갱신 기법
② 대수적 코딩 방법
③ 타임스탬프 기법
④ 폴딩 기법
1번
5. 다음 설명과 관련 있는 트랜잭션의 특징은?
"트랜잭션의 연산은 모두 실행되거나, 모두 실행되지 않아야 한다."
① Durability
② Isolation
③ Cinsistency
④ Atomicity
4번
'정처기 > 데이터베이스 구축' 카테고리의 다른 글
7. 보안 분산DB - 48. 보안, 분산 DB (0) | 2023.06.09 |
---|---|
5. 관계연산 SQL - 46. DML (0) | 2023.06.09 |
5. 관계연산 SQL - 45. DDL, DCL, VIEW (0) | 2023.06.09 |
5. 관계연산 SQL - 44. 관계대수, 연산자 (0) | 2023.06.07 |
4. 설계 정규화 - 42. DB설계, 정규화 (0) | 2023.05.26 |