Skip to content

[Test] 기본 임베딩 모델 단일성 및 동시성 검증 #12

Description

@Gimini-3

배경

PR 1에서 다음 Partial Unique Index를 추가했다.

CREATE UNIQUE INDEX uk_embedding_models_one_active_searchable
ON embedding_models ((1))
WHERE is_active = TRUE
  AND is_searchable = TRUE;

이번 이슈에서는 실제 OpenSQL 환경에서 기본 모델 단일성과 동시성을 검증한다.

작업 내용

  • Partial Unique Index 생성 및 조건 확인
  • 첫 번째 true + true 모델 저장 성공 확인
  • 두 번째 true + true 모델 저장 차단 확인
  • 나머지 Boolean 조합은 여러 개 저장 가능한지 확인
  • 독립 트랜잭션 동시 저장 테스트
  • 정상 모델 교체와 Rollback 검증
  • 애플리케이션 사전 조회 방식과 DB 제약 방식 비교
  • 실제 OpenSQL 테스트 결과와 실행 계획 기록

동시성 기대 결과

동시 저장 요청: 2건
성공: 1건
Unique 위반: 1건
최종 기본 모델: 1개

성능 비교

별도 테스트 테이블에서 Partial Index 적용 전후를 비교한다.

  • EXPLAIN (ANALYZE, BUFFERS) 실행 계획
  • Warm-up 및 반복 측정
  • 실행시간 median
  • 사용 Index와 Buffer 수치

측정 결과 없이 성능 개선을 단정하지 않는다.

테스트

./gradlew cleanTest test

결과는 테스트 XML에서 실제 테스트 수와 실패 수를 집계한다.

완료 기준

  • 실제 OpenSQL에서 Index 동작 확인
  • 동시 저장에도 기본 모델이 한 개만 유지됨
  • 정상 교체 및 오류 Rollback 확인
  • 전체 테스트 통과
  • 실제 결과를 .dev/learnings/embedding-model-concurrency-verification.md에 기록
  • V27이나 운영 API는 수정하지 않음

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions