ClickHouse удалил pgrust из бенчмарка: в бинарнике нашёлся код под каждый запрос

В бинарнике лежали файлы q00.rs — q36.rs и переменная окружения PGRUST_GRAVITY_Q20_VARIANT. Один запрос занял 10,8 секунды на холодном запуске и 11 миллисекунд при повторе.

Вкратце

Сопровождающий ClickBench убрал pgrust, переписанный на Rust Postgres, сказав, что запись измеряет «таблицу поиска под бенчмарк, а не базу данных». Пробы с немного изменёнными запросами отклонялись с ошибками.

Создатель pgrust пришёл в тред, чтобы сказать, что обвинения ложны. Комментаторов интересовало, почему пути к этим файлам оказались в бинарнике.

Что сопровождающий нашёл внутри бинарника

ClickBench — публичный бенчмарк баз данных от ClickHouse. 22 сентября его сопровождающий Alexey Milovidov влил PR, который удаляет запись pgrust, и привёл две причины.

Первая: бинарник v0.4-preview содержит написанные вручную ядра для запросов бенчмарка в файлах q00.rs — q36.rs, а также сопоставители планов с сообщениями об отказе, названными в честь ClickBench. В исходниках v0.3 сказано: «физические планы, вручную понижённые для всех 43 запросов ClickBench».

Вторая: горячие запуски переиспользуют прежние ответы. Запрос 20 занял 10,8 с на холодном запуске, а затем 11 мс и 5 мс на повторах. Когда автор менял запросы, например SELECT MIN(URL) FROM hits, 20 из 67 околобенчмарковых проб отклонялись с ошибками. Сами 43 ответа бенчмарка при этом были верными.

«Реальные обвинения ложны»

Центром треда стал один комментарий соавтора pgrust:

«В основном реальные обвинения ложны. Эта заявка была более ранней версией pgrust 0.4, которая называлась pgrust 0.4-preview». — Michael Malis, соавтор pgrust

Малис указал на новую 0.4-beta, открытую накануне. Комментаторы такую рамку не приняли. Другой комментатор назвал это подменой темы: «Не важно, как называлась более ранняя версия. Отправили вы её, и обвинения относятся к ней». Другие просили Малиса объяснить пути к файлам и переменную окружения. Инженер-программист из Google написал, что ему понравились «уверенность и полное отсутствие признания первоначального косяка».

Закрытая разработка, потом выкладка

Комментаторы также спрашивали, зачем бета поставляется с исходниками, которые выложат позже. Ответ: команда делает крупные рефакторинги и держит внутреннюю версию впереди публичной. Комментатор заметил, что это старая модель «собора» из эссе Эрика Реймонда, и привёл в пример SQLite как современный случай.

Проблема Гудхарта

Самую резкую формулировку дал другой комментатор: «Бенчмарки нужны для измерения универсальных движков запросов, а не сами по себе становиться целью». Если движок умеет отвечать только на запросы, под которые его настроили, его оценка ничего не говорит о базе, которую покупатель реально будет использовать. Вторая заявка ClickBench для новой версии уже существует, так что настоящая проверка впереди: примут ли сопровождающие заявку, исходники которой теперь может проверить любой.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 3 из 11 Читать дальше
🚀Tech

24-часовое ожидание при установке в обход Play скрывает главное: регистрация у Google для всех

Сайт кампании считает дни до 2027 года, когда приложения от незарегистрированных разработчиков перестанут ставиться на сертифицированные устройства Android. Тред спорил в основном о фразе «без возможности отказа».

★ 482 · 💬 333 · keepandroidopen.org · 3 мин