프로젝트 삽질기3 (feat Enum) 들어가며사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 개발하는 과정에서, 팀원이 제게 Enum은 왜 사용했는지 물었습니다. 그 과정에서 관련된 대답을 제대로 할 수 없었습니다. 코드를 생각하지 않고 작성하고 있었다는 것을 깨달았습니다. 지금부터라도 코드를 생각하면서 작성하기 위해 노력하고자 합니다. 이 글은 Enum에 대한 생각을 정리하기 위해 작성됐습니다. Enum, 사용할까? 말까? 프로젝트를 개발하면서, Enum을 활용한 코드를 작성했습니다. 그러다 팀원이 Enum을 사용하면 Tree-Shaking 관점에서 비효율적이지 않나요라는 물음을 줬고, 이 물음에 대답할 수 없었습니다. Enum을 활용하면 키로 값을 얻을 수 있고, 값으로 키를 얻을 수 있어서 .. 프로젝트 삽질기2 (feat 쿼리 튜닝, 인덱스) 들어가며사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. DB를 공부하면서 소환사의 즐겨찾기를 조회하는 API가 어떤 성능을 지니고 있는지 알고 싶었습니다. 그래서 실행계획을 활용해서 쿼리를 분석해보니, 데이터가 많아지면 많아질수록 쿼리 시간이 증가하는 쿼리로 구성되어 있다는 것을 알 수 있었습니다. 이 글은 데이터가 많아도, 쿼리가 빠르게 될 수 있도록 설정하기 위해 삽질한 노력이 담겼습니다. 테스트 설계먼저 쿼리 성능을 테스트하기 위해 다음과 같이 테이블을 생성했습니다. CREATE TABLE "summoner_record" ( "id" BIGSERIAL NOT NULL, "created_at" TI.. 프로젝트 삽질기1 (feat Table Scan 실행계획) 들어가며사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 설정한 Index가 제대로 동작하는지 알기 위해, 그리고 효과적으로 커버링 인덱스를 적용하기 위해 쿼리의 실행계획을 분석했습니다. 그 과정에서, 설정한 Index가 제대로 동작하지 않고, 실행계획에서 Seq Scan으로 동작하고 있다는 것을 알았습니다. 여기서 Seq Scan은 무엇이며, PostgreSQL에서 테이블 스캔은 어떤 종류가 있는지 알아야겠다고 생각했습니다. 이 글은 [PG] 쿼리 실행 계획 분석하기 - Table Scan을 참고했으며, 실행계획에 대해 공부한 내용을 작성했습니다. 실행 계획Index가 제대로 동작하는지 알기 위해 다음과 같은 쿼리의 실행 계획을 살펴봤습니다. EXPLAIN.. 이전 1 2 3 4 다음