분류 전체보기

Server🧤/QueryDsl

[QueryDsl] 페이지네이션 처리 (Offset based, Cursor based)

Offset Offset의 문제점 예) offset이 50000, limit 20 20의 offset가 있다면, 50020 rows를 요청해오고, 나머지 50000개의 row를 버리게 됩니다. 느린 offset 쿼리를 최적화하기 위한 방법 Offset을 사용하지 않는 방법 Offset을 사용하지 않고, Unique 한 값을 bookmark 처럼 사용하여, 마지막에 fetch 다음 row로 시작할 수 있도록 where clause로 적을 수 있다. 순서가 페이지 간에 항상 동일하게 유지되도록, 고유한 열을 기준으로 순서를 지정해야 합니다. https://www.eversql.com/faster-pagination-in-mysql-why-order-by-with-limit-and-offset-is-slow/

Database/PostgreSql

[Postgresql] 대기시간 통계 내보기, 성능개선 (explain , p50 p90 p99 latency)

상황 select(*) 로 코드를 작성하는 의미없이 생각없이 코드를 작성했다. 같이 개발하는 동아리 선생님께서 정말로 감사하게도 코드리뷰를 남겨주었다! 당시, explain = 설명해달라는 것이라고 생각해서 이런 황당한 답변을 내놓았다. 정말 앞으로의 실행계획을 써버린것이다. 상대는 정말 황당 했을 것이다. 정우님을 황당하게 하지말자! 다시 알아보자 Explain! Explain 이란? Postgres에서 제공하는 명령이다. EXPLAIN 을 사용하여 내가 테스트 할 sql을 작성해서 실행시키면 PostgreSQL 실행계획기가 만든 실행계획을 보여준다. - 실행 계획은 원하는 자료를 출력하기 위해서, 어떤 테이블이 테이블 전체 순차 검색을 하는지, 인덱스 검색을 하는지를 보여준다. - 여러 테이블이 조인..

Server🧤/JPA

[SpringDataJPA] save(), saveAll() 차이

상황 프로젝트를 진행하면서, 데이터를 자동으로 넣어야하는 상황이 생겼다. History에 있는 유저 정보를 활동정보에 해당 id를 가진 유저에게 한꺼번에 데이터를 저장하는 작업이였다. 처음에 작성한 쿼리는 forEach문으로 각각 save를 돌면서 데이터를 저장하는 것이였다. 해당 작업의 코드리뷰로 save와 saveAll 에 대한 것을 보면 좋을 것 같다는 리뷰를 받았다. 이번기회에 해당 쿼리들이 어떻게 다른지 알아보려고 한다. 처음에 작성한 save() 메소드이다. memberHistories.forEach(memberHistory -> memberActivityRepository.save( memberActivityRepository.save( MemberActivity.builder() .memb..

Server🧤/QueryDsl

[Querydsl] Jmeter를이용한 속도 테스트 / Entity 조회와 id 조회 성능 차이

문제 상황 1000명 정도 되는 유저의 멤버 리스트 조회하는 과정에서 쿼리가 총 2번 나가야하는 상황이 발생했어요. 1. 멤버 정보를 전체 조회하는 쿼리 + 필터링 포함 2. 필터링에 포함되는 멤버를 count하는 쿼리 데이터가 늘어남에 따라서, 쿼리 속도가 늘어나는 것에 부담을 느끼게 되어서 jMeter로 검색 속도 테스트를 진행하기로 하였습니다. jMeter 사용방법 다운 https://jmeter.apache.org/download_jmeter.cgi Apache JMeter - Download Apache JMeter Download Apache JMeter We recommend you use a mirror to download our release builds, but you must ver..

yujindonut
'분류 전체보기' 카테고리의 글 목록 (8 Page)