Оптимизация трафика
Модератор: kdv
Оптимизация трафика
При корректировке данных в удаленной базе обнаружил бешенный трафик:
на 4 кб реальных данных (10 записей)
- исходящий трафик - 9 кб
- входящий - 200 кб
Использую dbExpress, TClientDataSet, IB7.0
Схема апдейта такая:
- на клиенте есть 10 записей в клиентском наборе
- делаем цикл по этим записям
- считываем из удаленной базы первую запись (SQLQuery, DataSetProvider, TClientDataSet)
- модифицируем ее поля по некоторой логике из клиентского набора на локальном компьютере или оформляем новую, если такой записи на сервере нет
- отсылаем обратно на сервер откорректированную запись (ApplyUpdates)
PrepareStatement - не помогает.
Посоветуйте, в каком направлении рыть. Такой трафик оставить нельзя, так как у клиентов медленный dialup.
на 4 кб реальных данных (10 записей)
- исходящий трафик - 9 кб
- входящий - 200 кб
Использую dbExpress, TClientDataSet, IB7.0
Схема апдейта такая:
- на клиенте есть 10 записей в клиентском наборе
- делаем цикл по этим записям
- считываем из удаленной базы первую запись (SQLQuery, DataSetProvider, TClientDataSet)
- модифицируем ее поля по некоторой логике из клиентского набора на локальном компьютере или оформляем новую, если такой записи на сервере нет
- отсылаем обратно на сервер откорректированную запись (ApplyUpdates)
PrepareStatement - не помогает.
Посоветуйте, в каком направлении рыть. Такой трафик оставить нельзя, так как у клиентов медленный dialup.
читал статьи про dbExpress и TClientDataSet?
хотя бы
www.ibase.ru/devinfo/dbexpress.htm ?
скорее всего у тебя метаданные все тащатся, или еще что то - смотри в SQLMonitor (компонент).
хотя бы
www.ibase.ru/devinfo/dbexpress.htm ?
скорее всего у тебя метаданные все тащатся, или еще что то - смотри в SQLMonitor (компонент).
Конечно читал (там нет про это). Конечно тащатся. Как не тащить, вот вопрос?kdv писал(а):читал статьи про dbExpress и TClientDataSet?
хотя бы
www.ibase.ru/devinfo/dbexpress.htm ?
скорее всего у тебя метаданные все тащатся, или еще что то - смотри в SQLMonitor (компонент).
я имел в виду что монитор поможет понять, что на твой взгляд лишнее, хотя сам по себе TClientDataSet тащит все сразу. А что не тащить - это уже надо всякими настройками свойств датасет-провайдера, например запретить автоматическое формирование insert/update/delete - он же как раз для их конструирования метаданные и тащит, ну и т.п.Voron писал(а): Конечно читал (там нет про это). Конечно тащатся. Как не тащить, вот вопрос?
Наверное, ты прав, нужно настройки провайдера подбирать, может быть поля оформить заранее. Входящий трафик, возможно, удастся уменьшить. Смущает еще, что исходящий в 2 с лишним раза больше, чем вес данных.kdv писал(а):Voron писал(а): я имел в виду что монитор поможет понять, что на твой взгляд лишнее, хотя сам по себе TClientDataSet тащит все сразу. А что не тащить - это уже надо всякими настройками свойств датасет-провайдера, например запретить автоматическое формирование insert/update/delete - он же как раз для их конструирования метаданные и тащит, ну и т.п.
Ладно, будем искать, спасибо.
Re: Оптимизация трафика
Попробуй посмотреть с другой стороны. Выполни операцию 100 раз, и какой будет трафик в этом случаее возможно не такой страшный.Voron писал(а):При корректировке данных в удаленной базе обнаружил бешенный трафик:
на 4 кб реальных данных (10 записей)
- исходящий трафик - 9 кб
- входящий - 200 кб
Посоветуйте, в каком направлении рыть. Такой трафик оставить нельзя, так как у клиентов медленный dialup.
Второе Если мне не изменяет память в gds32 есть маленкая особенность если у тебя поле объеявленно как varchar(500) а ты туда пишеш 2 символа по сети бует передаваться все равно 500.
Третье при сипользвоании dial-up просто необходимо использовать сжатие трафика т.к. в FB/IB он не оптимальный. Я использую в своих проектах zebede.
Re: Оптимизация трафика
Кажется, это уже исправилиeugeney писал(а):Второе Если мне не изменяет память в gds32 есть маленкая особенность если у тебя поле объеявленно как varchar(500) а ты туда пишеш 2 символа по сети бует передаваться все равно 500.
Zebede поможет, если запрос возвращает полей 20, если 2-3 то станет только хуже. Раз уж у тебя все равно ClientDataSet - используй трехзвенку через сокеты, там можно Interceptor подключить -- пример с упаковкой как раз идет в комплекте с Дельфи.eugeney писал(а):Третье при сипользвоании dial-up просто необходимо использовать сжатие трафика т.к. в FB/IB он не оптимальный. Я использую в своих проектах zebede.
-
- Сообщения: 41
- Зарегистрирован: 27 окт 2004, 11:06