Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.14;
Скачать: CL | DM;

Вниз

это реализация ADO такая или руки у меня кривые?   Найти похожие ветки 

 
alienka   (2003-06-11 12:54) [0]

Почему то при использовании DBE коннект к базе, открытие таблиц и обновление их - все происходит быстро. При использовании ADO - один коннект занимает почти 3 минуты!
Что я не так настроила?

Мне намекнули, что это реализация ADO кривая, но не хочется от него отказываться....


 
Сумрак ©   (2003-06-11 13:29) [1]

Если доступ с помощью ODBC то понятно, работает медленно. Попробуй Microsoft OLE DB Provider 3.5 или 4.0


 
clickmaker ©   (2003-06-11 13:51) [2]

Хоть БДЕ все и ругают, но как показывает практика, в большинстве случаев оно шустрее. ADO основана на COM, а любая COM-технология медленней, чем обычные вызовы ф-ий из DLL, как это делает БДЕ


 
bushmen ©   (2003-06-11 13:56) [3]

ADO по-любому работает медленнее BDE, но не настолько медленно.


 
alienka   (2003-06-16 19:38) [4]

Это может быть связано с версией адо? У меня адо 2.51... тормозит жутко. Проверяла на 2.53.6200 - вроде шустрее работает.


 
sniknik ©   (2003-06-16 20:12) [5]

> один коннект занимает почти 3 минуты
что имеется в виду? ADOConnection.Open? не должно быть такого, ни в коем разе.

BDE быстрей но не намного (обычно на табличном доступе) но работа в общем (сложные запросы с вычислениями/переброска данных/линковка к внешним источникам/.... ets) чаще на ADO быстрее. за счет функционала драйверов провайдера (jet к примеру, больше позволяет, функции из бейсика в запросах и т.д.).


 
Nikolai_S ©   (2003-06-17 11:09) [6]

2 sniknik.

У меня аналогичная проблема - слишком медленно открывается таблица Access на 80000 записей через TADOQuery. Я использую Microsoft OLE DB Provider 4.0.
Я не сравнивал с BDE, но все равно хотелось бы ускорить. Программа открывается минуты 2-3 на Celeron 400 и RAM 256 MB. Это медленно, тем более что у заказчиков компьютеры намного слабее. В самом Access"е же таблица открывается за долю секунды.

Нет ли каких-нибудь конкретных советов, как можно ускорить открытие больших таблиц?


 
ЮЮ ©   (2003-06-17 11:47) [7]

Не открывать их вообще, а делать только осмысленные выборки с ограниченным количеством записей :-)


 
Nikolai_S ©   (2003-06-17 12:07) [8]

2 ЮЮ.
Об этом я уже тоже думал :-). Но все равно хотелось бы знать как можно ускорить процесс открытия больших таблиц. Ведь сам Access открывает свои таблиц где-то в 100 раз быстрее. Неужели нельзя никак ускорить?


 
sniknik ©   (2003-06-17 12:24) [9]

Nikolai_S © (17.06.03 11:09)
так это не коннект, это выборка, не надо путать.

Nikolai_S © (17.06.03 12:07)
решений несколько. лутше всего ЮЮ © (17.06.03 11:47) > осмысленные выборки.
только те данные которые обрабатываются/просматриваются.
+ асинхронное получение данных (работа как с сервером), пользователь видит первые записи моментально остальные докачиваются в процессе.
+ серверный курсор, на клиента поступают только то что нужно в данный момент. открывается тоже очень быстро.
+ режим директтабле, непосресственный доступ, тоже быстро но лутше использовать при локальном доступе(тут конечно можно спорить Access вобще локальный, так что теоретически всем режимам нужен локальный доступ а не файл серверный к примеру).

ну и надо помнить, что при различных режимах могуть быть доступными/недоступными их "родные/неродные", свойства/методы. и все будет в шоколаде. :о)) (в смысле шустро и грамотно)


 
alienka   (2003-06-17 15:38) [10]

Извините, а разве может быть дело в провайдере? У меня в приложении используется MSDASQL, но возможности для перехода на Microsoft Jet OLEDB 4 нет, по крайней мере не вижу ее.. База на сервере, субд mysql, adoconnection.open на моей машине (win2000, 256 ram, компоненты ado версии 2.51) выполняется ~2-3 минуты, на другой машине (win2000, 128ram, компоненты ado версии 2.53) выполняется секунды 4.
Я, конечно, человек в этом неопытный и может быть не те выводы сделала не из тех данных..


 
Nikolai_S ©   (2003-06-17 15:42) [11]

sniknik,
Спасибо, понял.


 
sniknik ©   (2003-06-17 15:57) [12]

alienka (17.06.03 15:38)
> База на сервере, субд mysql, adoconnection.open на моей машине (win2000, 256 ram, компоненты ado версии 2.51) выполняется ~2-3 минуты, на другой машине (win2000, 128ram, компоненты ado версии 2.53) выполняется секунды 4.
вот это ненормально, то что adoconnection.open так долго. а может наоборот нормально (если в имени сервера именно имя сервера стоит то время может на получение адреса (IP) тратится, особенно если не напрямую а через какиенибудь маршрутизаторы, DNS и WINS (сам смутно представляю где и что)) в общем от сети тоже может зависеть. попробуй IP явно задать и посмотри что получится.
у тебя конечно своя строка
Provider=MSDASQL;Persist Security Info=False;Extended Properties="DSN=myodbc3-test;DESC=MySQL ODBC 3.51 TEST DSN;DATABASE=MySql; SERVER=192.168.0.99;UID=root;PASSWORD=;PORT=3306;OPTION=3;STMT=;"
но на месте выделенного явно имя сервера стоит типа SERVER=MySqlServer. нет???
(т.е. хочу сказать не версии зависит а от машины и настроек(в твоем случае))


 
bushmen ©   (2003-06-17 16:02) [13]

To alienka> А что тебе мешает установить ado версии 2.7 ?


 
Shaman ©   (2003-06-17 17:08) [14]


> To alienka> А что тебе мешает установить ado версии 2.7
> ?

Или лучше используй dbExpress.


 
paxer   (2003-06-17 17:35) [15]

Рекомендую компоненты Зеос:
http://www.sourceforge.net/projects/zeoslib
Доступ без БДЕ. Быстро. Бесплатно.


 
alienka   (2003-06-17 17:46) [16]

to sniknik: в имени сервера стоит ip.
Приложение с коннектом на сервер одно, только запускалось на разных компьютерах (я написала в чем разница там). Т.е. в принципе не может влиять на скорость то, что в приложении указано (так ведь?). Тут по моему дело все же в версии адо..


 
sniknik ©   (2003-06-17 17:51) [17]

alienka (17.06.03 17:46)
ну если поставиш мдак 2,7(ADO) и время соеденения на той же машине c 3мин опустится до ~2-5сек, то других вариантов нет.
осталось попробовать.


 
alienka   (2003-06-19 14:40) [18]

поставила mdac 2.7
как ни странно время коннекта к базе сократилось до 10 сек. НО! смотрим сведения о компонентах ядра ADO: ADOConnectionObject.ADOConnectionObject.1 версия 2.00.00.8425, а все остальные компоненты - версии 2,71..
Далее, если опустить коннект к базе, а рассмотреть например перемещение между связанными мастер-детайл датасетами: несмотря на обновление версии перемещается примерно минуту.. :( Что-то тут все же не так.. Посоветуйте где еще порыть в этом ado?


 
Максым   (2003-06-19 15:45) [19]

Рекомендую почитать справочную систему, поставляемую вместе с Delphi.
Там написано, что ежели Вы работаете не с визуальными компонентами (типа DBGrid), то нужно вызвать DisableControls на Query, иначе ADO кеширует все данные выборки перед тем, как отдать её Вам.


 
alienka   (2003-06-19 16:53) [20]

2 Максым: работаю с визуальными компонентами, именно с DBGrid. Перемещение по связанной главной таблице происходит очень медленно. буквально минуты. на отдельно взятой машине, на других все нормально.. значит дело в принципе не в программе(повторяюсь).



Страницы: 1 вся ветка

Текущий архив: 2003.07.14;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.022 c
3-44544
div
2003-06-19 13:55
2003.07.14
Вылетает


1-44758
Zigs
2003-07-01 15:41
2003.07.14
Как изменить в QReport положение TQRDBTEXT на лету?


1-44722
Переяслов Григорий
2003-07-01 09:33
2003.07.14
Изменение контекста Help-а


14-44823
Мазут Береговой
2003-06-25 22:23
2003.07.14
Странные ощущения у меня возникли после прочтения ссылки


1-44743
JFX
2003-07-01 13:55
2003.07.14
Вставка картинок в компоненты