© 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).
Для всех компонентов производилась одна и та же обработка данных:
Результаты тестирования реальной БД, выраженные в секундах затраченных на выполнение:
| TIBQuery | TIBSQL | TSQLQuery | TpFIBQuery | |
| Firebird-1.5.2.4731 SuperServer mode | 1210,547 | 458,969 | 353,688 | 332,734 |
| Firebird-1.5.3.4870 embedded | 1130,157 | 367,125 | 285,109 | 302,563 |
| Firebird-2.0.0.12484 SuperServer mode | 1249,956 | 462,469 | 428,860 | 360,531 |
| Firebird-2.0.0.12484 embedded | 1168,156 | 433,125 | 261,625 | 328,968 |
Далее была подготовлена тестовая база данных. Из реальной БД были удалены все процедуры, триггеры и т.д. Оставлены две используемые таблицы с минимальным набором полей. Размер БД после данных изощрений - 420 593 664 байт. Таблица объектов – 391 755 записей (255 076 – уникальных по полю OID), документов – 4 079 811 записей.
| TIBQuery | TIBSQL | TSQLQuery | TpFIBQuery | |
| Firebird-1.5.2.4731 SuperServer mode | 376,250 | 209,015 | 202,625 | 166,032 |
| Firebird-1.5.3.4870 embedded | 338,328 | 206,687 | 105,109 | 120,688 |
| Firebird-2.0.0.12484 SuperServer mode | 465,750 | 290,062 | 240,344 | 216,687 |
| Firebird-2.0.0.12484 embedded | 362,656 | 205,328 | 109,563 | 140,234 |
Результаты очевидны... Скорость обработки несильно зависит от версии сервера и полностью характеризует скоростные характеристики пакетов IBX, DBExpress и FIBPlus при работе с простыми запросами.
Devrace славно поработал над своими компонентами, обогнав "заточенные" IBX TIBQuery с солидным преимуществом, а "не заточенный" DBExpress оказался посередине (удивительно, но факт). Еще одно удивление – DBExpress + embedded режим... Хотя положение IBX несколько выправляет TIBSQL, все равно напрашивается вывод: FIBPlus стОит своих денег!!! Ведь мы программируем не для тестов, а для реальных задач. Реальный рост БД активно используемого приложения заставляет разработчиков думать о будущем...
Желающие могут скачать тестовый проект с исходными кодами (350K) и бакуп тестовой БД (Внимание! Размер файла 58 721 620 bytes).
Copyright© 2006 Точёный Владислав Петрович
Специально для Delphi Plus
Пожалуйста, оцените статью