다중 버전 동시성 제어(MVCC, Multi-Version Concurrency Control)는 데이터베이스 시스템에서 동시성을 관리하는 기법으로, 트랜잭션이 동시에 실행될 때 읽기 작업과 쓰기 작업이 충돌하지 않도록 여러 개의 데이터 버전을 유지하는 방식입니다.
✅ 장점
❌ 단점
MVCC는 트랜잭션이 많은 환경에서 높은 동시성과 성능을 제공하는 중요한 기법이며, 대부분의 현대적인 데이터베이스에서 사용되고 있습니다.
PostgreSQL에서는 MVCC를 활용하여 트랜잭션이 서로 영향을 주지 않고 실행될 수 있습니다.
BEGIN TRANSACTION;
SELECT * FROM accounts WHERE id = 1;
accounts
테이블에서 id = 1
인 계정 정보를 조회
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance + 100 WHERE id = 1;
COMMIT;
id = 1
계좌의 balance
를 100 증가시킴COMMIT
하면 다른 트랜잭션에서는 변경된 데이터를 볼 수 있음SELECT * FROM accounts WHERE id = 1;
COMMIT;
SELECT * FROM accounts WHERE id = 1;
MySQL의 InnoDB 엔진도 MVCC를 지원하며, 트랜잭션 격리 수준에 따라 동작이 달라짐
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
START TRANSACTION;
SELECT * FROM orders WHERE order_id = 10;
REPEATABLE READ
에서는 트랜잭션이 시작된 시점의 데이터를 계속 읽음START TRANSACTION;
UPDATE orders SET status = 'shipped' WHERE order_id = 10;
COMMIT;
orders
테이블의 order_id = 10
상태를 'shipped'
로 변경SELECT * FROM orders WHERE order_id = 10;
COMMIT;
SELECT * FROM orders WHERE order_id = 10;
status = 'shipped'
데이터를 확인할 수 있음✅ 온라인 뱅킹 시스템
✅ 전자상거래 시스템
✅ 분산 데이터베이스 및 클라우드 시스템
MVCC는 데이터베이스 성능을 향상시키면서도 데이터 정합성을 보장하는 중요한 기법이며, 트랜잭션이 많은 환경에서 매우 유용하게 활용됩니다.
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…