FIBPlus против IBX и DBExpress - сравнение скоростных характеристик

или

Двоих одной левой

© 2006 Точёный Владислав Петрович

Маленькое вступление. Около трех лет назад мы разработали некую коммерческую программу, использующую Firebird в качестве СУБД; причем база данных на текущий момент имеет уже достаточно приличный объем данных. Сейчас назрела необходимость написания второй версии, для чего было произведено маленькое исследование...

Тестовая система
 Операционная система  Microsoft Windows XP Professional 
 Пакет обновления ОС  Service Pack 2 
Системная плата
 Тип ЦП  Intel Pentium 4 520, 2951 MHz (14 x 211) 
 Системная плата  Intel Battle Lake D915PBL 
 Чипсет системной платы  Intel Grantsdale i915P 
 Системная память  1024 Мб (DDR2 SDRAM) 
Хранение данных
 Контроллер IDE  Intel(R)82801FB/FBM UltraATA StorageControllers-266F 
 Контроллер SCSI/RAID  A347SCSI SCSI Controller 
 Контроллер SCSI/RAID  Intel(R) 82801FR SATA RAID Controller 
 Дисковый накопитель  RAID_0 (223 Гб, IDE) 
 Дисковый накопитель  ST3120026AS (120 Гб, 7200 RPM, SATA) 

Тестовая база данных. Таблица объектов содержит 255 076 уникальных по полю OID записей объектов, таблица документов содержит 4 079 811 записей. Связи мастер-детайл отсутствуют. База данных физически находилась на RAID Controller. Общий объем базы данных после произведения backup/restore перед тестированием 2 854 144 кБ. Дополнительно перед тестированием была произведена дефрагментация раздела с базой данных.

В целях выяснения производительности компонентов доступа к SQL серверам Firebird было создано тестовое приложение, использующее три группы компонентов: IBX, DBExpress и FIBPlus. Тестировались компоненты TIBQuery, TIBSQL (оба из пакета IBX), TSQLQuery (пакет DBExpress) и TpFIBQuery (пакет FIBPlus).

Основной целью данного тестирования было сравнение скоростных характеристик пакетов IBX и FIBPlus для выяснения вопроса: А стоит ли платить дополнительные деньги за сторонние компоненты??? Доступ через ADO не рассматривался по причине слишком низкой скорости работы через ODBC драйвера. Пакет DBExpress был включен в тестирование только для сравнения с еще одним "стандартным" набором компонентов доступа, предоставляемых Borland, поскольку в качестве конкурент для коммерческой разработки приложений лично мне он не нравится по многим причинам (тема отдельной статьи). Производились настройки наиболее оптимального доступа к базе данных для каждого пакета. Например: все компоненты были настроены на локальный доступ без использования сети или доступа через localhost (IBX увеличил скорость почти в два раза при изменении строки подключения с localhost:Base на Base).

Для всех компонентов производилась одна и та же обработка данных:

  1. одним запросом производилась выборка абонентов;
  2. вторым запросом производилась выборка документов принадлежащих абоненту, выбранному в цикле перебора абонентов;
  3. в цикле производился перебор документов и складывались суммы по документам.
Запуск цикла обработки производился двукратно для снятия эффектов буферизации системы и сервера Firebird.

Результаты тестирования реальной БД, выраженные в секундах затраченных на выполнение:

  TIBQuery  TIBSQL  TSQLQuery  TpFIBQuery 
 Firebird-1.5.2.4731 SuperServer mode 1210,547458,969353,688332,734
 Firebird-1.5.3.4870 embedded 1130,157367,125285,109302,563
 Firebird-2.0.0.12484 SuperServer mode 1249,956462,469428,860360,531
 Firebird-2.0.0.12484 embedded 1168,156433,125261,625328,968

Далее была подготовлена тестовая база данных. Из реальной БД были удалены все процедуры, триггеры и т.д. Оставлены две используемые таблицы с минимальным набором полей. Размер БД после данных изощрений - 420 593 664 байт. Таблица объектов – 391 755 записей (255 076 – уникальных по полю OID), документов – 4 079 811 записей.

  TIBQuery  TIBSQL  TSQLQuery  TpFIBQuery 
 Firebird-1.5.2.4731 SuperServer mode 376,250209,015202,625166,032
 Firebird-1.5.3.4870 embedded 338,328206,687105,109120,688
 Firebird-2.0.0.12484 SuperServer mode 465,750290,062240,344216,687
 Firebird-2.0.0.12484 embedded 362,656205,328109,563140,234

Результаты очевидны... Скорость обработки несильно зависит от версии сервера и полностью характеризует скоростные характеристики пакетов IBX, DBExpress и FIBPlus при работе с простыми запросами.

Devrace славно поработал над своими компонентами, обогнав "заточенные" IBX TIBQuery с солидным преимуществом, а "не заточенный" DBExpress оказался посередине (удивительно, но факт). Еще одно удивление – DBExpress + embedded режим... Хотя положение IBX несколько выправляет TIBSQL, все равно напрашивается вывод: FIBPlus стОит своих денег!!! Ведь мы программируем не для тестов, а для реальных задач. Реальный рост БД активно используемого приложения заставляет разработчиков думать о будущем...

Желающие могут скачать тестовый проект с исходными кодами (350K) и бакуп тестовой БД (Внимание! Размер файла 58 721 620 bytes).

Copyright© 2006 Точёный Владислав Петрович
Специально для Delphi Plus


Пожалуйста, оцените статью
Отлично
Хорошо
Средне
Плохо
Очень плохо