
마이페이지 테스트 결과입니다.
요약)
1. 기존 JPA보다 40% 속도를 감축하였습니다.
2. 평균 Bytes는 200 감소하였습니다.
3. db에서 파싱해서 받아오는 JPQL은 DSL보다 10% 빨랐습니다.
4. JPQL은 평균 Bytes는 30 감소하였습니다.
5. DSL에비해서 오류율이 약 4% -> 6%으로 60% 증가하였습니다.
결과)
오류 발생 때문에 이미지 파싱은 어플리케이션 내에서 for문을 통해서 split하는 방향으로 하기로 하였습니다.
JPA : 기존 JPA문을 이용한 마이페이지 조회시의 테스트 결과입니다.
DSL 1차 : DSL을 적용하고 측정한 값입니다. 전송 KB/초 값이 이전과 달라서 처리 속도가 빨랐습니다.
DSL 2차 : DSL을 적용하고 JPA를 측정했던 시간대 (PM 07:00 ~ PM 10:00)에 실시하였고습니다.
-> DSL은 Entity로 조회하는 것이 아닌 Dto 값을 받아와서 에플리케이션에서 처리합니다.
-> DB에서 받아오는 정보가 줄어서 200 Bytes 줄어 든 것을 알 수 있습니다.
// 성훈 - 마이페이지 0-2상태의 아이템정보를 dto에 담는다
@Override
public List<ItemUserResponseDto> findByMyPageItems(Long userId) {
return queryFactory
.select(new QItemUserResponseDto(
item.id,
item.itemImg,
item.status
))
.from(item)
.where(
item.bag.userId.eq(userId),
item.status.between(0, 2))
.fetch();
}
private List<ItemUserResponseDto> addItemList(List<ItemUserResponseDto> ItemList) {
List<ItemUserResponseDto> myItemList = new ArrayList<>();
for (ItemUserResponseDto eachItem : ItemList) {
ItemUserResponseDto Item = new ItemUserResponseDto(
eachItem.getItemId(),
eachItem.getImage().split(",")[0],
eachItem.getStatus()
);
myItemList.add(Item);
}
return myItemList;
JPQL 1차 : 어플리케이션에서 for문을통해서
조회하는 이미지 정보에서 : 파싱되어있는 여러장의 이미지 url을 ","기준으로 substring을 적용하였습니다.
queryDSL과 jpql에서는 UBSTRING_INDEX (문자가 포함되면 트림하는 메소드)를 지원하지 않아서
// 성훈 - 마이페이지 0-2상태의 아이템정보를 dto에 담는다
@Override
public List<ItemUserResponseDto> findByMyPageItems(Long userId) {
List<ItemUserResponseDto> result = em.createQuery(
"select new com.sparta.mulmul.dto.item.ItemUserResponseDto(i.id,SUBSTRING(i.itemImg, 1 ,case when i.itemImg like '%,%' then (locate(',',i.itemImg)-1)\n" +
"else 90 end), i.status) from Item i where i.bag.userId = : userId and i.status BETWEEN 0 AND 2 ", ItemUserResponseDto.class)
.setParameter("userId", userId)
.getResultList();
return result;
}
-> SUBSTRING으로 case문으로 ","가 포함되어있는지 판별해서
","의 위치를 알내서 문자열을 자르고,
없으면 임의의 자릿수 90을 정해서문자열을 자르는 과정입니다.
@Override
public BarterHotItemListDto findByHotBarterItemsTest(Long itemId) {
BarterHotItemListDto singleResult = em
.createQuery(
"select new com.sparta.mulmul.dto.barter" +
".BarterHotItemListDto(i.id, i.title,SUBSTRING(i.itemImg, 1 ,case when i.itemImg like '%,%' then (locate(',',i.itemImg)-1)\n" +
" else 90 end\n), i.contents, i.status) from Item i where i.id = : itemId", BarterHotItemListDto.class)
.setParameter("itemId", itemId)
.getSingleResult();
return singleResult;
이때 QuertDSL애 적용하기위해 시도를 해보았지만,
when 부분에서 해결이 되지 않아서 JPQL을 이용하여 만들었습니다.

'공부 > Jmeter' 카테고리의 다른 글
JMETER 테스트의 종류와 목적 (0) | 2022.06.17 |
---|---|
JMETER 테스트 자료 정리 (0) | 2022.06.03 |
JMETER사용시 참고한 사이트 링크 (0) | 2022.05.23 |
JMETER를 이용한 거래내역 성능확인 (0) | 2022.05.20 |
Jmeter사용해보기 - 마이페이지 조회 (0) | 2022.05.10 |