2025/12 2

[Real MySQL 8.0] MySQL에서 정렬 처리 방식과 드라이빙 테이블 선택 전략

DB 설계 시 테이블 간의 관계를 정의할 때, 흔히 부모-자식 테이블 구조에 집중하게 된다. 하지만 쿼리 성능 최적화 관점에서 보면, 정렬 컬럼이 어느 테이블에 위치하는지가 드라이빙 테이블 선택의 핵심 기준이 된다. MySQL의 세 가지 정렬 처리 방식MySQL은 ORDER BY 절을 처리할 때 다음 세 가지 방식 중 하나를 선택한다. 성능은 위에서 아래로 갈수록 저하된다.인덱스 기반 정렬: 별도의 정렬 작업 없이 인덱스 순서대로 데이터를 읽는다.드라이빙 테이블만 정렬 (Using filesort): 조인 전에 드라이빙 테이블만 먼저 정렬한다.조인 후 전체 정렬 (Using temporary; Using filesort): 조인 결과 전체를 임시 테이블에 저장한 뒤 정렬한다.만약 실행 계획을 출력했는데 ..

[Spring AI] Spring AI 버전 불일치와 설정 타이밍 문제

최근 오랜만에 Spring AI를 사용해 작업을 하면서, 이전과는 다르게 빌드 단계부터 다양한 시행착오를 겪게 되었다. 특히 프록시 서버를 통한 연동이 필요해 예상보다 많은 어려움이 있었고, 이를 정리해 두려 한다. Spring AI를 활용해 ChatModel을 각각의 모델에 맞는 클래스로 구성하고 애플리케이션에 통합하려는 작업을 진행했다.빠르게 변화하는 모델 분야만큼이나, Spring AI는 비교적 신생 프로젝트이며 업데이트 주기가 매우 빠른 편이다. 그로 인해 버전 간 API 변경, AutoConfiguration 구조 변경, 아티팩트 분리 등이 빈번하게 발생하고 있으며,나 역시 초기 설정 단계에서 여러 가지 문제를 경험하게 되었다. 문제상황1. Spring AI 버전 불일치로 인한 의존성 로딩 실패..