[DB] 동시성 제어(concurrency control) (1): serial/nonserial schedule, conflict equivalent, conflict serializable

2024. 1. 8. 19:00· Computer Science/Database
목차
  1. 💋 serial schedule VS nonserial schedule
  2. ✔️ Schedule
  3. ✔️ Serial Schedule
  4. ✔️ Nonserial Schedule
  5. 💋 conflict
  6. ✔️ 개념
  7. ✔️ conflict equivalent
  8. ✔️ conflict serializable
  9. 💋 참고자료
반응형
반응형

 

 

Computer Science 모아보기 👉🏻 https://github.com/seoul-developer/CS

 

GitHub - seoul-developer/CS: 주니어 개발자를 위한 전공 지식 모음.zip

주니어 개발자를 위한 전공 지식 모음.zip. Contribute to seoul-developer/CS development by creating an account on GitHub.

github.com

 

💋 serial schedule VS nonserial schedule

✔️ Schedule

  • 여러 트랜잭션들이 동시에 실행될 때, 각 트랜잭션이 속한 operation들의 실행 순서
  • 각 트랜잭션 내 operation들의 순서는 바뀌지 않는다.

 

https://www.youtube.com/watch?v=DwRN24nWbEc&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=15

 

✔️ Serial Schedule

  • 각 트랜잭션들이 겹치지 않고 한 번에 하나씩 실행되는 스케줄
  • 하나씩 차례대로 수행되므로 이상한 결과가 나오지 않는다.
  • 한 번에 하나의 트랜잭션만 실행되고, 따라서 i/o 작업 때마다 cpu가 놀고 있기 때문에 성능은 구리고 현실적으로 사용할 수 없다.

 

https://www.youtube.com/watch?v=DwRN24nWbEc&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=15

 

✔️ Nonserial Schedule

  • 트랜잭션들이 겹쳐서 실행되는 스케줄
  • 동시성이 높아져서 같은 시간 동안 더 많은 트랜잭션들을 처리할 수 있다.
  • 하지만, 트랜잭션들이 어떻게 순서가 얽혀 있느냐에 따라서 이상한 결과가 나올 수도 있다.

 

https://www.youtube.com/watch?v=DwRN24nWbEc&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=15

 

성능 때문에 nonserial schedule을 실행하면셔도, 이상한 결과가 나오는 것을 막기 위해서는 어떻게 할까?

nonserial schedule의 결과가 serial schedule의 결과와 같도록 하면 된다.

 

그러기 위해서는 순서에 따라서 결과가 달라지게 하는 것이 무엇인지 알아봐야 하는데, conflict다.

💋 conflict

✔️ 개념

  1. 서로 다른 트랜잭션 소속이
  2. 같은 데이터에 접근하면서
  3. 최소한 하나는 write operation인 경우

⇒ conflict라고 한다.

 

https://www.youtube.com/watch?v=DwRN24nWbEc&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=15

 

위에서 conflicting operation은 총 3쌍이다.

 

  • conflict operation은 순서가 바뀌면 결과가 바뀐다.

 

✔️ conflict equivalent

  1. 두 스케줄이 같은 트랜잭션을 가지면서
  2. 모든 confliting operation의 순서가 동일하면,

⇒ 두 스케줄은 conflict equivalent하다.

 

https://www.youtube.com/watch?v=DwRN24nWbEc&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=15

 

위 스케줄에는 3가지 conflict가 있다.

스케줄 3, 스케줄 2에서 conflict 순서가 모두 같다.

 

  • r2(H) ⇒ w1(H)
  • w2(H) ⇒ r1(H)
  • w2(H) ⇒ w1(H)

 

그중 스케줄 2는 serial schedule이므로 이상한 결과가 나오지는 않는다.

그런데 결과를 이상하게 할 수 있는 conflict 3가지에 대해서 스케줄 3도 모두 serial schedule인 스케줄 2와 순서가 동일하다.

스케줄 2와 스케줄 3의 결과는 같다.

⇒ 스케줄 3과 스케줄 2는 conflict equivalent하다.

 

✔️ conflict serializable

serial schedule과 conflict equivalent한 nonserial schedule은 conflict serializable하다!

 

성능 때문에 nonserial schedule을 실행하면셔도, 이상한 결과가 나오는 것이 싫다면,

⇒ conflict serializable한 nonserial schedule을 허용하면 된다!

 

💋 참고자료

  • https://www.youtube.com/watch?v=DwRN24nWbEc&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=15

 

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!

 

반응형

'Computer Science > Database' 카테고리의 다른 글

[DB] SQL Injection: SELECT * FROM users WHERE username = '' OR '1'='1'; --' AND password = '' OR '1'='1';  (4) 2024.01.09
[DB] 동시성 제어(concurrency control) (2): recoverability, recoverable/cascadeless/strict schedule  (0) 2024.01.08
[DB] 트랜잭션 ACID란? (Atomicity, Consistency, Durability, Isolation)  (0) 2024.01.06
[DB] Stored Procedure: 백엔드에서 잘 사용하지 않는 이유 (개념, 예시, 장단점 정리!)  (2) 2024.01.05
[DB] Stored Function: 언제 사용하는 게 좋을까? (개념과 예시, 명령어 정리!)  (0) 2024.01.04
  1. 💋 serial schedule VS nonserial schedule
  2. ✔️ Schedule
  3. ✔️ Serial Schedule
  4. ✔️ Nonserial Schedule
  5. 💋 conflict
  6. ✔️ 개념
  7. ✔️ conflict equivalent
  8. ✔️ conflict serializable
  9. 💋 참고자료
'Computer Science/Database' 카테고리의 다른 글
  • [DB] SQL Injection: SELECT * FROM users WHERE username = '' OR '1'='1'; --' AND password = '' OR '1'='1';
  • [DB] 동시성 제어(concurrency control) (2): recoverability, recoverable/cascadeless/strict schedule
  • [DB] 트랜잭션 ACID란? (Atomicity, Consistency, Durability, Isolation)
  • [DB] Stored Procedure: 백엔드에서 잘 사용하지 않는 이유 (개념, 예시, 장단점 정리!)
깃짱
깃짱
연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
반응형
깃짱
깃짱코딩
깃짱
전체
오늘
어제
  • 분류 전체보기
    • About. 깃짱
    • Weekly Momentum
      • 2024
    • PROJECT
      • AIGOYA LABS
      • Stamp Crush
      • Sunny Braille
    • 우아한테크코스5기
    • 회고+후기
    • Computer Science
      • Operating System
      • Computer Architecture
      • Network
      • Data Structure
      • Database
      • Algorithm
      • Automata
      • Data Privacy
      • Graphics
      • ETC
    • WEB
      • HTTP
      • Application
    • C, C++
    • JAVA
    • Spring
      • JPA
      • MVC
    • AI
    • MySQL
    • PostgreSQL
    • DevOps
      • AWS
      • 대규모 시스템 설계
    • frontend
      • HTML+CSS
    • NextJS
    • TEST
    • Industrial Engineering
    • Soft Skill
    • TIL
      • 2023
      • 2024
    • Linux
    • Git
    • IntelliJ
    • ETC
      • 日本語

블로그 메뉴

  • 홈
  • 깃허브

인기 글

최근 글

태그

  • OOP
  • 우테코5기
  • 예외
  • 컴포지션
  • 조합
  • 상속
  • 우아한테크코스
  • 스트림
  • 우아한테크코스5기
  • lamda
  • 우테코
  • Stream
  • 레벨로그
  • 함수형프로그래밍
  • TDD
  • 람다와스트림
  • Java
  • 상속과조합
  • Composition
  • 람다
hELLO · Designed By 정상우.v4.2.0
깃짱
[DB] 동시성 제어(concurrency control) (1): serial/nonserial schedule, conflict equivalent, conflict serializable
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.