2025/05 13

[트랜잭션 완전정복] 2편 - 트랜잭션 고립 수준(트랜잭션 격리 수준, Transaction Isolation Level)

우리는 이전 글을 통해, 트랜잭션이 정확히 무엇인지와, 트랜잭션 과정에서 발생할 수 있는 문제들에 대해 이해할 수 있었다.이번 글에선, DB에서 정의하는 추상적인 개념인 Transaction Isolation Level에 대해 구체적으로 알아보도록 하자.이 글은 ACID에 대해 어느정도 개념이 잡혀있는 독자를 기준으로 작성되었다.(다음 편에 ACID에 대해 좀 더 자세히 다룰 예정이다.)주요 용어격리성직렬성스냅샷 격리충돌(Conflict)충돌 동등공유 잠금(Shared Lock)배타 잠금(Exclusive Lock)직렬화 가능(Serializable)반복가능한 읽기(Repeatable Read)커밋된 읽기(Read Committed)커밋되지 않은 읽기(Read Uncommitted)DB 트랜잭션 과정의 ..

[트랜잭션 완전정복] 1편 - 진정한 의미의 트랜잭션(Transaction)이란?

습관적으로 우리가 사용하는 DB 트랜잭션이라는 용어가 아닌, WAS가 작업하는 단위인 "트랜잭션" 그 자체의 정의와 동작 방식에 집중하여, 다양한 곳에 적용할 수 있는 기준을 가져보자.주요 용어비즈니스 트랜잭션시스템 트랜잭션충돌경쟁 상태락 경합데드락오프라인 트랜잭션트랜잭션(Transaction)이란?트랜잭션이란?클라이언트와 서버 간에, 요청을 주고 응답을 받는 하나의 작업의 단위를 정의한 것.주어진 요청에 대하여, 서버 내부의 상태를 변화시키거나, 적절한 응답을 반환하는 것을 목표로 한다.이를 "비즈니스 트랜잭션" 이라고 부르겠다.DB에서의 트랜잭션작업의 단위를 보장하려고 하니, 하나의 작업처럼 다루고, 이를 영속성 저장소에 저장할 필요가 있었다.하지만, 이 비즈니스 트랜잭션을 위한 인프라 로직을 매번 ..

SQL 쿼리의 동작 순서와 기본적인 동작 원리

SQL 문법의 동작 순서 외우는 법게토레이랮혼애ㅣfowghsdol각 문법의 첫글자를 딴 형태로 만든 암기 방식이다.실제 동작 순서는 다음과 같다.fromon(join)wheregroup byhavingselectdistinct, unionorder bylimit/offsetFrom쿼리의 작업 대상이 되는 기본 테이블을 결정한다.최초 쿼리가 동작할 테이블/뷰/파티션/서브쿼리가 정확히 어딘지를 결정한다.On(Join)조인 순서 최적화조인 알고리즘 선택별도의 글로 작성해야 함. 깊이가 깊음. (작성예정)WhereFROM/Join 절로 생성된 모든 행에 대해 필터링을 수행한다.인덱스를 사용 가능한 (sargable) 조건들에 대하여, 인덱스를 사용하여 탐색한다.집계함수를 사용할 수 없다.select 절에서 정의..

CS Repository/DB 2025.05.01