문제상황 사내 백오피스 애플리케이션에서 거래내역을 조회하는 페이지에 첫 진입할 때 5.48초가 걸리는 문제를 발견하였습니다 원인 분석 현재 거래내역 페이지는 offset 기반의 페이지네이션을 사용하고 있었고 리스트의 전체 행 수를 구하는 부분(이하 totalCount)에서 시간이 많이 소요되고 있음을 발견하였습니다. 페이지 첫 진입 시 데이터 조회 범위가 정해져있지 않았기 때문에 서비스 오픈부터 쌓여온 10만여건의 데이터를 전부 조회하고 있었습니다. 또한 실행계획을 조회해보니 거래 테이블에서 테이블 풀 스캔이 발생하고 있었습니다. 페이지 첫 진입 시 최근 한달 간의 거래내역만 조회하고 옵션에서 범위를 늘릴 수 있게 변경하고자 하였으나 운영팀에서는 조금 느리더라도 전체 범위 검색을 디폴트값으로 해달라는 요..
대표적인 인덱스 알고리즘 : B-Tree vs Hash Hash 인덱스 알고리즘 컬럼의 값으로 Hash값을 계산하여 인덱싱 → 그래서 전방(prefix)일치 등 값의 일부만 검색하거나 범위 검색 시엔 사용할 수 없음 매우 빠른 검색을 지원 메모리 기반 데이터베이스에서 주로 사용 B-Tree 인덱스 알고리즘 가장 일반적으로 사용되는 알고리즘 Hash와 달리 컬럼의 값을 변형하지 않고 원래의 값을 사용하여 인덱싱 B-Tree 인덱스의 구조 Root, Branch, Leaf 노드로 이루어져있음 루트 노드 : 최상위노드. 자식 노드 주소를 가지고있음 브랜치 노드 : 루트와 리프 사이의 중간 노드. 자식 노드 주소를 가지고 있음 리프 노드 : InnoDB와 MyISAM의 인덱스 리프노드가 갖는 값이 다름 MyIS..
업무에 바로 쓰는 SQL 튜닝 - YES24 업무에 바로 쓰는 SQL 튜닝 - YES24 SQL 튜닝의 기본 원리와 사례로 배우는 상황별 튜닝 방법 SQL 튜닝은 수많은 데이터를 더 빠르고 강력하게 처리하도록 해주는 가장 중요한 기술이다. 하지만 쉽지 않은 내용 때문에 부담감을 갖고 www.yes24.com 우리 회사에서는 인덱스를 중요하게 생각하고 있고 면접때도 인덱스 질문을 받았다. 하지만 저는 당시 인덱스에 대해 전혀 개념이 없어 유튜브 설명영상도 보고 블로그도 찾아봤지만 ‘그래서 난 뭘 해야하지?’ 하는 막연함만 가진 채 시간을 보냈다. 그러던 중에 이 책을 접하게 되었고, 인덱스의 개념과 실행계획 보는 법, SQL 튜닝에 대해 공부할 수 있게 되었다. 책의 모든 내용이 다 주옥같지만 제가 가장 ..
- Total
- Today
- Yesterday
- 분산처리
- laravel 테스트코드
- laravel
- phpUnit
- index
- redis
- k8s
- springboot
- 샤딩
- 대규모 데이터 처리
- java
- MySQL
- 쿠버네티스
- database
- pods
- php
- 백엔드
- mongoDB
- 주니어개발자
- 샤드
- 라라벨
- 리눅스 컨테이너
- 도커
- Apache POI
- kubernetes
- 몽고디비
- NoSQL
- mockery
- docker
- laravel 테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |