전체 글 (26) 썸네일형 리스트형 S3 presigned Url 적용을 통한 영상 업로드 성능 향상 서론숏츠 업로드 플랫폼을 개발하던 중, 업로드 기능의 성능을 테스트 해 보았습니다. 20MB 데이터를 가진 업로드 요청에 평균적으로 1초가 소요되었기 때문에, 동시 요청이 발생하면 가용 가능한 스레드가 존재하지 않아 에러가 발생할 것으로 예상했습니다. 테스트 (presigned URL 적용 전) 초기 서비스 대상은 교내 학생들이었기 때문에, 숏츠 업로드 API의 동시 요청을 10명으로 잡고 테스트했습니다. 초당 트랜잭션 처리량은 9.1 이었고, MTT는 979ms로 측정되었습니다. 눈여겨 봐야할 부분은 Errors 인데, 694개의 요청에 대해 201개로 34.5%의 에러 발생률을 기록했습니다. 10명이 동시에 비디오 업로드 API를 호출하면 최소 세명 이상은 에러를 반환받는다는 것 이기 때문에 .. InnoDB FullText-Index를 이용한 검색 성능 향상 개요스터디 그룹 매칭 서비스 StudyHub를 진행하며 아쉬웠던 점을 하나 꼽자면 검색 기능입니다. 사용자 입장에서 생각했을 때 '정보처리기사' 모집 게시글을 업로드한다면 동일한 스터디에서도 아래와 같이 많은 게시글이 생성될 수 있습니다. '정보처리기사 스터디원 구합니다.' '꾸준히 진행할 스터디 구합니다. (정보처리기사)' 프로젝트에서 조회 시 성능을 위해 인덱스를 사용했기 때문에 '정보처리기사' 라고 검색했을 시 첫 번째 게시글만 검색되고 두번째 게시글은 검색이 안된다는 단점이 있었습니다. 물론 아직 데이터가 적기 때문에 '%검색문자열%' 과 같이 양쪽에 와일드카드를 삽입하는 방법이 있습니다. 하지만 추후 데이터가 많아졌을때를 대비하여 N-gram 파서를 이용해 검색 기능을 향상시켜보겠습니다. .. MySQL InnoDB B-Tree Index 탐색 과정 분석 개요 MySQL 인덱스는 인덱스 키 값의 시작값을 기준으로만 탐색이 가능합니다. 예를들어 Aamer라는 key 값을 기준으로 'A%'는 탐색이 가능하지만 '%A', '%A%'는 탐색이 불가능합니다. InnoDB에서 인덱스의 동작방식을 살펴보며 불가능한 이유를 알아보겠습니다. 본론 B-Tree는 트리 구조의 최상위에 하나의 루트 노드가 존재하고 그 하위에 자식 노드가 붙어 있는 형태입니다. 트리 구조 가장 하위에 있는 노드를 리프 노드라 하고, 트리 구조에서 루트 노드도 아니고 리프 노드도 아닌 노드를 브랜치 노드라고 표현합니다. 실제 DB의 인덱싱은 B-Tree와 비슷한 구조를 가진 B+Tree를 사용합니다. B+Tree는 아래와 같은 조건을 만족합니다. 1. 모든 리프 노드들이 같은 레벨을 가집니다. .. 이전 1 2 3 4 5 6 7 8 9 다음