본문 바로가기

새로운 학습2

[Hibnernate] Query Cache Plan 흔히 JPA를 사용하다보면 ~~in 쿼리를 종종 사용하게 된다. 만약 in 쿼리를 많이 사용한다면 하이버네이트의 옵션 중 query.in_clause_parameter_padding 을 꼭 true로 설정해두어야 한다. 그 이유를 하이버네이트의 QueryCachePlan과 함께 학습해보았다. 하이버네이트는 최적화를 위해 파라미터와 응답값을 캐시한다. 하이버네이트 5.2.18 버전부터 JPQL을 실행할 때 쿼리 컴파일 시간을 줄이기 위해 QueryCachePlan을 제공하고 있다. 또한 ParameterMetadata에는 native query의 namedParameter와 return type을 캐싱한다. 따라서 쿼리가 실행될 때 hibernate은 먼저 parameter와 resultType에 대해 p.. 2022. 12. 24.
[Redis] Redis를 쓰면서 고려했던 것들 - 푸시 배치 이번에 어떤 이유로 특정 사용자들에 대해 푸시 알림을 보내야 하는 일이 있었다. 이 과정에서 Redis를 사용했고, Redis를 사용하면서 고려 & 만난 여러가지 이슈들을 정리해보고자 한다. 1. 자료구조의 선택 자료구조를 선택하는 과정에서 여러가지 고민이 있었다. String 우선 String은 배재했다. String을 사용하면 scan을 이용해서 특정 prefix로 key를 가져와서 보낼 수 있겠지만 푸시알람을 보낼 대상을 같은 key로 두고 해당 key에 list나 set 형태로 쓰는 게 더 데이터 관리 측면에서 간단해보였다. 또 어떤 상황이 올지 모르니 마음대로 expire를 지정할 수 도 없는 노릇이고, push가 성공적으로 나가면 key들을 전부 삭제해야 하는데 이 과정이 조금 귀찮기도 했다... 2022. 12. 18.