Re: что выбирать - СУБД или метод доступа. Тест ФБП над моделью базы данных



Posted by Анимица Анатолий on March 06, 1999 at 15:13:56:


Проведены измерения по методике теста, описанного в статье Сергея Бобровского (PC WEEK/RE #6 23.02.99, с.16). sbo@pcweek.ru - запись/чтение миллиона записей в базу данных со структурой: 6-разрядный индекс и 50-символьная строка данных, на сервере "Финансы без проблем". База - extrd.dat.
Тестовая машина - P166MMX 64MB 6GBHDD FAT32, ОС - WIN 98 FAT 32.
Сервер - Финансы без проблем Сервер 2.9H от 23.01.1999. Win 95,NT.
Индекс скорости процесса: 125. Переключение контекстов отключено.
Для "чистоты" эксперимента полезно предварительно удален extrd.dat.
В автоматическом режиме программа производит серию экспериментов в
цикле 100000..1000000 записей. (25.6 Мб..256 Мб).
Сводная таблица времени и скорости операции записи и чтения extrd.dat
-----------------------------------------------------------------------
N Размер t0 t1 t2 t1-t0 зап./с t2-t1 зап./с чт-зап/с
-----------------------------------------------------------------------
1 100000 23:26 23:27 23:27 60 с 1667 0 c - 1667
2 200000 23:27 23:28 23:29 60 с 3333 60 c 3333 1667
3 300000 23:29 23:31 23:31 120 с 2500 0 c - 2500
4 400000 23:31 23:34 23:35 180 с 2222 60 c 6667 1667
5 500000 23:35 23:39 23:39 240 с 2083 0 c - 2083
6 600000 23:39 23:45 23:45 360 с 1667 0 c - 1667
7 700000 23:45 23:52 23:53 420 с 1667 60 c 11667 1458
8 800000 23:53 00:01 00:02 480 с 1667 60 c 13333 1481
9 900000 00:02 00:12 00:13 600 с 1500 60 c 15000 1364
10 1000000 00:13 00:26 00:26 780 с 1282 0 c - 1282
-----------------------------------------------------------------------
Итог: 780 с (оценка, так как квант функции [tm] ФБП - 1 минута, внешние таймеры
не применялись).
Для сравнения данные Сергея Бобровского, приведенные в PC WEEK:
машина P233MMX 32MB Win98. Времена по операциям ввода-вывода нетто, у меня -
общее время работы в цикле плюс накладные расходы на любопытство - примерно 2..3
минуты наблюдения за размером и последним индексом extrd.dat на ходу по F3 (FAR).
Результаты С. Бобровскрого: (ФБП=1)
1) fread/fwrite .. ReadFile/WriteFile 10..30 с 0.012..0.04 низкоуровневый
и фаловый доступ
2) mdb (Access 7.0) VC++,DAO 3.5 1300 c 1.7 файл-серверы
3) dbf Delphi 4 BDE 3200 c 4.1
4) db Delphi 4 BDE 2000 c 2.5
5) mdb Delphi 4 4800 c 6.1
6) ODBC 10900..26000 c 13..33
7) "Тяжелая" СУБД (не указана) 3800 с 5 клиент-сервер, запись
20500 с 28 то же, другая СУБД
500 с 0.7 то же, чтение
8) то же, ODBC 11300 с 14 то же, запись
9) "Легкая" СУБД (??) 44000 с 56 клиент-сервер, запись
10600 с 13 то же, чтение
---------------------------------------------------------------------------------------------------------------------------------------

Выводы. Даже не принимая во внимание пренебрежение в тесте ФБП отстранением
накладных расходов, можно смело рекомендовать разработчикам приложений применение
ФБП вместо и файл-серверных, и клиент-серверных СУБД с ожидаемой реактивностью
в 2..20 раз лучше аналогов. Адептам файл-серверных систем предлагать сравнение результатов только при условии постактуализации всех репликаций баз после на клиентских
машинах после каждой транзакции и до выполнения этого требования не проводить сравнений.

Текст программы приведен ниже. Он будет размещен с согласия А.Г.Водяника на сервере
hdru.com или может быть скопирован в clipboard прямо отсюда.

текст программы
-----------------------------------------------------------------------
Сводная таблица времени и скорости операции записи и чтения extrd.dat
-----------------------------------------------------------------------
N Размер t0 t1 t2 t1-t0 зап./с t2-t1 зап./с чт-зап/с
for e=1 to 10
ba=e*100000
call tst
t3=([vl [cp t1,1,2]]*60+[vl [cp t1,4,2]]-[vl [cp t0,1,2]]*60-[vl [cp t0,4,2]])*60
if t3<0 t3=t3+86400
endif
v1=' -'; if t3 v1=ba/t3
endif
t4=([vl [cp t2,1,2]]*60+[vl [cp t2,4,2]]-[vl [cp t1,1,2]]*60-[vl [cp t1,4,2]])*60
if t4<0 t4=t4+86400
endif
v2=' -'; if t4 v2=ba/t4
endif
t5=t3+t4; v3=' -'; if t5 v3=ba/t5
endif
^e ^^^^^ba ^^^t0 ^^^t1 ^^^t2 ^^^t3 с ^^^^v1 ^^^^t4 c ^^^^v2 ^^^^^^v3
endfor
-----------------------------------------------------------------------
stop
***********************************************************************
:tst
-----------------------------------------------------------------------
t0=[tm]
for i = 1 to ba
in=[intsn i];wn=[intsn 1000000-i];[sed in,wn]
* для записи строки используется [intsn 1000000-ba]
endfor
t1=[tm]
for i=1 to ba
in=[intsn i];wn=[strip [ged in]]
if ~[ce i/100000]
ti=[tm]
endif
endfor
t2=[tm]
return tst
--------------------------------------------------------------------------
статистика сервера
Статистика сеpвеpа
Кто\запpос:¦ O ¦ D ¦ A ¦ J ¦ R ¦ E ¦ X ¦ Итого
-------------+-------+-------+-------+-------+-------+-------+-------+--------
SU ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
-------------+-------+-------+-------+-------+-------+-------+-------+--------
S ¦ ¦ ¦ ¦ ¦ 21 ¦ ¦ 27 ¦ 48
¦ ¦ ¦ ¦ ¦ 4159.3¦ ¦ 9.1¦ 4168.4
-------------+-------+-------+-------+-------+-------+-------+-------+--------
Итого запpосы¦ ¦ ¦ ¦ ¦ 21 ¦ ¦ 27 ¦ 48
Итого вpемени¦ ¦ ¦ ¦ ¦ 4159.3¦ ¦ 9.1¦ 4168.4
-------------+-------+-------+-------+-------+-------+-------+-------+--------
Сpеднее вpемя¦ ¦ ¦ ¦ ¦ 198.1¦ ¦ 0.3¦ 86.8
Худшее вpемя ¦ ¦ ¦ ¦ ¦ 4007.6¦ ¦ 1.2¦ 4007.6
------------------------------------------------------------------------------
Сеpвеp стаpтовал в 22:20 и к моменту этого отчета отpаботал 8540 сек.
Коэффициент загpуженности сеpвеpа: 0.49

Запpосы с худшими вpеменами обpаботки:
O (0.0 сек): :
D (0.0 сек): :
A (0.0 сек): :
J (0.0 сек): :
R (4007.6 сек):S : R MILLIONE
E (0.0 сек): :
X (1.2 сек):S : W FORM

Распpеделение полезной памяти в базе D', байт:
Пеpеменные: 81032 39.6%
Счета и субсчета ( 19): 27955 13.6%
Индексы счетов и субсчетов: 663 0.3%
Экстpапаpаметpы: 0 0.0%
Индексы экстpапаpаметpов: 0 0.0%
Стpуктуpы для фактов: 94758 46.3%
Индексы "быстpых фактов": 0 0.0%
Таблица коppеспонденций: 394 0.2%

Итого: 204802 100.0%

Счета и коppеспонденции СЖАТЫ
Используются ОБЫЧНЫЕ, а не ускоpенные индексы


Общее pаспpеделение памяти, байт:
База D: 43520000, из 2560000 блоков свободно 2547116
База D': 0, из 0 блоков свободно 0

Деpево и файлы-коэффициенты: 1548
Скомпилиpованные фоpмы: 130621
Индексы опеpаций: 0
Индексы для sed и ged: 25889298

Итого занято памяти: 69541467



Пpишедшие ответы: