본문 바로가기
반응형

paging4

[Typescript] 1. TypeORM에서 페이징 API 만들기 - 기본페이징 기능 웹 서비스를 구현하는 과정에서 페이징 API는 가장 기본적인 기능인데요. Java 기반의 페이징 구현 코드는 많은데, Typescript 와 TypeORM 의 구현 코드가 많지 않아 작성하게 되었습니다. 현재 Typescript 와 TypeORM 스펙으로 웹 서비스를 구현하신다면 한번쯤 참고해보셔도 좋을것 같습니다. 전체 코드는 Github에 있습니다. 여기서는 기본적인 페이징에 대해서만 소개 드리는데요. 고성능의 페이징 API가 필요하다면 이전의 포스팅들을 참고해주세요. 1. NoOffset 사용하기 2. 커버링 인덱스 사용하기 3-1. 페이지 건수 고정하기 3-2. 첫 페이지 조회 결과 cache 하기 1. 프로젝트 구조 사용된 대표적인 패키지는 다음과 같습니다. Typescript TypeDI DI.. 2021. 6. 10.
3-1. 페이징 성능 개선하기 - 검색 버튼 사용시 페이지 건수 고정하기 모든 코드는 Github에 있습니다. 앞서 포스팅에서 실질 페이징 쿼리 성능을 올리는 방법들을 소개 드렸는데요. 1. 페이징 성능 개선하기 - No Offset 사용하기 2. 페이징 성능 개선하기 - 커버링 인덱스 사용하기 페이징 기능을 구현하는데 있어, 페이징 쿼리 자체를 개선하는 것도 방법이지만 그 외 다른 기능을 개선하는 방법도 함께할 수 있습니다. 여기서 말하는 그 외 기능은 바로 count 쿼리입니다. 일반적인 페이징 기능에 있어 데이터 조회와 함께 매번 함께 수행되는 것이 바로 count 쿼리인데요. 해당 조건으로 조회되는 총 건수를 알아야만 아래와 같이 pageNo들을 노출시킬 수 있기 때문입니다. (총 건수 / pageSize) 당연히 No Offset을 사용한다면 사용되지 않는 쿼리입니다.. 2020. 11. 1.
2. 페이징 성능 개선하기 - 커버링 인덱스 사용하기 2. 커버링 인덱스 사용하기 앞서 1번글 처럼 No Offset 방식으로 개선할 수 있다면 정말 좋겠지만, NoOffset 페이징을 사용할 수 없는 상황이라면 커버링 인덱스로 성능을 개선할 수 있습니다. 커버링 인덱스란 쿼리를 충족시키는 데 필요한 모든 데이터를 갖고 있는 인덱스를 이야기합니다. 즉, select, where, order by, limit, group by 등에서 사용되는 모든 컬럼이 Index 컬럼안에 다 포함된 경우인데요. 여기서 하나의 의문이 드는 것은 select절까지 포함하게 되면 너무 많은 컬럼이 인덱스에 포함되지 않겠냐는 것인데요. 그래서 실제로 커버링 인덱스를 태우는 부분은 select를 제외한 나머지만 우선으로 수행합니다. 예를 들어 아래와 같은 페이징 쿼리를 SELECT.. 2020. 10. 24.
Spring Batch Paging Reader 사용시 같은 조건의 데이터를 읽고 수정할때 문제 안녕하세요. 이번 시간에는 Spring Batch를 사용하시는 분들이 자주 묻는 질문 중 하나인 같은 조건의 데이터를 읽고 수정할때 어떻게 해야하는지 에 대해서 소개드리려고 합니다. 모든 코드는 Github에 있으니 참고하시면 됩니다. 문제 상황 예를 들어 아래와 같은 문제가 있다고 가정하겠습니다. pay라는 테이블에 successStatus가 false인 데이터를 모두 가져와 true로 변환해야 한다고 보겠습니다. 샘플로 사용할 Pay Entity는 다음과 같습니다. import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import javax.persistence.Entity; import javax.persi.. 2018. 9. 15.

728x90