1. 서론 전 게시글에서 Spring Event로 의존성을 개선하는 법을 다뤄보았다. 하지만 한 트랜잭션 안에서 처리하던 것들이 흩어지면서 문제되는 부분도 있다. 이번엔 그 부분을 깊게 다뤄볼 생각이다. Event를 적용하기 전 코드와 후 코드를 먼저 살펴보면 아래와 같다. - 적용 전 @Service @RequiredArgsConstructor public class MemberService { private final AlarmService alarmService; private final AlimTalkService alimTalkService; public void register(String name) { // 회원가입 처리 로직 System.out.println("회원 추가 완료"); // 가..
1. 이벤트를 사용하는 이유 Spring Boot에서 이벤트를 적용하는 방법에 대해 들어가기 전에, 이벤트를 왜 써야하는지, 사용하면 좋은 상황에 대해 먼저 알아보자. 회원가입을 하고 나면 가입 축하 메세지를 전송하는 동시에 쿠폰을 전송하는 서비스가 있다고 가정해보았다. @Service @RequiredArgsConstructor public class MemberService { private final AlarmService alarmService; private final AlimTalkService alimTalkService; public void register(String name) { // 회원가입 처리 로직 System.out.println("회원 추가 완료"); // 가입 축하 푸시 알..
이번 글에선 MySQL 8.0과 기본 스토리지 엔진인 InnoDB를 사용할 것이고 인덱스를 활용한 쿼리 최적화를 진행할 예정이다. INDEX에 대해 처음 들어보거나 학습하고싶다면 아래 글을 참고 바람 https://dgjinsu.tistory.com/38 [INDEX] 데이터베이스 인덱스 파헤치기 1. 인덱스란? 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 만약 우리가 책에서 원하는 내용을 찾는다고 하면, 책의 dgjinsu.tistory.com 1. 실행 계획 실행 계획도 정말 여러가지가 있지만 가장 중요하고 많이 나오는 3가지는 다음과 같다. - all: 테이블 전체를 스캔 full table scan을 의미한다. full tab..
1. 인덱스란? 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 만약 우리가 책에서 원하는 내용을 찾는다고 하면, 책의 모든 페이지를 찾아 보는것은 오랜 시간이 걸린다. 그렇기 때문에 책의 저자들은 책의 맨 앞 또는 맨 뒤에 색인을 추가하는데, 데이터베이스의 index는 책의 색인과 같다. 데이터베이스에서도 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕고 있다. 장점 1. 검색 대상 레코드의 범위를 줄여 검색 속도를 빠르게 할 수 있다. 2. 중복 데이터를 방지하거나 특정 컬럼의 유일성(Unique)을 보장할 수 있다. 3. ORDER BY 절과..