원문 캡처 · github.com
원문 캡처 · github.com

ClickBench가 벤치마크 쿼리에 맞춰 별도로 구현된 처리와 이전 실행 결과를 재사용하는 캐시가 확인된 pgrust 항목을 벤치마크에서 제외했다. ClickBench의 규칙은 쿼리 결과 캐시와 파이프라인 끝부분의 캐시를 끄도록 하고, 특정 쿼리에 맞춰 조정한 항목은 그 사실을 표시하도록 한다.

제외를 제안한 풀 리퀘스트의 설명에 따르면, 공개된 v0.4-preview 실행 파일에는 ClickBench 쿼리별로 작성한 커널과 쿼리 형태를 판별하는 처리가 들어 있다. 해당 설명은 뜨거운 실행(hot run)에서 쿼리 데이터를 다시 읽는 대신 앞선 실행의 판정 결과를 재생하는 캐시가 작동한다고 주장한다. ClickBench의 규칙과 기여 안내는 이런 캐시를 허용하지 않는다.

풀 리퀘스트 설명은 96코어 Graviton(Neoverse-V2)에서 자체 스크립트와 설정으로 측정한 결과도 제시했다. Q20은 첫 실행에 10.8초가 걸렸지만 두 번째 실행은 11밀리초, 세 번째 실행은 5밀리초였다. 설명은 공개된 빠른 실행 기록이 이전 실행의 결과를 재생한 것이며, 실제 워밍업 상태의 부분 문자열 검색은 수백 밀리초 수준이라고 주장한다.

또한 설명에 따르면 pgrust는 ClickBench의 43개 쿼리 형태에 맞지 않는 입력을 처리하지 않고 오류를 반환한다. 예를 들어 SELECT MIN(URL) FROM hits; 같은 변형 쿼리가 거부됐다. 반면 43개 벤치마크 쿼리의 결과 자체는 clickhouse local과 비교해 30개가 정확히 일치했고, 나머지는 LIMIT 쿼리의 동률 처리 차이였다고 밝혔다. 따라서 제기된 문제는 결과의 정확성보다 벤치마크가 일반적인 데이터베이스 실행 성능 대신 특정 쿼리의 결과 조회를 측정한다는 점이다.

pgrust는 앞서 #1163에서 추가됐고 #2106에서 v0.4-preview로 갱신됐다. 풀 리퀘스트 설명은 공개된 v0.4-preview 바이너리와 공개된 v0.3 소스를 근거로 들었으며, v0.4-preview의 소스 코드는 공개되지 않았다고 덧붙였다.

부록: 원문 예시

text
ERROR: sqe: statement over columnar relation "hits" is not served