Оптимизация трафика

Методы, механизмы и инструментарий для репликации

Модератор: kdv

Ответить
Voron

Оптимизация трафика

Сообщение Voron » 28 окт 2004, 15:07

При корректировке данных в удаленной базе обнаружил бешенный трафик:
на 4 кб реальных данных (10 записей)
- исходящий трафик - 9 кб
- входящий - 200 кб
:cry:

Использую dbExpress, TClientDataSet, IB7.0

Схема апдейта такая:
- на клиенте есть 10 записей в клиентском наборе
- делаем цикл по этим записям
- считываем из удаленной базы первую запись (SQLQuery, DataSetProvider, TClientDataSet)
- модифицируем ее поля по некоторой логике из клиентского набора на локальном компьютере или оформляем новую, если такой записи на сервере нет
- отсылаем обратно на сервер откорректированную запись (ApplyUpdates)

PrepareStatement - не помогает.

Посоветуйте, в каком направлении рыть. Такой трафик оставить нельзя, так как у клиентов медленный dialup.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 28 окт 2004, 15:34

читал статьи про dbExpress и TClientDataSet?
хотя бы
www.ibase.ru/devinfo/dbexpress.htm ?

скорее всего у тебя метаданные все тащатся, или еще что то - смотри в SQLMonitor (компонент).

Voron

Сообщение Voron » 28 окт 2004, 16:32

kdv писал(а):читал статьи про dbExpress и TClientDataSet?
хотя бы
www.ibase.ru/devinfo/dbexpress.htm ?

скорее всего у тебя метаданные все тащатся, или еще что то - смотри в SQLMonitor (компонент).
Конечно читал (там нет про это). Конечно тащатся. Как не тащить, вот вопрос?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 28 окт 2004, 16:58

Voron писал(а): Конечно читал (там нет про это). Конечно тащатся. Как не тащить, вот вопрос?
я имел в виду что монитор поможет понять, что на твой взгляд лишнее, хотя сам по себе TClientDataSet тащит все сразу. А что не тащить - это уже надо всякими настройками свойств датасет-провайдера, например запретить автоматическое формирование insert/update/delete - он же как раз для их конструирования метаданные и тащит, ну и т.п.

Voron

Сообщение Voron » 28 окт 2004, 18:12

kdv писал(а):
Voron писал(а): я имел в виду что монитор поможет понять, что на твой взгляд лишнее, хотя сам по себе TClientDataSet тащит все сразу. А что не тащить - это уже надо всякими настройками свойств датасет-провайдера, например запретить автоматическое формирование insert/update/delete - он же как раз для их конструирования метаданные и тащит, ну и т.п.
Наверное, ты прав, нужно настройки провайдера подбирать, может быть поля оформить заранее. Входящий трафик, возможно, удастся уменьшить. Смущает еще, что исходящий в 2 с лишним раза больше, чем вес данных.
Ладно, будем искать, спасибо.

eugeney
Сообщения: 79
Зарегистрирован: 29 окт 2004, 18:51

Re: Оптимизация трафика

Сообщение eugeney » 02 ноя 2004, 08:50

Voron писал(а):При корректировке данных в удаленной базе обнаружил бешенный трафик:
на 4 кб реальных данных (10 записей)
- исходящий трафик - 9 кб
- входящий - 200 кб
:cry:

Посоветуйте, в каком направлении рыть. Такой трафик оставить нельзя, так как у клиентов медленный dialup.
Попробуй посмотреть с другой стороны. Выполни операцию 100 раз, и какой будет трафик в этом случаее возможно не такой страшный.

Второе Если мне не изменяет память в gds32 есть маленкая особенность если у тебя поле объеявленно как varchar(500) а ты туда пишеш 2 символа по сети бует передаваться все равно 500.

Третье при сипользвоании dial-up просто необходимо использовать сжатие трафика т.к. в FB/IB он не оптимальный. Я использую в своих проектах zebede.

Гость

Re: Оптимизация трафика

Сообщение Гость » 02 ноя 2004, 10:54

eugeney писал(а):Второе Если мне не изменяет память в gds32 есть маленкая особенность если у тебя поле объеявленно как varchar(500) а ты туда пишеш 2 символа по сети бует передаваться все равно 500.
Кажется, это уже исправили
eugeney писал(а):Третье при сипользвоании dial-up просто необходимо использовать сжатие трафика т.к. в FB/IB он не оптимальный. Я использую в своих проектах zebede.
Zebede поможет, если запрос возвращает полей 20, если 2-3 то станет только хуже. Раз уж у тебя все равно ClientDataSet - используй трехзвенку через сокеты, там можно Interceptor подключить -- пример с упаковкой как раз идет в комплекте с Дельфи.

Voron

Сообщение Voron » 12 ноя 2004, 13:05

Подкажите, может ситуация с трафиком улучшится, если использовать FIBPlus (там кажется есть механизм для кеширования метаданных). Очень хорошо дела с трафиком у IBExpert. Он случаем не FIB использует ?

Dmitry Beloshistov
Сообщения: 41
Зарегистрирован: 27 окт 2004, 11:06

Сообщение Dmitry Beloshistov » 12 ноя 2004, 13:57

Voron писал(а):Очень хорошо дела с трафиком у IBExpert. Он случаем не FIB использует ?
IBE построен на модифицированной версии FIB+.

Ответить