격리수준3 [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. 2022.04.26의 기록 ▶ 파트 1 (10시 ~ 11시 10분) 1. 테스트 코드 최종 수정 2. 추후 계획 정리 3. 보건증 발급 및 알바 준비 ▶ 파트 2 (3시 ~ 12시) 1. 스프링 부트 프로젝트 생성 후 깃 연동 (이건 이제 안 까먹겠다..) 2. 자기소개서 수정 3. mysql 질문 정리 및 CH 8, 9(9.2.3 전까지) 정리 4. 알고리즘 고득점 키트 - 해시 5. mysql workbench 설치 ▶ 최근 이슈 1. 시간 부족 => 학원 수료해서 시간이 많이 날줄 알았는데 생각보다 적은 것 같다.. > 원인 : 운동 갔다 오는 시간, 알바 시간 > 해결 : 1시간만 더 일찍 일어나 보자, 운동은 짧고 굵게. 2. 테스트 코드 => 자바 프로젝트 후 테스트 코드를 작성하며 TDD 방식을 조금이나마 깨닫게 되었.. 2022. 4. 26. 이전 1 다음 반응형