코딩요
쉬운코드 기술 블로그
코딩요
전체 방문자
오늘
어제
  • 분류 전체보기 (54)
    • 개발자로 성장하기 (11)
    • 컴공 (25)
      • 운영체제 (12)
      • 알고리즘 (1)
      • 데이터베이스 (11)
      • 네트워크 (1)
    • 쉬운코드 (15)
      • 쉬운코드 소개 (6)
      • 쉬운코드 영상 보는 법 (3)
      • 쉬운코드 정정 보고서 (1)
      • 쉬운코드 스토리 (4)
      • 기타 이것저것 (1)
    • 면접 tip (3)

공지사항

  • 아이폰 앱에서는 슈퍼땡스 보내지 말아주세요ㅠㅠ
  • 쉬운코드 멤버십을 소개합니다
  • 쉬운코드 운영 철학

인기 글

hELLO · Designed By 정상우.
글쓰기 / 관리자
코딩요

쉬운코드 기술 블로그

트랜잭션 영상들 전체 흐름 파악하기
쉬운코드/쉬운코드 영상 보는 법

트랜잭션 영상들 전체 흐름 파악하기

2022. 10. 3. 00:59

* 이 글은 쉬운코드에 올린 트랜잭션 영상들이 개념적으로 어떻게 연결되는지 전체 그림을 설명하기 위한 목적으로 작성했습니다


* 위에서 아래 순서로 영상을 보는 것을 추천합니다

 

 

 

 

Transaction & ACID 

 

먼저 트랜잭션이 무엇인지부터 설명한다

데이터베이스에서 여러 작업을 하나의 단위로 묶어서 처리할 수 있도록 하는 것이 transaction 사용 목적이라서 이 개념을 정확히 이해하는 것이 중요하다

그리고 트랜잭션의 속성인 ACID에 대해 설명한다

ACID는 너무나도 기본적이면서도 중요한 개념이기 때문에 잘 알고 있는 것이 중요하다

 

👉👉👉 Transaction & ACID 영상 보러 가기

 

 

 

 

 

 

Serializability

 

ACID 중에서도 특히 Isolation은

여러 트랜잭션들이 동시에 실행돼도

마치 각각이 격리되어 실행되는 것처럼 다른 트랜잭션들로부터 영향을 받지 않고 동작하는 것을 의미하는데

이를 보장하기 위한 속성이 serializability이다

트랜잭션의 Isolation을 온전히 보장하기 위해서는 DBMS의 concurrency control이 serializability를 제공해야 한다

serializability를 제공하지 못하면 여러 트랜잭션들이 동시에 실행될 때 예상과는 다른 이상한 결과들이 발생할 수 있다

serializability는 엄밀히 말하면 schedule의 속성이다

그렇기 때문에 serializability 영상에서는 schedule 개념부터 serializability 개념까지 관련 개념들을 자세히 다룬다

 

👉👉👉 Serializability 영상 보러 가기

 

 

 

 

 

 

 

Recoverability

 

온전한 isolation을 위해 중요한 것은 serializability만 있는 것이 아니다

한 트랜잭션이 rollback 했을 때 다른 트랜잭션이 영향을 받지 않는 것 또한 isolation에 있어서 중요한 관심사이며

이를 위해 DBMS는 recoverability 속성 또한 제공을 해야 한다

recoverability 또한 엄밀히 말하면 schedule의 속성이다

recoverability 영상을 통해 여러 트랜잭션들이 실행되는 상황에서 어떻게 제대로 롤백할 수 있는지 다루게 된다

 

👉👉👉 Recoverability 영상 보러 가기

 

 

 

 

 

Isolation level

 

트랜잭션의 isolation이 제대로 유지되려면

여러 트랜잭션들이 동시에 실행되더라도 이상한 결과들이 발생하지 않게끔,

즉 serializability와 recoverability가 보장될 수 있게끔 해야 하지만 

그렇게 했을 때 단점은 동시에 처리할 수 있는 트랜잭션의 수가 줄어들어서 DBMS의 퍼포먼스가 하락한다는 것이다

이를 해결하기 위해 DBMS의 concurrency control은 여러 종류의 isolation level을 제공해서

개발자가 데이터 정합성과 성능 사이에서 어느 정도 트레이드 할 수 있도록 한다

해당 영상에는 isolation level의 개념과 종류, 그리고 isolation이 완벽히 보장되지 않을 때 나타날 수 있는 여러 이상한 현상들을 소개한다

 

👉👉👉 Isolation level 영상 보러 가기

 

 

 

 

 

 

Lock & 2PL

 

concurrency control은 serializability, recoverability, 그리고 이와 관련된 isolation level을 제공한다

그렇다면 DBMS에서 어떻게 concurrency control을 구현할 수 있을까?

해당 영상에서는 concurrency control 구현에 기본이 되는 락(lock)의 개념과 종류를 설명한다

그리고 serializability를 보장하는 2PL의 개념과 종류를 설명한다

이 중에는 recoverability까지 보장하는 2PL 들도 포함되어 있다

 

👉👉👉 Lock & 2PL 영상 보러 가기

 

 

 

 

 

 

 

 

MVCC

 

오늘날 대부분의 DBMS는 락(lock)만 활용해서 concurrency control을 구현하지 않는다

락만 사용해서 구현하게 되면

서로 다른 트랜잭션이 같은 데이터에 대해서 write-write, read-write, write-read를 하는 경우에 한쪽이 블락(block)되기 때문에

동시에 처리할 수 있는 트랜잭션 수가 줄어들어 성능이 감소하게 된다

이를 해결하기 위해 나온 것이 MVCC이고 오늘날의 거의 모든 DBMS가 MVCC를 사용해서 concurrency control을 구현/제공한다

해당 영상에서는 MVCC의 개념을 살펴보고

MVCC를 사용하는 MySQL과 postgreSQL의 예제를 통해 각 isolation level에서 어떤 이상한 현상이 발생할 수 있으며

이런 문제들을 어떻게 해결할 수 있는지 살펴 본다

 

👉👉👉 MVCC 1부 영상 보러 가기

 

👉👉👉 MVCC 2부 영상 보러 가기

 

 
저작자표시 비영리 변경금지
    '쉬운코드/쉬운코드 영상 보는 법' 카테고리의 다른 글
    • 운영체제 영상들 전체 흐름 파악하기
    • 동기화 관련 영상 전체 흐름 파악하기
    코딩요
    코딩요
    8년차 백엔드 개발자가 이해하기 쉽게 설명합니다. 배워서 남주는 블로그! 이해하기 쉬운 기술 블로그! 쉬운코드입니다 :)

    티스토리툴바