Back End/서버 비용
-
[Spring Data JPA] JPA 에서 IN 절을 사용할 때 Prepared Statement 의 효율 높이기Back End/서버 비용 2023. 2. 13. 22:22
* 이 포스팅은 NHN 의 정지범 개발자님의 포스팅을 바탕으로 작성된 포스팅입니다. DBA와 개발자가 모두 행복해지는 Hibernate의 in_clause_parameter_padding 옵션 : NHN Cloud Meetup Java ORM 기술의 표준 명세인 JPA가 소개된 지 참 오래되었지만, 국내 현실상 대규모 시스템에서 적용되어 사용된 운영 경험이 충분히 쌓이지 않고 공유되지도 않는 것 같습니다. meetup.nhncloud.com 서문 public interface SampleRepository extends CrudRepository{ List findByIdIn(List ids); } 위와 같은 IN 절을 담은 Query Method 를 생성하면 JPA 입장에선 IN 절에 몇개의 파라미터가..
-
[SQL 튜닝] Offset 쿼리가 느린 이유Back End/서버 비용 2022. 12. 19. 18:58
* 단순 지식 기록용 포스팅입니다. Off-set 쿼리 SELECT * FROM items WHERE 조건문 ORDER BY id DESC OFFSET 페이지번호 LIMIT 페이지사이즈 Off-set 쿼리가 느린 이유 select .. limit 10000,10020 과 같은 쿼리를 실행하면 10,000부터 20개만 읽는게 아니라, 10,020개를 읽은 후 앞의 10,000개를 버리는 식으로 DB가 동작하기 때문. 왜 그렇게 비효율적으로 동작하게 설계를 했을까 했는데, where 절이 삽입되면 인덱스로 끊어서 offset 위치를 파악할 수 없기 때문. 그래서 데이터수가 많아지고, Offset 의 위치가 커질수록 조회쿼리는 느려짐. 데이터 수가 많아지면 UI 를 바꿔서라도 No Offset 쿼리로 변경하는..
-
[Spring Security] Filter 가 두번 실행될 때 (when filter get executed twice in Spring)Back End/서버 비용 2022. 12. 17. 15:07
Case 갑자기 내가 작성한 AuthenticationFilter 가 2번 실행되는 현상을 목격했다. 단순히 chain.doFilter() 를 기준으로 앞뒤로 실행되는 것이 아닌 정확히 모든 로직이 2번이 실행되는 것이다. Cause 원인은 아래 예제코드와 같이 Spirng Security 에 등록할 필터를 Bean 으로 등록하고, Security Config 에서 또 Filter 를 추가한 데 있었다. @Configuration @EnableWebSecurity(debug = false) @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) class SecurityConfig { @Bean fun filterChain( a..