Spring Boot/Spring Data JPA(34)
-
Query Hint
쿼리 힌트(query hint)는 데이터베이스 관리 시스템(DBMS)의 쿼리 최적화(Optimizer)기가 쿼리를 실행할 때, 최적화 경로와 전략을 어떻게 선택할지에 대해 개발자가 명시적인 지침을 제공하는 방법입니다. DBMS는 기본적으로 통계 정보와 내부 알고리즘을 통해 쿼리의 최적 실행 계획을 자동으로 선택하지만, 때로는 최적화기의 판단이 항상 최선이 아닐 수 있습니다. 이럴 때 쿼리 힌트를 사용해 실행 계획을 제어할 수 있습니다.DBMS는 각 쿼리에 대해 실행 계획을 수립할 때, 조인 순서, 인덱스 선택, 테이블 액세스 방식, 메모리 사용 방식 등 여러 요소를 고려합니다. 쿼리 힌트는 이러한 요소 중 하나 이상에 영향을 주어, 성능을 개선하거나 잘못된 실행 계획을 피하는 데 도움을 줄 수 있습니다...
2023.06.06 -
Database Index
데이터베이스 인덱스는 대규모 데이터셋에서 성능을 최적화하기 위한 핵심적인 메커니즘으로, 테이블 내에서 특정 열 또는 열들의 조합에 대한 데이터 검색을 더 빠르게 수행할 수 있도록 돕는 데이터 구조입니다. 인덱스는 데이터를 미리 정렬된 구조로 유지해 두어, 테이블을 일일이 탐색하지 않고도 필요한 데이터를 효율적으로 찾을 수 있도록 해줍니다. 마치 책의 목차처럼, 특정 위치의 데이터를 빠르게 찾아가는 데 사용됩니다.1. 데이터베이스 인덱스의 개념과 역할(1) 인덱스란?인덱스는 특정 열 또는 여러 열의 조합에 대해 데이터를 빠르게 검색할 수 있도록 구성된 데이터베이스의 자료 구조입니다. 테이블 전체를 스캔하는 것보다 성능이 훨씬 향상됩니다.검색 성능 개선: 인덱스는 테이블에서 데이터를 찾는 과정을 최적화해 검..
2023.06.04 -
Aggregate Root
Aggregate Root는 도메인 주도 설계(DDD: Domain-Driven Design)에서 핵심 개념 중 하나로, 특히 복잡한 비즈니스 로직이 필요한 애플리케이션에서 유용한 설계 방법입니다. 이를 이해하기 위해서는 DDD의 애그리게이트(Aggregate) 개념과 그 안에서의 역할을 이해하는 것이 중요합니다. Spring Data JPA는 이러한 개념을 적용하여 도메인 모델을 더 명확하고 일관성 있게 관리할 수 있도록 도와줍니다.1. 애그리게이트(Aggregate)란?애그리게이트는 하나 이상의 객체(엔티티와 값 객체)를 묶어서 한 단위로 취급하는 개념입니다. 이 묶음은 도메인 논리에 의해 긴밀하게 결합된 객체들로 구성됩니다. 애그리게이트는 시스템에서 일정한 경계(boundary)를 설정하여 해당 경..
2023.06.04 -
Slice
Spring Data JPA의 Slice는 페이징 처리에서 효율성을 높이기 위한 대안으로, Page 객체와 비교해 일부 간략화된 정보를 제공하는 페이징 결과 객체입니다. Slice는 전체 데이터 수를 계산하지 않고도 페이징을 처리할 수 있어 성능 면에서 이점을 제공합니다. 더 자세히 설명하자면, Slice는 현재 페이지의 데이터와 다음 페이지로 이동할 수 있는지 여부만 제공하며, 전체 데이터의 수를 포함하지 않는다는 점이 특징입니다.Slice와 Page의 비교Page와 Slice는 모두 페이징 처리를 위해 사용되지만, 두 클래스는 제공하는 정보가 다릅니다.Page전체 데이터 개수 (getTotalElements())총 페이지 수 (getTotalPages())현재 페이지에 해당하는 데이터 (getCont..
2023.04.17