В 2002 году было опубликовано около 300 различных результатов оценки СУБД, а в период с 2009 по 2012 год наблюдался всплеск бенчмаркинга по линии TPC-C: каждый производитель СУБД и оборудования считал делом чести отчитаться о результатах оценки своих продуктов. Однако в 2017 году на сайте Совета по оценке производительности обработки транзакций (Transaction Processing Performance Council, TPC.org) был опубликован лишь один актуальный результат, и тот — для встраиваемой СУБД (SQL Anywhere). Во многом причиной охлаждения интереса стали изменившиеся типовые нагрузки для СУБД и новые модели их применения, появление NoSQL и распространение новых представлений о согласованности данных. Но это лишь частичное объяснение, для того чтобы разобраться в сложившихся обстоятельствах, следует не только проанализировать новые бенчмарки, но и взглянуть на проблему эталонного тестирования СУБД в целом.

Начало

На заре эры СУБД, в начале 1970-х годов, в Bank of America, который насчитывал тогда 1 тыс. отделений и 10 тыс. операционистов, задумались освоить централизованную безбумажную технологию, в связи с чем возникла потребность в СУБД, способной обрабатывать 100 транзакций в секунду. Корпорация IBM в ответ на эту потребность предложила инструментарий для проверки этой СУБД — тест TP1, ставший первым в ряду метрик оценки работы баз данных. Он работал в пакетном режиме на стороне базы данных, не принимая во внимание ни сеть, ни время реакции оператора, а лишь последовательно проводил операции снятия и зачисления средств на клиентский счет и выдавал количество транзакций в секунду (tps).

Через десять лет емкость рынка коммерческих СУБД перевалила за миллиард долларов и создатели систем стали спешно отчитываться о выдающихся результатах выполнения TP1, сообщая о невероятных 10 тыс. tps, хотя конечные заказчики получали максимум сотню транзакций в секунду. Для наведения порядка в отрасли доцент Висконсинского университета Девид Девитт в 1982 году создал более детерминированный эталонный тест, с четкими правилами масштабирования, не ориентированный на какую-либо предметную область, а работающий с условными кортежами. Однако, призванный положить конец бенчмаркинговым войнам, тест лишь разжег их сильнее: случилось так, что первая коммерческая реляционная СУБД, имевшая амбиции стать главной в мире транзакционной обработки, показывала на нем очень скромные результаты. Закончилось все скандалом — ходят слухи, что лично Ларри Эллисон звонил в Висконсинский университет с требованием уволить Девитта, а получив отказ, запретил кадровой службе Oracle нанимать на работу выпускников этого вуза. Главным же итогом для индустрии в этой истории стала так называемая оговорка Девитта, согласно которой обладателю лицензии на СУБД запрещается публиковать какие бы то ни было результаты тестов производительности без согласования с производителем. Такую оговорку в текст лицензионных соглашений включили поставщики практически всех основных систем того времени. У большинства из них она в том или ином виде сохраняется и по сей день.

В противовес абстрактному Висконсинскому тесту, корпорация Tandem в 1985 году решила вернуть к жизни рознично-банковский TP1, но уже с четкой спецификацией и всеми ограничениями, при которых было бы невозможно разгонять tps. Так появился тест DebitCredit — результат работы группы архитекторов Tandem, возглавляемой Джимом Греем [1]. В этом тесте были заданы базовые стандарты эталонного тестирования производительности СУБД: впервые четко обозначалось, что должно пониматься под стоимостью системы в целом (в случае коммерческой конфигурации стоимость транзакции будет наиболее важным показателем); устанавливались правила масштабирования по количеству пользователей с пропорциональным ростом размеров таблиц; вводилось ограничение на время отклика, согласно которому 95% транзакций должно завершиться за одну секунду. Эти, казалось бы, очевидные уточнения тогда были в...

Это не вся статья. Полная версия доступна только подписчикам журнала. Пожалуйста, авторизуйтесь либо оформите подписку.
Купить номер с этой статьей в PDF