본문 바로가기

2

[DB] 트랜잭션과 락 간략 정리 트랜잭션트랜잭션은 애플리케이션 개발 입장에서, 고민해야 할 문제를 풀어주는 필수적인 DBMS 의 기능.트랜잭션 사용 시 주의사항DBMS 의 커넥션과 동일하게 꼭 필요한 최소의 코드에만 적용하는 것이 좋다. 트랜잭션의 범위를 최소화하라는 의미. 각 단위프로그램이 커넥션을 소유하는 시간이 길어질 수록 사용 가능한 여유 커넥션의 개수는 줄어든다. 메일 전송이나, 파일 전송 작업 등, 네트워크를 통해 원격 서버와 통신하는 작업은 트랜잭션 내에서 제거하라. 웹 서버뿐 아니라 DBMS 서버까지 위험한 상황 발생 저장 데이터의 단순 조회의 경우도 트랜잭션에 포함할 필요가 없다.락레코드 락레코드 자체만을 잠그는 것 InnoDB 스토리지 엔진은 레코드 자체가 아니라, 인덱스의 레코드를 잠근다. 인덱스가 없을 경우, 내부.. 2024. 6. 27.
2022.06.02 「DB 동시성 문제」 자바 기반 웹 프로그램은 기본적으로 멀티스레딩을 기반으로 하기 때문에, 동시성 관련 문제를 잘 해결해야 한다고 들었다. 이번에 내가 하는 쇼핑몰 프로젝트에서도 그 이슈가 딱 터졌다. 예를 들어 몇 만 명이 한정된 재고의 상품을 주문하려고 할 때? 수많은 멀티스레드는 데이터의 재고량을 조회하며 재고가 떨어졌으면 예외를 발생시키면 된다. 하지만 동시에 접근하면? 이거 난감하다. 이 문제에 대한 고찰을 작성하겠다. DB 동시성 문제 동시에 DB를 조회할 때가 문제이다. 내가 사용하는 DBMS는 Mysql Mysql은 기본적으로 트랜잭션의 격리 수준으로 Level 2 Repeatable Read를 사용하고 있다. 언두 영역을 통한 다양한 버전 별 MVCC를 통해 버전에 맞는 값을 조회할 수 있다. 하지만 모든 .. 2022. 6. 2.
반응형