개발/MySQL

    [MySQL] MySQL 동시성 처리(2) - 트랜잭션의 고립성 보장을 위한 격리 수준과 MVCC

    목표 MySQL의 동시성 처리를 위한 격리 수준과 MVCC에 대해서 알아보겠습니다. 개요 이전 포스팅에서 DB의 Lock에 대해서 알아보았습니다. [MySQL] MySQL 동시성 처리(1) - LOCK 목표 MySQL의 동시성 처리를 위한 Lock에 대해서 알아보겠습니다. 개요 최근 프로젝트를 진행하면서 배포를 앞에 두고 가장 큰 관심사는 동시성 처리입니다. 사용자가 늘어날수록 동시 요청이 많 chanos.tistory.com 이어서 트랜잭션의 고립성 보장을 위한 격리 수준과 MVCC에 대해서 알아보도록 하겠습니다. 트랜잭션 격리 수준 트랜잭션은 작업 단위를 뜻합니다. DB의 값을 업데이트하거나 조회하는 등의 작업의 범위를 지정하는 것입니다. 이렇게 작업 단위를 지정하는 이유는 트랜잭션이 ACID를 보장..

    [MySQL] MySQL 동시성 처리(1) - LOCK

    목표 MySQL의 동시성 처리를 위한 Lock에 대해서 알아보겠습니다. 개요 최근 프로젝트를 진행하면서 배포를 앞에 두고 가장 큰 관심사는 동시성 처리입니다. 사용자가 늘어날수록 동시 요청이 많아질 것입니다. 현재 백엔드는 Spring boot로 구성되어 요청마다 스레드가 할당됩니다. 이 말은 즉, 여러 스레드가 한 DB에 동시에 요청을 보낸다는 뜻입니다. DB에 여러 요청에 동시에 들어왔을 때, 데이터 정합성을 보장함과 동시에 성능에 영향을 주지 않도록 하는 방법에 대해서 알아보려고 합니다. 가장 먼저, 데이터 정합성을 보장하기 위한 Lock에 대해서 알아보겠습니다. Lock의 설정 범위 Lock(락)은 여러 트랜잭션이 동시에 처리될 때 데이터의 무결성을 보장하기 위한 수단입니다. 한 트랜잭션이 처리되..