로컬에서 성능 측정해보려고 JMeter로 테스트 중인데
게시글 조회 1000개 기준 평균 응답속도 150정도 나오고, tps 20도 안나오는데 이거 왜케 안나올까?
필터링 조회여서 조건이 4개라 쿼리가 조금 복잡하긴 한데, 요청 당 쿼리는 1+0.0005N개 정도 나옴 ㅇㅅㅇ
노트북 성능이 별로라 안나오는거일수도 있음?
요청 300개정도만 보내도 cpu랑 메모리 많이 잡아먹어서 엄청 느려지긴함
게시글 조회 1000개 기준 평균 응답속도 150정도 나오고, tps 20도 안나오는데 이거 왜케 안나올까?
필터링 조회여서 조건이 4개라 쿼리가 조금 복잡하긴 한데, 요청 당 쿼리는 1+0.0005N개 정도 나옴 ㅇㅅㅇ
노트북 성능이 별로라 안나오는거일수도 있음?
요청 300개정도만 보내도 cpu랑 메모리 많이 잡아먹어서 엄청 느려지긴함
로컬에서 성능테스트를 하는건 지능의 문제임
어떤 이유때문인가요?
모든 일에는 "왜"가 중요함 너는 왜 로컬에서 성능테스트를 하려고 하지? 거기서 뭘 얻으려고?
N+1 문제를 해결한 쿼리와 안한 쿼리의 속도를 비교해보고 싶어서요. 로컬에서는 이 값도 얻을 수 없을까요?
n+1 문제는 상황이 어떻게 변할수록 명확하게 드러날까? n이 의미하는건 무엇일까?
성능 측정에 있어서 가장 중요한건 병목지점임 근데 니가 테스트하는 환경에서 n+1 쿼리가 가장 큰 병목지점인걸 확신하나? n+1은 왜 느리지? 어떤 자원을 점유하지?
단순히 n+1 쿼리와 문제 해결 쿼리 속도를 그런식으로 비교하는거도 의미가 없음 n+1이 느린거야 당연한거고 얼마나 느린지는 환경마다 규모마다 다 달라지기 때문
뭔가를 하는건 좋은데 생각을 멈추지마
첨에 이유를 계속 논리 흐름대로 이어가면 시간이 오래 걸리지 않아요? 이것도 지식을 늘리는거처럼 익숙해지면 금방 적응됨?
넵 감사합니다
당연히 N+1 발생하는 쪽이 느릴텐데 굳이 jmeter까지 써서 측정하는 이유가 머임?
당연히 느리겠죠. 얼마나 차이가 나는지가 궁금한겁니다.
(내가 아는 대로 적는거라 정답X) N+1을 예방하려는 이유는 JOIN으로 한번에 조회가 가능한 쿼리를 SELECT 여러번으로 쿼리하기 때문. 그 말은 한 트랜잭션 내에서 DB 참조가 여러번 발생한다는 얘기이고 WAS와 DB간에 통신 비용이 클수록 발생한 쿼리만큼 커넥션 점유 시간이 길어진다는 얘기.
다시말해 WAS DB간의 통신 비용이 미미한 로컬에선 의미가 없음.
친절한 답변 감사합니다
N+1은 레이턴시에 관한 문제가 아닙니다. 레이턴시가 높던 낮던 반복되는 쿼리가 발생하고, 반복되는 쿼리 자체가 DB서버의 부하를 유도합니다.