대용량 데이터 & 트래픽/대용량 처리를 위한 mysql
-
300만개의 데이터 삽입 후 index로 성능 비교대용량 데이터 & 트래픽/대용량 처리를 위한 mysql 2024. 3. 6. 20:18
public class PostFixtureFactory { public static EasyRandom get(Long memberId, LocalDate firstDate, LocalDate lastDate) { var idPredicate = named("id") .and(ofType(Long.class)) .and(inClass(Post.class)); var memberIdPredicate = named("memberId") .and(ofType(Long.class)) .and(inClass(Post.class)); var param = new EasyRandomParameters() .excludeField(idPredicate) .dateRange(firstDate, lastDate) .ra..
-
mysql에서 조회 최적화를 위한 인덱스대용량 데이터 & 트래픽/대용량 처리를 위한 mysql 2024. 3. 5. 22:03
인덱스란 정렬된 데이터를 가지는 새로운 테이블을 의미한다. 일반적인 테이블은 PK 값으로 저장이 되기 때문에 특정 컬럼 (ex. 나이) 등으로 검색하는데 시간이 오래 걸리는데, 인덱스를 생성해놓으면 나이로 정렬된 새로운 테이블을 만들어 놓고 PK 값으로 매핑한다. 인덱스의 자료구조 Tree - 트리 높이에 따라 시간 복잡도가 결정 - 트리의 높이를 최소화하기 위해 B+ Tree를 사용 B+ Tree의 장점 - 삽입 / 삭제 시 항상 균형을 이룸 - 하나의 노드가 여러 개의 자식 노드를 가질 수 있음 - 리프노드에만 데이터가 존재 (연속적인 데이터 접근 시 유리함) 하지만 인덱스를 사용하는 것은 조회의 성능은 높일 수는 있지만 쓰기나 수정, 삭제의 성능은 낮출 수 있으므로 잘 고려해서 사용해야 한다. 클러..
-
대용량 시스템에 대한 이해대용량 데이터 & 트래픽/대용량 처리를 위한 mysql 2024. 3. 3. 22:09
어플리케이션은 간단하게 클라이언트 - 서버 - 데이터베이스로 이루어진다. 하지만 요즘에는 트래픽이 많아짐에 따라 클라이언트 - 웹 서버 - 웹 애플리케이션 서버 - 데이터베이스로 서버를 2개로 나누기도 한다. 웹 서버에서는 정적인 호스팅을 해주고 웹 애플리케이션 서버에서는 동적인 작업들을 해주며 서버를 효율적으로 사용하고, 관심사의 분리도 이룰 수 있다. 위의 사진처럼 대용량 트래픽을 다루기 위해 많은 서버와 캐시, 데이터베이스, 비동기 큐를 사용한다. 이전의 프로젝트에서 이러한 방식은 사용하지 않았는데, 취업을 하기 전에 대용량 트래픽을 다루는 경험을 할 수는 없겠지만 경험이 아니더라도 공부는 할 수 있으므로 강의를 통해 학습하려고 한다. 스케일업과 스케일 아웃 대용량 트래픽에서 많은 요청을 처리하기 ..