728x90 전체 글148 [CS] 데이터베이스 트랜잭션 격리 수준과 낙관적 락, 비관적 락의 비교 트랜젝션에 대해서 아직 정확히 모르는 것 같아 정리하고자 한다. 우선 트랜젝션은 무엇일까?? 데이터베이스 트랜잭션(Database Transaction)은 데이터베이스에서 수행되는 작업의 논리적인 단위라고 한다. 이렇게 정의로만 들으면 이해가 잘 안된다. 논리적인 단위? 차라리 사전적 의미인 거래라고 생각하면 편할 것 같다.내가 다른사람한테 송금할때 내 계좌에서 돈이 빠져나가고 다른 사람 계좌에 입금이 되는 작업이 하나로 이루어져야되기에 이런 것을 트랜잭션으로 이해하면 좋은 것 같다. 그래서 이러한 트랜잭션은 4가지 특성이 있는데 아주 유명한 ACID 특성이다. Atomicity (원자성)트랜잭션의 작업들이 모두 수행되거나 전혀 수행되지 않아야 함중간에 오류가 나면 모든 작업이 취소(Rollback).. 2025. 3. 28. [Project] 적절한 풀 사이즈 설정하기 우선적으로 풀이란 무엇이고 왜 해야되는가?? 우선 풀(Pool)이라는 것은 수영장 풀이라고 생각해도 될 것 같다. (유튜브에서 봤었던거같은? 이해가 잘 되었다) 한마디로 우리가 수영장 풀에다 물을 미리 부어놓고 재미있게 놀 듯이 프로그램에서 자원을 미리 생성해두고 관리하는 것을 의미한다.보통 백엔드 관점에서는 2가지로 나뉘는 것 같다. 첫번째는 데이터베이스 커넥션 풀과 쓰레드 풀로 나뉜다. 데이터베이스 커넥션 풀: DB에 연결할 때마다 새 커넥션을 맺는 대신, 일정 수의 커넥션을 미리 만들어 두고 필요할 때 꺼내 쓰는 방식쓰레드 풀: 요청 혹은 작업을 처리할 쓰레드를 매번 새로 생성하지 않고 일정 수의 쓰레드를 유지하며 돌아가게 하는 방식 둘 다 하는 역할은 자원을 미리 생성해두는 건 똑같다. 근데 왜 .. 2025. 3. 26. [Project] Spring 직렬화, 역직렬화 문제 - getWriter() has already been called for this response 프로젝트 진행 중 처음 보는 새로운 에러이다. 정보도 많이 없어서 게시물을 작성한다.2025-02-28T09:25:04.226Z WARN 1 --- [sejong-auth] [io-8080-exec-10] .m.m.a.ExceptionHandlerExceptionResolver : Failure in @ExceptionHandler org.example.backend.common.exception.ExceptionControllerAdvice#handleException(HttpServletRequest, Exception)java.lang.IllegalStateException: getWriter() has already been called for this response at org.apache... 2025. 2. 28. [Project] 게시물 N+1 문제 해결기 (쿼리 40 -> 11 -> 1) 프로젝트 진행 중 게시물을 단순 조회를 테스트해보고 있었는데 쿼리가 하나가 아닌 우다닥 나오고 있었다. 사실 이게 나왔을때 좀 기뻣다. 배운 내용을 드디어 적용해볼 수 있겠구나! 유명한 JPA N+1 문제를 드디어 만난거다. 지금은 단순한 로직이라 빨리 찾을 수 있었다. 현재 board 하나를 단순히 조회하는데 위 사진처럼 긴 쿼리가 날아가는 것을 볼 수 있었다. 엄청 아주 긴 쿼리가 날아가는 것을 볼 수 있다. 40개의 쿼리가 단순 조회로 인해 발생하고 있었다. (2개는 처음 나오는 Hibernate) 이녀석이 왜이렇게 날아가나 찾아보니 아래와 같은 로직때문에 이런일이 발생하는 것을 볼 수 있었다.public static BoardResponse of(Board board) { retu.. 2025. 1. 31. 이전 1 2 3 4 ··· 37 다음 728x90