Форум: "Базы";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизКак настроить ADO что бы быстрее работало с dbf,а то Найти похожие ветки
← →
ceval © (2004-12-31 09:28) [0]Как настроить ADO что бы быстрее работало с dbf,а то
долго открывает
Пробывал крутить с CursorLocation менял ClUseServer
и CLUseClient не помогло
Спасибо
← →
Anatoly Podgoretsky © (2004-12-31 10:04) [1]Используй БДЕ
← →
sniknik © (2004-12-31 11:13) [2]что именно надо ускорить?
если открытие таблиц то ставь серверный курсор (не помогло значит чтото напортачил), если "пробежку" по датасетам то локальный. если и то и другое то зависит от провайдера, не все могут в локальном режиме работать (вообще ADO это для клиент серверных "отношений" ;о)).
и в любом случае если ты собираешся с клиент сервером работать мотодами файл сервера/локалки, то скорости не жди.
> Используй БДЕ
← →
ceval © (2004-12-31 12:07) [3]Пробывал на BDE но при открытии индекстного файла *.CDX
выдает :
Procudtion index files missing corrupt or cannot interpret index key
и открывает в режиме Open read only без индексов
← →
Anatoly Podgoretsky © (2004-12-31 12:20) [4]А что же ты молчал, что у тебя FoxPro, для него используй АДО с соответствующим провайдером OLEDB
← →
ceval © (2005-01-04 09:20) [5]Так я пробывал и Provider=Microsoft.Jet.OLEDB.4.0 и Driver={Microsoft dBase Driver (*.dbf)} и Driver={Microsoft FoxPro VFP Driver (*.dbf)} но все равно работает очень медление чем в BDE
← →
sniknik © (2005-01-04 12:16) [6]понимаеш разницу между локальным и клиент серверным методами?
при локальном открытие таблици это - просто открытие файла и "навигация" в нем перемещение по записям, при клиент серверном открытие это - чтение файла на сервере и перекачка запрошенных данных на клиента, навигация уже в них (полученном рекордсете). естественно будет медленнее, вопрос насколько... если сильно а размер таблиц маленький то скорее всего глюк в коде.
ADO разрабатывалось для клиент серверного метода и работает так даже с локальными базами, роль сервера выполняет провайдер данных, такой как jet например. правда у jet-а есть подобная "фенечка" как работа с локальными данными локально что достигается установкой серверного курсора (и еще чегото там посмотри в хелпе на функцию seek в нотациях) работать будет (должно) быстрее но так как все идет через COM обьект все одно немного(!!!) медленнее (глазом не усечеш) чем при прямом открытии файла, само чтение в COM обьекте для dbf/db делается через BDE (такая вот особенность, читай хелп лоя jet-а).
VFP по моему всегда так работает, но у него есть свои "фенечки" (например нет нормальной работы с индексами, создание удаление, в отсутствии базового файла)
слова "очень медление" дают основание что ты просто "не справился с управлением" ;), не смог правильно настроить. пробуй еще (если не хочеш всетаки внять голосу разума [1] ;о))).
← →
Anatoly Podgoretsky © (2005-01-04 13:20) [7]ceval © (04.01.05 09:20) [5]
Что значит медленнее, у тебя с БДЕ совсем не работает, то есть скорость нулевая.
sniknik © (04.01.05 12:16) [6]
[1] не получится смотри абзац выше, у него ФоксПро неизвестной версии.
← →
msguns © (2005-01-04 15:10) [8]ADO вообще работает значительно медленнее с локалками (см.sniknik © (04.01.05 12:16) [6] 2-й абзац). Биде открывает курсор существенно быстрее (нету тормозов при открытии формы). Однако преимущества биде очень быстро превращаются в недостатки при больших объемах: ADO как работало "повильно", так и работает, а биде начинает тормозить не по-детски. Да и существенные траблы с откатами-подтверждениями, что приводит к слету индексов и ремонту БД. Часто с потерями информации. В ADO же подтвержденные данные не теряются (т.е. если прога получила сигнал о том, что апдейт завершен, можно быть уверенным, что в базе все изменения сохранились и сама база корректна). Чего нельзя сказать и биде. За скорость "реакции" приходится платить пониженной надежностью.
← →
sniknik © (2005-01-04 17:33) [9]Anatoly Podgoretsky © (04.01.05 13:20) [7]
если через jet подключился значит есть хорошие шансы что выйдет.
но вообщето да, не обратил внимания.
ceval
с VFP драйвером открытие с серверным курсором намного быстрее (непонятно почему у тебя не получилось) чем с локальным (сам попробовал открыть большую таблицу ~200тыс записей, на локальном 9,5сек на серверном около 1 сек, да не прямое открытие, которое будет 0 сек занимать но всетаки быстрее)
если уж так критично, и базу не поменять то поиши обертку (/компанент) для ODBC-шной библиотеки odbc32.dll. (правда может и не помочь, если принцип реализован на уровне драйвера... т.е. сам драйвер работает не на открытом файле, а с перекачкой в рекордсет и работает уже с ним. что вполне возможно)
← →
ceval © (2005-01-05 16:04) [10]Большое огромное спасибо всем за помощь !!
Я тут помучился и уменя получилось следующие :
поставил Driver={Microsoft dBase VFP Driver (*.dbf)} таблица 17164 записей (при локальном
9,2 сек, а при серверном 2,4 сек конечно по быстрее будет)
Но у меня возникла другая проблема ИНДЕКСАМИ
Если я правельно разобрался в АДо нельзя подключить индекстный файл как в BDE
table.Indexfiles.Add("ktcpind.cdx");
table.IndexName:="izd";
В ADO есть INdexFielName
При попытке открытьADOTable1.TableName:="ktcp";
ADOTable1.Active:=true;
ADOTable1.IndexFieldNames:="odcc;oicc";
ADoTable установлен dBase VFP Driver и северный курсор выдает ошибку
"Выполняемая приложением операция не поддерживается службой доступа"
А если стоит локальнай курсор то открывает без проблем
Что ДЕЛАТЬ ?? (почти по Герцину :) )
← →
sniknik © (2005-01-05 17:05) [11]используеш поля не входяшее в индекс. при локальном курсоре это "знак" для ADO что нужно сделать переиндексацию (временную на рекордсете но не в таблице) для серверного эта же операция предлагается драйверу который ее не поддерживает.
> Если я правельно разобрался в АДо нельзя подключить индекстный файл как в BDE
неправильно, cdx это не файловый индекс который нужно подключать (компаундный, насколько помню термин ;) смысл в том что там несколько индексов в одном, обрашаются к ним по тегам, а подключается он (и в BDE тоже, опять же насколько помню) автоматически по признаку индексированности в файле *.dbf (если признак есть то подключается)
подключаются же файловые индексы с расширениями *.idx (фокс) *.ntx (dBase/клиппер).
> Что ДЕЛАТЬ ??
пользуйся готовыми индексами которые найдеш в списке IndexName компанента (если нужны другие/новые сделай в фоксе). прежде чем задать еще вопрос на эту тему перечитай [6] внимательно по поводу "фенечек". ;о)
← →
ceval © (2005-01-05 18:32) [12]sniknik [11]
> Что ДЕЛАТЬ ??
пользуйся готовыми индексами которые найдеш в списке IndexName компанента (если нужны другие/новые сделай в фоксе).
В том то и дело что индексов в списке IndexName нет ?
ы.з.[6] еще раз внимательно прочитаю обязательно
← →
sniknik © (2005-01-05 19:02) [13]> В том то и дело что индексов в списке IndexName нет ?
значит и индексов нет, вообще. (снят признак в файле, индексный файл порушен (нет заголовка, описаний), индексный файл имеет не то имя (должно совпадать с dbf-ным), возможно директория/имя по русски/с пробелами поэтому движок его не находит, и т.д. сразу все не смогу предположить, что возможно)
← →
ceval © (2005-01-05 19:13) [14]Тут ты прав sniknik [13] так сложилось еще до меня все индекстные файлы имеют имя файла dbf + i-на конце XXX.dbf XXXi.cdx(
индексный файл имеет не то имя (должно совпадать с dbf-ным)
)
А что можно сделать в этом случаи ?
← →
sniknik © (2005-01-05 19:44) [15]> Тут ты прав sniknik [13]
т.е. в остальных случаях я не прав? будь добр скажи где, а то ведь не усну буду мучится искать в чем моя неправота. ;о))
> А что можно сделать в этом случаи ?
взять компонент который это понимает, благо валом их (ктото говорил штук 300, я когда искал, нашол, скачал, проверил 28(примерно) остановился на halcyon-е. тебе он может и не подойти, версию фокса ты так и не уточнил...).
← →
ceval © (2005-01-05 20:17) [16]Удалено модератором
Примечание: дубль
← →
ceval © (2005-01-05 20:19) [17]Sniknik просто для меня в первую очередь просилось в глаза "индексный файл имеет не то имя (должно совпадать с dbf-ным)"
Я тоже взял и пробывал на других компонентах
Начал делать на halcyon"е 6 тут возникла проблема с поискам
....
try
if Fmain.Table_cenpok.Locate("bsh;sh",VarArrayOf ([edit1.Text,Edit2.text]),[loCaseInsensitive])
then ModalResult:=mryes
else ModalResult:=mrno
except
......
Один и тодже код использывал при поиске ADO и при использывании
Halcyon в ADO ищет в Halcyon нет - (дело в том что я использую около 10 dbf-файлов в большой половине работает а в некоторых нет)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.04 c