genkin38

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ладно, статью писать не буду, некогда . В тестировании участвуют: КейДБ вер. 1.50.03, ВистаДБ вер. 2.0.15.1 (dll) и АбсолютДБ вер. 4.88 Итак, исходные данные: DBF-файл с кол-вом записей - 27839, размером 15633 K, потрошится на пять таблиц: Организации, телефоны организаций, население, справочник улиц, справочник населенных пунктов. По полям по которым производится поиск (название улицы, населенного пункта, лицевого счета предприятия) и по полям которые впоследствии будут использоваться в SQL-запросе создаются индексы. Ранее я создвал дополнительные индексы, от которых отказался, и это повлияло на размер БД. Хочу заметить, что используется индикатор, если абонент из категории население - строка фио парсится на отдельные ф. и. о., в общем это не чистое время работы движка. Хотя, при отключенном индикаторе время различается на 1 сек. В КейДБ использовалось "слабое" криптование таблиц, что-бы не просмтаривалось в любом редакторе. Как написано в документации, при использовании "сильного" (strong) крипто возможно снижение скорости работы. Эксперементировать не стал :-\ В ВистеДБ использовался алгоритм BlowFish как более быстрый (проверено опытным путем), в Абсолюте - тоже простенький алгоритм - Square. Кстати у Абсолюта куча алгоритмов - аж 7! Зачем столько? В Висте есть еще DES и все, у КейДБ качестве "сильного" криптоалгоритма используется BlowFish. Итак, результат по скорости записи в БД и размер оной позле ее заполнения: КейДБ - 65 сек., 6'508 K ВистаДБ - 74 сек., 6'219 K АбсолютДБ - 95 сек., 5'028 К. Хочу заметить, что АбсолютДБ имеет много настроек. Для уменьшения размера БД - PageSize and PageCountInExtent settings, для увеличения быстродействия - MaxConnections, MultiUser, in-memory tables. Для ускорения вставки - StartTransaction и Commit. Некотрые я задействовал (см. размер БД, индексы), некотрые нет (in-memory tables, StartTransaction и Commit). В плане документации - это однозначный лидер - толковый хелп. Теперь про скорость выборки: Абсолют поддерживает такой синтаксис: select * from person p right join (select * from dept WHERE iddept = 1) d on d.idDept = p.idDept left join street s on p.idstr = s.idStreet left join PopPoint pp on p.idpp = pp.idpp т.е. вложенные подзапросы, и для него это наиболее быстрый вариант (расписывать почему сейчас не буду), Виста поддерживает вложенные запросы только в WHERE, не поддерживает RIGHT JOIN. Поэтому запрос для Висты вглядит так: select * from person p left join street s on p.idstr = s.idstreet left join poppoint pp on p.idpp = pp.idpp where p.iddept = 1 КейДБ поддерживает RIGHT JOIN но не поддерживает вложенные запросы кроме как в WHERE, соответственно запрос будет таким: Select * from Person p right join dept dd on p.IdDept = dd.IdDept left join PopPoint pp on p.IdPp = pp.IdPp left join Street s on p.IdStr = s.IdStreet where dd.iddept = 1 Выборка осуществлялась по таблице PERSON с количеством записей 21'624. В результирующий набор попало 11'976 записей. А теперь время выполнения запроса: КейДБ - 1,5 сек. АбслютДБ - 5 сек. ВистаДБ - 6,6 сек. Размеры ЕХЕ: ВистаДБ - 673 К + Vistadb20.dll - 400 K (пожато aspack-ом) КейДБ - 925 К Абсолют - 1'318 К Во избежание неконструктивной критики - этот мини обзор для тех кто решил - не БДЕ! Для тех, кому важен размер программ (любителям slimware ). Вот им и адресовано. :-\ |