Форум: "Базы";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
Внизэто реализация 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c