150만건이 담긴 Table내 BETWEEN 조건 질의시 성능 개선 과정
문제 상황 현재 레코드 수는 아래 그림과 같이 약 150만개 이고, 매 1시간마다 800 ~ 1200개의 레코드가 추가되는 테이블을 사용하고 있다. 위 요구사항을 해결하기 위한 로직을 처리하는데 아래와 같이 12초 ~ 13초의 시간이 소요되어 이를 개선하고자 한다. 해결 과정 우선 슬로우 쿼리가 발생하는 이유를 찾기 위해 실행 계획을...
문제 상황 현재 레코드 수는 아래 그림과 같이 약 150만개 이고, 매 1시간마다 800 ~ 1200개의 레코드가 추가되는 테이블을 사용하고 있다. 위 요구사항을 해결하기 위한 로직을 처리하는데 아래와 같이 12초 ~ 13초의 시간이 소요되어 이를 개선하고자 한다. 해결 과정 우선 슬로우 쿼리가 발생하는 이유를 찾기 위해 실행 계획을...
참고자료 CaffeineCache-1 CaffeineCache-2 eTag Caffeine Cache 내부 구현 분석 package com.github.benmanes.caffeine.cache; public final class Caffeine<K, V> { // === Static Constants === // 통계...
사용자 인증/인가 관심사 분리 문제 해결 과정 왜 이런 과정이 필요했는지? 기존 코드에는 특정 API 컨트롤러마다 사용자 인증 정보를 가져오는 로직이 반복되고있었다. 컨트롤러에서 이에 대한 관심사를 해결하는 것 보다는 이를 분리하는게 더 역할에 맞다고 생각해서 이를 분리하기로 했다. 구체적으로 어떻게 구현한건지? HTTP Connectio...
프록시 패턴에 대한 궁금증 스프링에서 AOP를 공부하려다 보면 그 개념의 근원은 프록시부터 시작한다. AOP가 적용된 로직은 프록시 패턴을 적용하여 요구사항을 해결한다고 알려져있는데 도대체 프록시 패턴이 무엇이고 왜 쓰이고, 스프링은 왜 프록시 패턴으로 AOP를 구성하게 되었는지 알아보려고한다. 프록시 패턴? 디자인 패턴 중 구조 패턴으로 ...
OAuth Open Authorization 직역하면, 공개 인증이라는 의미이다. 다른 웹 서비스에게 이용중인 서비스에 있는 나의 정보에 접근할 수 있는 권한을 공개하여 인증할 수 있도록 접근 위임을 통한 인증을 수행한다.. OAuth 1.0 의 등장 2007년 12월, OAuth 가 등장했다. 실제로 트위터 등 대형 서비스에서도 도입을 시...
헷갈리는 키워드 모든 내용은 공식문서를 참고 클래스 관련 키워드 class data class sealed class enum class value class inner class 객체 관련 키워드 companion object object class class는 일반적으로 Java에서 사용하던 클래...
참고자료 Microsoft Doc 그런 REST API로 괜찮은가 REST? REST란 아키텍처 접근 방식 중 하나이다. 분산 하이퍼미디어 시스템(WEB)을 위한 아키텍처 스타일을 가리킨다. 아키텍처 스타일은 제약조건의 집합을 의미한다. REST 제약조건 uniform interface Identificatio...
0. 스프링이란? 스프링은 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 이라고 한다. 이 정의를 조금씩 분해해서 살펴보자 애플리케이션 프레임워크 애플리케이션 프레임워크는 특정 계층/기술/분야에 관계없이 애플리케이션 전 영역을 다루는 범용 프레임워크이다. 이게 일반 프레임워크랑 무슨 차이냐면, 일반적으로 프레임...
흔하디 흔한 오프셋 기반 페이징 offset 쿼리를 사용해서 조회할 데이터를 분할해서 가져온다. 문제점 1. 데이터 중복/유실 페이징 중 데이터 추가/삭제 시 중복된 혹은 유실된 데이터 반환 이 내용은 아직 시나리오가 정확히 이해가 가지 않아서 나중에 자세한 시나리오를 작성하기로한다. 문제점 2. 성능 일단 Limit, Offest 문법은 ...
트랜잭션과 락 트랜잭션은 작업의 완전성을 보장해주는 것이다. 작업을 모두 완벽하게 처리하거나, 처리하지 않고 원 상태로 복구하거나 락과 트랜잭션은 유사해 보이지만 다르다. 락은 동시성을 제어하기 위한 기능이고, 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 락이 없다면 어떻게 되는걸까? 하나의 회원 정보 레코드를 여러 커넥션에서 동시...