Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

BDE, ADO, сравнение скорости доступа [D5, D7, MSSQL]


Страницы:   1 2

ррр ©   (2003-12-17 13:45:00) 

Уважаемые мастера!
Созрел для перехода с BDE на ADO. Перед переходом порвел несколько тестов и во всех тестах скорость работы BDE выше скорости ADO. Кто-нибудь проводил подобные пробы? Какие результаты? Если BDE быстрее, зачем от него уходить.


Nikolay M.   (2003-12-18 11:20:00) [1]


> sniknik © (18.12.03 10:29) [25]
> > Нет, ну ненастолько же я наивен.
> а помоему есть немного. ;о)) (наивности)

Ну, не знаю, не знаю, может тебе виднее... :?)

Ладно, если дойдут руки до более-менее нормального тестирования с разными настройками, протестю и дельфевые компоненты, и активиксовые. О результатах напишу.
Хотя не думаю, что если даже и подтвердится, что АДО в 1.5 раза медленнее АДО, это будет серьезным поводом для отказа от использования БДЕ. Тем более я согласен, что если тестировать не на множестве мелких выборках, а на выборках большого объема из нескольких таблиц, то разница будет меньше, чем 1.5 раза - бОльшая часть времени будет уходить на обработку запроса на сервере + передачу по сети, если таковая, конечно, есть.

ПС, офф.
А у тебя аська есть? Можешь ко мне стукнуться, если не против? :?)


sniknik   (2003-12-18 10:29:00) [2]

> Нет, ну ненастолько же я наивен.
> С серверными курсорами связываться нет никакого желания, поэтому после выполнения запроса каждому НД
> (TQuery/TADOQuery) делалось Last. Курсор, соответственно, clUseClient.
а помоему есть немного. ;о)) (наивности)
если используется clUseClient то в Last нет необходимости, оно и так все выкачает. Last нужен если хочеш выкачать все с серверным курсором.
причем по времени (мы же скорость обсуждаем)
запрос с clUseClient время выполнения меньше чем clUseServer + Last. а результат одинаков.
попробуй проверь. (только не одноразово, нужна целая серия т.к. время сильно разнится (наверняка кэшируется ADO/MSSQL) первый запрос может к примеру 10сек, а повтор тутже 5сек.... (даже если между ними реконект сделать))

проверять думаю на ADO надо. (BDE почти не знаю, не знаю даже как переставить на clUseClient, как работает по умолчанию так и проверил и также ADO запустил)


KSergey   (2003-12-18 10:02:00) [3]

Почему я считаю, что для доступа к MS SQLнадо использовать ADO:

1.Поддержка множественных рекордсетов
2.Наличие ADOX


Nikolay M.   (2003-12-18 09:37:00) [4]


> sniknik © (17.12.03 19:23) [22]
> тянем прокруткой к концу таблицы

Нет, ну ненастолько же я наивен.
С серверными курсорами связываться нет никакого желания, поэтому после выполнения запроса каждому НД (TQuery/TADOQuery) делалось Last. Курсор, соответственно, clUseClient.


> нужно множество повторений

Собссно у меня и было множество повторений, причем перед запуском тестов они еще прогонялись вхолостую без замера времени, дабы исключить кеширование выполнения запроса, если таковое вдруг будет иметь место быть.


> ZrenBy © (17.12.03 18:46) [21]
> Вы тестируете ADO или компоненты TADO ??? !!!

Мы тестируем дельфевые компонентыTADOXXX.


sniknik   (2003-12-17 19:23:00) [5]

Nikolay M. © (17.12.03 17:43) [18]
тоже весьма тупой тест
простейший запрос

SELECT * FROM MTABLE
ADO ~ 6.55сек
Выполнено применительно к 141312 записям

BDE (SQL explorer) моментально (мигание ~ пол/четверть сек.) количество то же (условий where то нет)
вывод: не может быть, моментально ничего не далается. проверяем, тянем прокруткой к концу таблицы, так и есть получаем зависание на ~15-20сек
вывод: используется серверный курсор. при скачке на конец таблици данные ушли в докачку. (тут надо хлопнуть себя по лбу и сказать "ччерт а у ADO то по умолчанию локальный!")

переделываем ADO на серверный курсор. открывается моментально (то же самое мигание грида при старте), при прокрутке на конец повисание на 10-15сек. почти аналогично...

(проверил одноразово, никакой информационной ценности это не несет. для серьезных тестов нужно множество повторений)


ZrenBy   (2003-12-17 18:46:00) [6]

Для начала разберитесь вот в чем.

Вы тестируете ADO или компоненты TADO ??? !!!

А ведь это две большие разницы именно для закачки данных на
клиента, типа

SELECT * FROM Table[i]
WHERE Field[j] = [k].

Попробуйте поработать напрямую с интерфейсами ADO,
а потом приводите данные.
Я не могу, так как с BDE не работал


Denisiy   (2003-12-17 18:09:00) [7]

Давеча выполнял действия , аналогичные Nikolay M.

Также получил скорость при использовании BDE выше в полтора раза.. Мож чего не так настроил в ADO.., хотя вроде следовал инструкциям из вумной книжки (до этого с ADO никогда не работал)
Присовокупляю свой знак вопроса к вышеупомянутым.


SergP   (2003-12-17 18:09:00) [8]


> Nikolay M. © (17.12.03 17:43) [18]


Ну это простые запросы...
Ты сделай такой запрос чтобы хотябы секунд 15 выполнялся...
Тогда сможешь точнее сравнить...


Nikolay M.   (2003-12-17 17:43:00) [9]


> sniknik © (17.12.03 14:48) [9]
> Nikolay M. © (17.12.03 14:38) [7]
> как тестил и что? и какие параметры ADO?

Тестил, признаю, весьма тупо - брался набор из 10 таблиц и для каждого столбца каждой из таблиц пытался выполниться запрос типа

SELECT * FROM Table[i]
WHERE Field[j] = [k]

и так 10 раз (для каждой из 10 таблиц)
Сервер - не локальный (сетка у нас, правда, весьма тормознутая, может тут собака покопалась?).
Какие именно параметры АДО интересуют?


Anatoly Podgoretsky   (2003-12-17 17:14:00) [10]

Про старые проекты вообще речи нет, это слишком жирно переделывать ради моды.


MV   (2003-12-17 16:42:00) [11]

Забывать надо не для новых проектов, а для других форматов кроме Парадокс и dBase, и соответственно наоборот.

Да-да, я проект почти год писал, а теперь сопровождаю, и на какие шиши я буду его под другой движок переводить?


Anatoly Podgoretsky   (2003-12-17 15:36:00) [12]

MV (17.12.03 15:18) [12]
Забывать надо не для новых проектов, а для других форматов кроме Парадокс и dBase, и соответственно наоборот.


Stas   (2003-12-17 15:33:00) [13]

sniknik © (17.12.03 15:26) [13]
>>это смотря с чем сравнивать.
Я имел в виду MSSQL. Да и с Access наверное тоже.


sniknik   (2003-12-17 15:26:00) [14]

Stas © (17.12.03 15:14) [11]
> Что тут спорить ?
> ADO конечно быстрее !
это смотря с чем сравнивать, если с локальными таблицами(dbf,db) то BDE открывает таблицу непосредственно, а ADO всегда работает через ядро (сервер) даже с локальными, таблица при открытии перекачивается в рекордсет... визуально BDE открывает быстрее. но вот если общую работу брать, выборки копирования с условием... через sql, тут уж скорость почти одинаковая (локальные!). а за счет функциональности условий/вычислений в запросах ADO может быть быстрей.

хотя о чем это я, какое ADO? это будет заслуга OLEDB драйвера к которому подключен, ADO посредник. а BDE с чем сравниваем с локальными? native встроенными. глупо.


MV   (2003-12-17 15:18:00) [15]

На самом деле TTable, к примеру - очень мощная штука, которая выполняет всякие там кэширования и потому очень быстрая. И др. компоненты BDE очень долго "вылизывались" в плане оптимизации доступа. Но, как понимаете, для НОВЫХ проектов про BDE лучше зыбыть.


Stas   (2003-12-17 15:14:00) [16]

Что тут спорить ?
ADO конечно быстрее !
Я непойму как Bde может быть быстрее, когда ADO работает напрямую ?
Разве что BDE ведет какую-то обработку на клиенте, а на сервер отправляет уже обработанные данные, но это сработает только при слабеньком сервере, плохинькой сети, и мощным клиентским компом.


MV   (2003-12-17 14:59:00) [17]

Правильно!
Обязательно переводи отлаженные приложения на ADO, получишь скорость выполнения запросов в 1,5 раза больше! Не 0,1 сек., а 0,15! И на форуме тебя зауважают! А как юзеры обрадуются, получив вместо рабочего прилоджения бету, но с ADO - внутри!

Брат, о какой скорости работы идет речь? У тебя ж SQL - сервер! Ему ж пофигу, как ты к нему обращаешься: ADO-BDE-DBExpress... Сформировал запрос, и жди, пока сервер результат не выдал.

(Если, конечно, ты не вынес бизнес-логику на внешний к серверу уровень... Тады - да. Ищи, чем быстрее данные фетчить.)


sniknik   (2003-12-17 14:48:00) [18]

Nikolay M. © (17.12.03 14:38) [7]
как тестил и что? и какие параметры ADO?
у меня даже на локальных таблицах разница не в полтора раза меньше. а для серверов(MSSQL) было быстрее (хотя настроек много можно и заметного замедления добиться если постараться).
а уж если сравнивать функциональность... ассинхронное получение данных... (даже сравнивать нечего все в пользу ADO однозначно).

> Ну, так и что огород городить?
зачем? купи себе счеты (я видел на них считают гораздо быстрее чея я на калькуляторе!).


MV   (2003-12-17 14:44:00) [19]

Ну, так и что огород городить?


Nikolay M.   (2003-12-17 14:38:00) [20]

Было дело, тестил БДЕ и АДО на скорость выборок ради интереса.
Насколько помню, АДО получилось медленнее раза в полтора, поскольку дельфевые компоненты - это всего лишь обертка над ActiveX-овыми компонентами.
Для MS SQL логичнее, конечно, применять АДО - хотя бы потому, что не нужно на клиента тянуть все БДЕ.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо