오래된 데이터를 지우는 안전한 방법
보존정책에 따른 대량 DELETE가 일으키는 락·트랜잭션 로그 폭증을 배치 분할 삭제와 파티션 드롭으로 회피하는 방법.
키워드가 정확히 일치하지 않아도 의미로 글을 찾아줍니다. 모든 처리는 브라우저 안에서 일어나며 — 서버·API 키·외부 전송이 없습니다. (검색 모델은 처음 한 번만 받고 이후 캐시됩니다.)
매일 자동으로 바뀌는 복습 6선 — Network · OS · Algorithm · Database 각 1편 + 랜덤 2편.
보존정책에 따른 대량 DELETE가 일으키는 락·트랜잭션 로그 폭증을 배치 분할 삭제와 파티션 드롭으로 회피하는 방법.

인터페이스만 선언했는데 호출이 된다? 외부 API 호출 코드는 계속 진화했습니다. RestTemplate: 오래 썼지만 이제 유지보수 모드(신규 기능 없음). WebClient: 논블로킹·리액티브. 강력하지만 MVC 앱에선 다소 과합니다. RestClient (Spring 6.1 / Boot 3.2+): WebClient의 친숙한 플루...
동일값 정렬에서 순서가 흔들리는 원인과 PK 타이브레이커, 그리고 페이징에서 행이 중복·누락되는 문제를 다룬다.
참조가 어긋난 데이터를 화면이 아니라 일괄 보정 쿼리로 바로잡는다. 조인 기반 UPDATE, 영향 범위 사전 검증, 누락 매핑 backfill의 안전 절차를 다룬다.
카테고리·상태·기간 패싯을 조합하는 다중 필터 검색에서 동적 WHERE의 인덱스 활용과 패싯 카운트 비용을 다룬다.
중복 등록을 막는 select-then-insert는 경쟁 상태에 뚫린다. 애플리케이션 사전 검사 + DB 유니크 제약의 이중 방어와 전용 도메인 예외 설계를 다룬다.

스레드가 비싸서 생긴 고민들 전통적인 Spring MVC는 요청 하나당 스레드 하나(thread-per-request)를 씁니다. 그런데 OS 스레드는 비쌉니다 — 스택만 보통 1MB 안팎이고, 컨텍스트 스위칭 비용도 듭니다. 그래서 톰캣 기본값도 워커 스레드 200개 수준의 풀로 제한하죠. 문제는 I/O 대기입니다. 외부 API·DB 호출로 20...
엔티티-DTO 손매핑이 만드는 필드 누락 버그를 컴파일 타임 매핑으로 막고, 매핑 코드를 어느 계층에 둘지 정리한다.
요청 DTO를 Java record로 전환하면 불변·간결해진다. @NotNull과 @NotBlank의 차이, 컴팩트 생성자 정규화, 역직렬화와의 궁합까지 정밀하게 다룬다.