본문 바로가기
반응형

전체 글117

테스트 커버리지 100% 달성기[3] - 테스트 코드 가독성 개선 테스트 커버리지 100% 달성기[1] - 레이어별 100% 달성 과정테스트 커버리지 100% 달성기[2] - 테스트 환경 구축 및 시간 단축테스트 커버리지 100% 달성기[3] - 테스트 코드 가독성 개선1편과 2편에서 커버리지 100% 달성, 테스트 환경 구축, 테스트 코드 성능 개선을 다루었다.많은 시간 공을 들여 작업을 하다 보니 내가 해왔던 방식이 맞는지 검증도 하고 싶었고, 그동안 다루지 않았던 부분을 개선하고 싶기도 하였다. 무엇 보다 나는 아래 두 가지에 대해 검증 하고 싶었다. 커버리지 100%가 prod 코드에 결함이 없다는 것을 보장할 수 있는지가독성 : 테스트 코드가 prod 코드를 잘 설명하고 있는지정답을 낼 수는 없겠지만 항상 위 두 부분에 부족함이 있다고 전제 하고 이 부분을 리.. 2025. 2. 19.
mysql 아키텍쳐[2] - 버퍼풀 버퍼풀 자료구조버퍼풀은 여러개의 데이터 페이지로 이루어져 있다.버퍼풀은 메모리 공간에 존재하기에 무한정 많은 데이터를 담고 있을 수 없다.사용하지 않는 데이터는 제거되야한다.버퍼풀에서 사용되는 자료구조를 살펴보자. LRU(Least Recently Used) 리스트 : 가장 오래동안 사용되지 않은 데이터 페이지 제거New 서브리스트- MRU(Most Recently Used) 알고리즘을 통해 가장 많이 읽힌 데이터들이 존재하는 공간- 버퍼풀의 데이터를 읽어들이면 해당 데이터는 리스트의 머리부분으로 이동한다.Old 서브리스트 - LRU 알고리즘이 사용되는 공간으로 오랫동안 읽히지 않는 데이터 관리- 오랫동안 사용되지 않은 데이터는 나이가 증가하고 꼬리 부분으로 이동된다.데이터를 디스크에서 처음 버퍼풀로 가.. 2025. 2. 7.
mysql 아키텍쳐[1] - 아키텍쳐, 언두로그, 리두로그 * 이글은 RealMysql 책을 참고하여 작성한 내용입니다.db 성능은 디스크 접근횟수에 달려있다. 일반적으로 메모리는 디스크보다 1000~1만 배 빠르다.최대한 메모리에서 많은 작업을 하고 디스크 접근을 최소화해야한다. mysql db를 공부하며 위의 전제조건이 중요하다.mysql 아키텍쳐 설계는 쓰기 작업의 안정성도 보장하지만 무엇보다  읽기 성능 향상을 위해 설계되어있다.위 내용을 중점에 두고 글을 이해해보자. mysql 아키텍쳐 [mysql 엔진]커넥션 핸들러 - 클라이언트 접속 허용- 쿼리 실행 요청sql 파서- 쿼리를 토큰(mysql이 인식할 수 있는 최소 단위의 어휘나 기호)으로 분리해 트리 형태의 구조를 만들어 내는 작업- 기본 sql 문법 오류 검사sql 전처리기- 쿼리 파서에 의해 만.. 2025. 2. 6.
spring 트랜잭션 전파 속성 - 중첩 트랜잭션 구조의 동작 방식 트랜잭션 전파 속성트랜잭션의 전파속성이란 중첩된 트랜잭션 구조가 나왔을 때, 어떻게 동작 시킬지를 결정하는 속성이다.DB수준에서 중첩 트랜잭션이라는 것은 존재하지 않는다. 부분적으로 sql구문을 롤백시킬수는 있으나 중첩 트랜잭션은 존재하지 않는다.프로그래밍단에서 @Transactional 어노테이션이 부착된 메서드의 중첩 구조가 나타날 수 있고,  스프링에서는 중첩된 구조에서 다양한 옵션으로 트랜잭션을 사용할 수 있게 하며,  완전히 독립적으로 동작할 수 있는 옵션 또한 제공하고 있다. * 앞으로 설명한 용어에서 부모-자식 트랜잭션이라는 표현은 프로그래밍 서버 기준이며 실제 DB에서 부모-자식 트랜잭션이라는 것은 존재하지 않는것에 주의하자. DB 트랜잭션[중첩 트랜잭션 미지원]start transacti.. 2025. 2. 1.
반응형