Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Альтернатива ADO для быстрой работы с базой при слабом инете / 18 сообщений из 18, страница 1 из 1
31.08.2010, 18:30
    #36822076
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
Приветствую всех.
База на SQL Server 2008 R2 Express Edition
Пользователи через инет подключаются с удаленных мест к базе.
Клиентская часть написана на VB6 с применением ADO, ComponentOne TrueDBGrid
При слабом инете скорость работы с данными в Grid'е, вообще загрузка данных, даже обычный SELECT "не почеловечески виснет" (ForwardOnly, ReadOnly recordset)
Как можно исправить ситуацию? Инет ускорить возможности нету, может быть есть другие компоненты доступа к данным? Заместо ADO, для более быстрой работы?
Ммм... какой-нибудь собственный direct-connect или еще что

Кстати, строка подключения Provider=SQLOLEDB;Data Source и т.д.
Спасибо за внимание и надеюсь на помощь
...
Рейтинг: 0 / 0
31.08.2010, 18:32
    #36822084
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
Перегружать рекордсет локально (в массив или в локальный рекордсет) и использовать без постоянных запросов к базе.
...
Рейтинг: 0 / 0
31.08.2010, 18:36
    #36822096
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
еще какой-нибудь вариант, кроме сохранения
...
Рейтинг: 0 / 0
31.08.2010, 18:42
    #36822110
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
> Автор: orunbek
> еще какой-нибудь вариант, кроме сохранения

трех-звенку, прием-передача архивируется(я использую zlib.dll) + то что посоветовал Shocker.Pro

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
31.08.2010, 19:06
    #36822141
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
Пока остановился на этом варианте: возврат записей через ADODB.Command
посмотрим что получится
...
Рейтинг: 0 / 0
31.08.2010, 19:08
    #36822144
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
Распределенную базу еще можно.
Поставь в филиалы урезанные микро-базы, и раз в цать минут синхронизируй их с базой в главном офисе. Удаленные клиенты будут подключаться к своим локальным копиям. Тормоза интернета будут "спрятаны" под репликацией.

Искать замену ADO - бессмысленно.
Вот если б речь шла о медленной машине со быстрой сетью, и умением/возможностью работать с нативными интерфейсами (это означает выкидываешь VB, переходишь на C). Тогда переход с ADO был бы оправдан. Да и то вряд-ли. Оверхед у ADO конечно есть, но он настолько минимальный что пользователям он практически не заметен.
...
Рейтинг: 0 / 0
31.08.2010, 19:14
    #36822160
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
что-нить подобное Direct Oracle Access для SQL-сервера нету?
...
Рейтинг: 0 / 0
01.09.2010, 18:27
    #36824558
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
Не надо пытаться показать в Grid-е весь миллион найденных записей. Используя SELECT TOP или соответствующее свойство Recordset-а нужно ограничить выборку несколькими десятками - для того чтобы продолжить поиск юзер пускай уточняет запрос, а не листает Recordset...
...
Рейтинг: 0 / 0
01.09.2010, 20:10
    #36824677
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
orunbekчто-нить подобное Direct Oracle Access для SQL-сервера нету?Конечно есть. TDS называется.
Но если ты сумеешь на VB работать с ним быстрее чем через ADO - я тебе лично памятник поставлю с надписью "Самому быстрому извращенцу" :)
...
Рейтинг: 0 / 0
03.09.2010, 08:10
    #36827173
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
AndrFНе надо пытаться показать в Grid-е весь миллион найденных записей. Используя SELECT TOP или соответствующее свойство Recordset-а нужно ограничить выборку несколькими десятками - для того чтобы продолжить поиск юзер пускай уточняет запрос, а не листает Recordset...

Миллион записей и не отображается, максимум 50 записей отображается, фильтр по дате и т.д.

White Owlorunbekчто-нить подобное Direct Oracle Access для SQL-сервера нету?Конечно есть. TDS называется.
Но если ты сумеешь на VB работать с ним быстрее чем через ADO - я тебе лично памятник поставлю с надписью "Самому быстрому извращенцу" :)
Раз я это в теме VB написал, то соотвественно имел в виду компонент или способ быстрого доступа к базе SQL Server, который можно использовать именно в VB6
...
Рейтинг: 0 / 0
03.09.2010, 08:16
    #36827180
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
здесь написано:

автор
....
....
1. System.Data.SqlClient

Хотя этот инструмент не имеет оболочки пользовательского интерфейса (в отличие от других инструментов этого списка), он является новшеством для работы с базами данных SQL Server в Visual Studio.NET. Использование протокола Tabular Data Stream (TDS) классом System.Data.SqlClient в ADO.NET, в отличие от более ранних версий ADO использующих OLE DB, предоставляет возможность разработчикам задействовать более родное и самое быстрое подключение приложения к SQL Server по протоколу TDS.
....
....


Значит если необходимо писать приложение в котором очень важен скорость доступа к данным, то лучше писать на VB.NET? С использованием System.Data.SqlClient
...
Рейтинг: 0 / 0
03.09.2010, 09:56
    #36827283
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
orunbek,

совершеннейшее ИМХО.

Если открываешь одно соединение, считываешь данные на клиента, закрываешь соединение, то каким бы ты способом это не делал, разницы для пользователя особо не будет. Основное время - передача по каналу данных, а накладные расходы (установка соединения, отправка запроса) мизерные.

DataGrid же пытается открыть курсор на сервере, ездить по нему, держать и поддерживать открытое соединение. Вот тут и начинают накладные расходы превалировать над передачей данных. И переход с АДО на какую-то другую технологию без смены самого алгоритма проблему не решит, ну, допустим, получишь ускорение в 20% на накладных расходах. На скорость передачи данных это не повлияет (упираемся в канал) и на наличие этих постоянных накладных расходов - это проблема датагрида, а не технологии доступа.
Все это можно посмотреть и оценить в профайлере.

Так что лучше скачать данные на клиента, 50 записей - это не так уж много.
...
Рейтинг: 0 / 0
03.09.2010, 10:10
    #36827335
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
По поводу Grid'а, я знаю причину медленной работы, и в этом плане и не собираюсь решать проблему, в принципе устраивает
Проблема была в том, что обычный SELECT * FROM Table WHERE ID=N работает очень медленно, иногда даже отваливается, параметры recordset'а ForwardOnly, ReadOnly
Затем нашел другой способ получение результата через хранимку посредством ADODB.Command, в котором хранимка возвращает тот же SELECT * FROM Table WHERE ID=N, в этом случае случаев отваливания соединения или ошибки выполнения команды вразы меньше стало, и время возврата данных тоже увеличилось, о чём и писал в первых 2-3 сообщениях
...
Рейтинг: 0 / 0
03.09.2010, 10:16
    #36827352
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
Никакой разницы быть не должно.
От ADO сервер получает команду на выполнения запроса или команду на выполнения процедуры и возвращает рекордсет. С точки зрения АДО ничего не меняется, по-разному обрабатывается это исключительно сервером.

Предварительная компиляция (процедура) против динамического запроса при таком простом запросе видимого выигрыша не даст.

P.S. Вам точно звездочка в запросе нужна?
...
Рейтинг: 0 / 0
03.09.2010, 13:01
    #36827917
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
SELECT * FROM
это я так написал, здесь на форуме
в реале идет выборка полей, попробовал через recordset и через ADODB.Command - хранимка возвращает recordset, разница есть
...
Рейтинг: 0 / 0
03.09.2010, 13:02
    #36827921
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
...
Рейтинг: 0 / 0
06.09.2010, 08:50
    #36830789
MAYAKOV_SV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
orunbekПо поводу Grid'а, я знаю причину медленной работы, и в этом плане и не собираюсь решать проблему, в принципе устраивает
Проблема была в том, что обычный SELECT * FROM Table WHERE ID=N работает очень медленно, иногда даже отваливается, параметры recordset'а ForwardOnly, ReadOnly
Может еще поигратся с другими параметрами Recordset?
1) CacheSize установить попробовать (по умолчанию 1), например 100
2) rs.Open ... adAsyncExecute
3) CursorLocation = adUseClient
...
Рейтинг: 0 / 0
06.09.2010, 10:40
    #36830970
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Альтернатива ADO для быстрой работы с базой при слабом инете
MAYAKOV_SV,

ок, попробую и такой вариант
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Альтернатива ADO для быстрой работы с базой при слабом инете / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]