pgrust 제거: 쿼리별 전용 커널과 결과 캐싱을 이용한 벤치마크 부정행위

1 week ago 25

ClickBench에서 pgrust 항목을 제거하는 PR이 병합됨. 제거 사유는 43개 벤치마크 쿼리에 맞춘 전용 실행 경로와 이전 실행 결과를 재사용하는 캐시가 벤치마크 규칙을 위반한다는 것임 공개 소스와 릴리스 바이너리에서 쿼리별 수작업 커널, 벤치마크 SQL 내장, 특정 쿼리를 메타데이터만으로 처리하는 실행 계획이 확인됐지만, 제출 항목에는 tuned: no가 표시돼 있었음 PR의 로컬 측정에서 Q20은 콜드 실행에 10.8초, 반복 실행에 5~11ms가 걸림. 같은 형태에서 검색 상수만 바꾸면 첫 실행이 283ms로 늘어나, 공개된 반복 실행 수치는 실제 검색이 아니라 캐시 재생으로 판단됨 컬럼형 테이블에는 범용 실행 대체 경로가 없어, SELECT MIN(URL) FROM hits처럼 벤치마크 쿼리를 조금 바꾼 요청도 일부 거부함 43개 쿼리의 결과 자체는 정확함. 문제는 오답이 아니라 벤치마크 전용 조회와 캐시의 성능을 데이터베이스 성능으로 측정했다는 데 있음 제거 결정과 검증 범위 PR #2165는 #1163에서 추가되고 #2106에서 v0.4-preview로 갱신된 pgrust 항목을 제거함 2026년 9월 22일 커밋 48c06ac이 main에 병합됨 ClickBench 규칙은 쿼리 결과 캐시와 실행 파이프라인 끝부분의 캐시를 비활성화하도록 요구함 제출 항목은 tuned: no로 표시됐지만, PR의 검증 결과는 해당 43개 쿼리에 맞춰 조정된 구현을 보여줌 검증 대상은 설치 스크립트가 내려받는 공개 v0.4-preview 릴리스 바이너리와 공개 v0.3 소스임 v0.4-preview 소스는 공개되지 않았으며, 바이너리는 자신을 pgrust 0.3-beta로 표시함 벤치마크 쿼리에 맞춘 전용 실행 경로 aarch64 바이너리에 쿼리 번호별 소스 경로가 내장돼 있음 crates/gravity/backend/irprobe/src/ 아래 q00.rs, q01.rs, q02.rs, q03.rs, q04.rs, q06.rs, q07.rs, q12.rs, q15.rs~q25.rs, q27.rs, q30.rs, q31.rs, q36.rs, tpch_q01.rs가 확인됨 전용 커널로 실행을 보내는 계획 매처는 벤치마크 이름이 붙은 거부 메시지를 출력함 clickbench group count는 필터가 k <> 0이 아닌 경우를 거부함 clickbench phrase-min은 세 번째 열이 count(...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵