ssung_항해일지/항해99_실전 프로젝트

실전 프로젝트 - 27일차

ssungcohol 2023. 4. 6. 22:42

오늘은 동시성 문제에 대해서 알아보자~


동시성 문제 (Concurrency Issue)

  • 동시성 문제란 두 개 이상의 세션이 공통된 자원에 대해서, 모두 읽고 쓰는 작업을 하려고 하는 경우에 발생할 수 있는 문제를 말한다.
더보기

동시성(Concurrency) 이란?

하나의 CPU코어에서 시간분할(Time sharing)을 통하여 여러 일을 처리하는 것처럼 보여지게하는 기법

하지만, 일반적으로 여러 요청이 동시에 동일한 자원에 접근하여 수정하려는 것을 의미

그렇다면 왜 동시성 문제가 일어나는가?

  • 여러 요청들이 한 자원을 공유할 때, 분산된 DB의 동기화가 여러 요청의 동시화 속도를 못 따라가는 상황이 발생
  • 이에 따라 데이터 정합성을 깨지고, 데이터 동시성 문제가 발생
  • 예를 들면, 한정된 수량에 대해서 한 번에 여러 구매 요청이 들어왔을 때, 커밋이 여러 수량이 되거나 롤백되는 수량 동기화를 다른 서버가 따라가지 못해서 정합성이 깨지고 동시성 문제가 발생할 수 있다.

동시성 문제 현상

  1. 갱신 분실 (Lost update) : 트랜잭션들이 동일한 데이터를 동시에 갱신하는 경우에 발생하거나 이전 트랜잭션이 데이터를 갱신한 후 트랜잭션이 종료하기 전에 나중 트랜잭션이 동일한 데이터를 갱신하여 값을 덮어쓰는 경우에 발생
  2. 연쇄 복귀 (Cascading rollback) or 회복 불가능 (Unrecoverability) : 여러 개의 트랜잭션이 데이터를 공유할 때, 트랜잭션이 이전 상태로 복귀(rollback)할 경우 아무 문제 없는 다른 트랜잭션까지 연달아 복귀하게 되는 문제를 말함.
    이때, 한 트랜잭션이 이미 완료된 상태라면 트랜잭션의 지속성 조건에 따라 복귀 불가능
    (※ 지속성 : 트랜잭션이 성공적으로 완료되면 그 트랜잭션이 갱신한 DB의 내용은 영구적으로 저장되야하는 조건)
  3. 불일치 분석 (Inconsistent analysis) : 여러 개의 트랜잭션이 동시에 실행할 때 끼어들기로 인해 트랜잭션의 일관성이 유지되지 못하는 상황
    (※ 일관성 : 트랜잭션이 실행되기 전과 후의 데이터베이스 내용이 일관되게 유지되는 특성)

동시성 문제의 현상 중 크게 불일치 분석갱신 분실이 꼽힌다.


불일치 분석

세션 2는 동시에 실행되고 있는 세션 1 때문에, 데이터에 접근하는 시점마다 다른 값을 읽게 된다. 이것을 불일치 분석이라 한다.

 

갱신 분실

세션 1보다 늦게 시작한 세션 2에 의해 세션 1의 변경사항이 무시되는 현상을 갱신 분실이라고 한다.

DB, JPA 애플리케이션, 비지니스 시스템에서 모두 중요하게 고려되어야하는 문제이다.


동시성 문제가 발생하게 되는 코드를 Thread-safe 하지 못한 코드라고 부를 수 있다.

Thread-safe 란?

  • Thread-safe(스레드 안전)는 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 말함.
  • 엄밀하게 말하면, 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서 함수의 수행 결과가 올바르게 나오는 것을 말한다.

동시성 제어 (Concurrency Control)

동시성 제어란?

  • 다중 사용자 환경을 지원하는 DB 시스템에서 동시에 샐행되는 여러 트랜잭션 간의 간섭으로 문제가 발생하지 않도록 트랜잭션의 실행 순서를 제어하는 기법을 말한다.
    (※ 트랜잭션 : DB의 논리적 작업 단위)

동시성 제어의 정의

  • 다중 사용자 환경을 지원하는 DB 시스템에서 여러 트랜잭션들이 성공적으로 실행될 수 있도록 지원하는 기능
  • 다중 사용자 환경을 지원하는 DB 시스템의 경우 필수적으로 지원해야 하는 기능으로 병행제어 라고도 한다.
  • 트랜잭션의 직렬화 수행을 보장

 

동시성 제어의 목적

  • 트랜잭션의 직렬성 보장
  • 공유도 최대, 응답 시간 최소, 시스템 활동의 보장
  • 데이터의 무결성 및 일관성 보장
728x90