DB에서 적당히 가공된 셀렉트 쿼리로 JAVA의 자료구조에 넣고 JAVA에서 연산을하는것과
DB 쿼리를 복잡하게 짜서 쿼리 자체에서 계산하는것의 차이가 어떻게 되는지 아시는분 답변부탁드려요
저는 쿼리를 잘 짜는 편이고 더 익숙한데 윈도우함수나 WITH절 등이 많이 포함된 복잡한 쿼리를 단순화 하고
이런걸 JAVA 내에서 처리하라고하는데 뭐가 장점인지를 잘 모르겠습니다 잘 아시는분 조언부탁드려요
댓글 18
한방쿼리 = db부하 / n쿼리 = was부하 보통 was 스케일아웃이 편하니까 was단 연산을 많이하지 다만 유지보수 측면에서 한방쿼리 개좆같아서 난 지양하는편
익명(dcin4th)2024-01-24 11:30
답글
한방쿼리가 왜 좆같음? 자바가 트러블슛팅 더 어렵자나
익명(125.177)2024-01-24 11:31
답글
한방쿼리가 더 쉽지 않나? 중간 인라인뷰들을 바로 떼다가 조회해볼수 있는데 자바는 디버깅 하나하나 따라가야하자나
익명(125.177)2024-01-24 12:06
답글
데이터 흐름 측면에선 자바, 성능측면에선 쿼리
익명(118.130)2024-01-24 12:27
위에 댓글에 더해서
하나의 쿼리로 처리하기: 서버와 DB사이의 latency가 한 번으로 끝남. DB에 내장된 최적화에 의하여 쿼리 자체는 이쪽이 빠를 가능성이 높다. 단점은 윗 댓글이랑 같음.
대안: 하나의 쿼리로 처리하느니, stored procedure로 처리하는게 낫다고 본다. 프로시저 자체를 git으로 같이 관리 할수 있어서 유지보수 가능
익명(125.129)2024-01-24 11:54
일반적으로는 쿼리를 한개 쓰는게 빠르다. 성능에서 가장 느린 건 네트워크임.
적당히 가공된 여러개의 셀렉트 쿼리가 한개의 쿼리보다 빠르단 보장은 또 없잖아? 또한 DB부하도 마찬가지일거고. 이건 위에 말대로 유지보수 측면에서 접근하는게 맞음.
쿼리를 잘 탔다는 가정하에 1초도 안나오는게 네트워크 여러번 타면 1초+DB부하는 부하대로+네트워크 코스트까지 가해지는 효과가 남.
아예 모수 데이터가 디지게 많은 쿼리면 모를까 대부분의 OLTP성 쿼리는 네트워크 안타는게 베스트임.
DBA 입장에선 테이블 여러번찌르는거보다 걍 한번에 찌르는게 마음은 편함. 쿼리튜닝만 해주면 되기 때문에.
익명(118.130)2024-01-24 12:26
한방 쿼리짜는데 최적회가 안돼서
속도가 안나오고 어플단에서 가공하는게 빠르다면 어플단에 가공하는게 맞는거 같음
근데 속도도 잘나오는데 쿼리가 복잡하단 이유로 어플단에서 가공하라하는건 좀 그렇긴함
익명(39.123)2024-01-24 12:47
성능이 중요한 이력데이터들은 DB에서 가공해야지.
익명(211.115)2024-01-24 14:00
유지보수를 위해서는 덩치큰 쿼리는 지양하고 쉬운쿼리로 변환해서 여러번 처리하는게 낫고 성능 측면에서는 상황에 따라 다름.
익명(175.223)2024-01-24 16:03
답글
그리고 네트워크가 다들 엄청 느리다는 식으로 얘기했는데 복잡하고 느린 쿼리가 네트워크 시간 보다 더 잡아먹을수 있기 때문에 그건 알수 없는것임. 시대가 바뀌었음 하드웨어는 빨라졌고 회사에서 보면 네트워크가 더 빠른 상황도 간간히 나온다
익명(175.223)2024-01-24 16:07
답글
애초에 복잡하고 느린 쿼리를 전제로 얘기하진 않기 때문에... 쿼리를 제대로 짰다는 전제 하에 다수의 쿼리가 한개의 조인쿼리보다 빠를 이유도 없음. 손봐줄 DBA가 없다면 분리하는게 나을 수 있다곤 생각함
익명(118.130)2024-01-24 17:10
답글
시대가 바뀌어도 하드웨어의 물성은 그대로임. 네트워크 역시 빛의속보다 빠르게 움직일 수 없다.
익명(220.117)2024-01-24 18:55
답글
복잡하고 덩치큰 쿼리는 대부분 느린쿼리다
익명(175.223)2024-01-24 20:56
답글
덩치크고 조인 복잡하게 걸려있으면 유지보수 좀만 하다가도 인덱스 풀리거나 옵티마이져가 플랜을 휙 바꿔버릴 가능성이 많다. 지연이 큰 서비스 조사하다보면 죄다 인덱스 풀려서인게 대부분이였다
익명(175.223)2024-01-24 21:01
답글
그리고 요즘은 내가 회사에서 직접 확인하는건데 디스크보다 네트워크 갔다오는게 더 빠르다. 직접 보고얘기하눈거다 물성이니 뭐니 고정관념을 버리길 ㅎ
한방쿼리 = db부하 / n쿼리 = was부하 보통 was 스케일아웃이 편하니까 was단 연산을 많이하지 다만 유지보수 측면에서 한방쿼리 개좆같아서 난 지양하는편
한방쿼리가 왜 좆같음? 자바가 트러블슛팅 더 어렵자나
한방쿼리가 더 쉽지 않나? 중간 인라인뷰들을 바로 떼다가 조회해볼수 있는데 자바는 디버깅 하나하나 따라가야하자나
데이터 흐름 측면에선 자바, 성능측면에선 쿼리
위에 댓글에 더해서 하나의 쿼리로 처리하기: 서버와 DB사이의 latency가 한 번으로 끝남. DB에 내장된 최적화에 의하여 쿼리 자체는 이쪽이 빠를 가능성이 높다. 단점은 윗 댓글이랑 같음. 대안: 하나의 쿼리로 처리하느니, stored procedure로 처리하는게 낫다고 본다. 프로시저 자체를 git으로 같이 관리 할수 있어서 유지보수 가능
일반적으로는 쿼리를 한개 쓰는게 빠르다. 성능에서 가장 느린 건 네트워크임. 적당히 가공된 여러개의 셀렉트 쿼리가 한개의 쿼리보다 빠르단 보장은 또 없잖아? 또한 DB부하도 마찬가지일거고. 이건 위에 말대로 유지보수 측면에서 접근하는게 맞음. 쿼리를 잘 탔다는 가정하에 1초도 안나오는게 네트워크 여러번 타면 1초+DB부하는 부하대로+네트워크 코스트까지 가해지는 효과가 남. 아예 모수 데이터가 디지게 많은 쿼리면 모를까 대부분의 OLTP성 쿼리는 네트워크 안타는게 베스트임. DBA 입장에선 테이블 여러번찌르는거보다 걍 한번에 찌르는게 마음은 편함. 쿼리튜닝만 해주면 되기 때문에.
한방 쿼리짜는데 최적회가 안돼서 속도가 안나오고 어플단에서 가공하는게 빠르다면 어플단에 가공하는게 맞는거 같음 근데 속도도 잘나오는데 쿼리가 복잡하단 이유로 어플단에서 가공하라하는건 좀 그렇긴함
성능이 중요한 이력데이터들은 DB에서 가공해야지.
유지보수를 위해서는 덩치큰 쿼리는 지양하고 쉬운쿼리로 변환해서 여러번 처리하는게 낫고 성능 측면에서는 상황에 따라 다름.
그리고 네트워크가 다들 엄청 느리다는 식으로 얘기했는데 복잡하고 느린 쿼리가 네트워크 시간 보다 더 잡아먹을수 있기 때문에 그건 알수 없는것임. 시대가 바뀌었음 하드웨어는 빨라졌고 회사에서 보면 네트워크가 더 빠른 상황도 간간히 나온다
애초에 복잡하고 느린 쿼리를 전제로 얘기하진 않기 때문에... 쿼리를 제대로 짰다는 전제 하에 다수의 쿼리가 한개의 조인쿼리보다 빠를 이유도 없음. 손봐줄 DBA가 없다면 분리하는게 나을 수 있다곤 생각함
시대가 바뀌어도 하드웨어의 물성은 그대로임. 네트워크 역시 빛의속보다 빠르게 움직일 수 없다.
복잡하고 덩치큰 쿼리는 대부분 느린쿼리다
덩치크고 조인 복잡하게 걸려있으면 유지보수 좀만 하다가도 인덱스 풀리거나 옵티마이져가 플랜을 휙 바꿔버릴 가능성이 많다. 지연이 큰 서비스 조사하다보면 죄다 인덱스 풀려서인게 대부분이였다
그리고 요즘은 내가 회사에서 직접 확인하는건데 디스크보다 네트워크 갔다오는게 더 빠르다. 직접 보고얘기하눈거다 물성이니 뭐니 고정관념을 버리길 ㅎ
그런 쿼리 다루는데서는 보통 dba 쓰니까.....
쿼리 잘짠다는 백엔드 중에 진짜 잘짜는 경우 거의 없어서
유지보수 어떡할래