썸네일 테스트에 임베디드 DB 쓰지 말라니까 케이랑 함께 집넘기기 프로젝트를 진행하면서, 그동안 제대로 해보지 못했던 것들을 차근차근 시도하면서 또 여러 시행착오를 거치는 중이다. 그 중에서도 역시 꽃은 테스트라고 할 수 있겠다. 이번에도 역시나 밑도끝도 없(는 것처럼 보이는) 문제가 터져서 좀 당황했었는데, 생각보다 꽤 흥미롭고 재미있는 주제라서 정리해 본다. 문제의 시작 더미 데이터를 담은 data.sql를 정의해 주고, 일단 테스트용 DB는 임베디드 인메모리 DB(H2)를 쓰기로 했다. 사실상 이게 문제의 시작이라고 보면 된다. INSERT INTO rent_article (rent_article_id, address ...) VALUES ('1', '서울특별시 성동구', ...), ('2', '서울특별시 성동구', ...), ('3', '서..
썸네일 백만 개 row를 수정하다가 트랜잭션을 롤백한다면? 요새 Hussein Nasser이라는 유쾌한 개발자 아조시의 Fundamentals of Database Engineering이라는 강의를 듣고 있는데, (엄청 재밌다!) 인덱스/트랜잭션 파트에서 꽤 재미있는 질문을 던지는 아티클을 읽었다. 아래는 아티클과 비슷한 내용을 담고 있는 이 아조시의 유튜브 비디오. 아조시 사는 데 어딘지 모르겠지만... 좋아 보이시네요 요약하자면, 엄청 많은 개수의 row를 수정하는 트랜잭션을 돌리다가 에러가 나서 해당 변경사항을 롤백하려면 시간이 많이 걸릴 텐데, 과연 DB는 어떻게 이 작업을 수행할까? 하는 질문이었다. 바로(Eagerly) 롤백하기 Lazy하게 롤백하기 DBMS마다 접근 방식이 다른데, 우선 해당 강의에서 주로 예시로 들고 있는 PostgreSQL에서는 ..