Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Скорость работы Fireberd по сети / 25 сообщений из 111, страница 1 из 5
18.02.2020, 07:27
    #39927733
RRR39
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
Есть старая тема 2014 года с такой же проблемой. Проблема там не была решена.
Сначала написал туда, мне посоветовали создать новую тему.

Имеется база на Fireberd 1.5. и клиентское приложение.
Возникла потребность работы с данной базой через интернет.
Скорость выполнения запросов очень сильно отличается в зависимости от того к какому провайдеру подключен клиент. Скорость работы с компьютера получающего интернет от того же провайдера что и сервер, сильно отличается от скорости с компьютера с интернетом от другого провайдера.
Скорость интернета клиентских машин одинакова 100 Мбит.
В чем проблема, и как ее решить?

Отчету IBExpert

Простой запрос из сети того же провайдера

План
PLAN (FIB$DATASETS_INFO ORDER PK_FIB$DATASETS_INFO)

------ Performance info ------
Prepare time = 47ms
Execute time = 0ms
Avg fetch time = 0,00 ms
Current memory = 10 976 712
Max memory = 11 280 600
Memory buffers = 2 048
Reads from disk to cache = 40
Writes from cache to disk = 0
Fetches from cache = 502


Простой запрос из сети другого провайдера

План
PLAN (FIB$DATASETS_INFO ORDER PK_FIB$DATASETS_INFO)

------ Информация о производительности ------
Время подготовки запроса = 1s 61ms
Время выполнения запроса = 156ms
Среднее время на получение одной записи = 4,22 ms
Current memory = 11 303 216
Max memory = 11 660 188
Memory buffers = 2 048
Reads from disk to cache = 40
Writes from cache to disk = 0
Fetches from cache = 502



Более тяжелый запрос из сети того же провайдера

План
PLAN SORT (JOIN (JOIN (JOIN (JOIN (JOIN (S NATURAL,H INDEX (FK4_HOUSES),F INDEX (FK1_FLATES),C INDEX (FK1_COUNTS),T INDEX (FK2_TURNS)),JOIN (JOIN (T INDEX (PK_TURNS),U INDEX (FK1_UTILITIES)),JOIN (T INDEX (FK2_TURNS),PM INDEX (FK1_PAYMENTS),PP INDEX (FK_PARTPAYS_PENY_1)))),JOIN (T INDEX (FK2_TURNS),P INDEX (PENY_IDX1))),SORT (JOIN (JOIN (JOIN (CD INDEX (FK1_COUNT_DOCS),D INDEX (PK_DOCUMENTS)),CDP INDEX (FK_COUNT_DOCS_PEOPLES_1)),P INDEX (PK_PEOPLE)))),CERTIFICATES INDEX (PK_CERTIFICATES))(COUNT_DOCS INDEX (FK1_COUNT_DOCS))(PERIODS INDEX (PK_PERIODS))(P INDEX (PK_PERIODS)))

------ Performance info ------
Prepare time = 47ms
Execute time = 5s 710ms
Avg fetch time = 228,40 ms

Более тяжелый запрос из сети другого провайдера

План
PLAN SORT (JOIN (JOIN (JOIN (JOIN (JOIN (S NATURAL,H INDEX (FK4_HOUSES),F INDEX (FK1_FLATES),C INDEX (FK1_COUNTS),T INDEX (FK2_TURNS)),JOIN (JOIN (T INDEX (PK_TURNS),U INDEX (FK1_UTILITIES)),JOIN (T INDEX (FK2_TURNS),PM INDEX (FK1_PAYMENTS),PP INDEX (FK_PARTPAYS_PENY_1)))),JOIN (T INDEX (FK2_TURNS),P INDEX (PENY_IDX1))),SORT (JOIN (JOIN (JOIN (CD INDEX (FK1_COUNT_DOCS),D INDEX (PK_DOCUMENTS)),CDP INDEX (FK_COUNT_DOCS_PEOPLES_1)),P INDEX (PK_PEOPLE)))),CERTIFICATES INDEX (PK_CERTIFICATES))(COUNT_DOCS INDEX (FK1_COUNT_DOCS))(PERIODS INDEX (PK_PERIODS))(P INDEX (PK_PERIODS)))

------ Информация о производительности ------
Время подготовки запроса = 1s 373ms
Время выполнения запроса = 5s 85ms
Среднее время на получение одной записи = 169,50 ms


Этот же запрос из сети другого провайдера через несколько минут

План
PLAN SORT (JOIN (JOIN (JOIN (JOIN (JOIN (S NATURAL,H INDEX (FK4_HOUSES),F INDEX (FK1_FLATES),C INDEX (FK1_COUNTS),T INDEX (FK2_TURNS)),JOIN (JOIN (T INDEX (PK_TURNS),U INDEX (FK1_UTILITIES)),JOIN (T INDEX (FK2_TURNS),PM INDEX (FK1_PAYMENTS),PP INDEX (FK_PARTPAYS_PENY_1)))),JOIN (T INDEX (FK2_TURNS),P INDEX (PENY_IDX1))),SORT (JOIN (JOIN (JOIN (CD INDEX (FK1_COUNT_DOCS),D INDEX (PK_DOCUMENTS)),CDP INDEX (FK_COUNT_DOCS_PEOPLES_1)),P INDEX (PK_PEOPLE)))),CERTIFICATES INDEX (PK_CERTIFICATES))(COUNT_DOCS INDEX (FK1_COUNT_DOCS))(PERIODS INDEX (PK_PERIODS))(P INDEX (PK_PERIODS)))

------ Информация о производительности ------
Время подготовки запроса = 967ms
Время выполнения запроса = 5s 351ms
Среднее время на получение одной записи = 178,37 ms
...
Рейтинг: 0 / 0
18.02.2020, 09:22
    #39927768
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
RRR39,

вопрос про базу на одном и том же компе, а клиент - с разных провайдеров?
...
Рейтинг: 0 / 0
18.02.2020, 09:34
    #39927774
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
RRR39,

FB версий до 2.5 (или даже до 3.0) сильно зависит не столько от пропускной способности сети, сколько от времени отклика.
после 50 мс работать становится некомфортно.

в 1.5. ничего с этим поделать нельзя.
Переходите на тройку, переписывайте приложение, уменьшайте кол-во обращений к серверу.


У меня сейчас приложения вместо чтения настроек и ресурсов по месту применения, читают все таблицу при подключении.
...
Рейтинг: 0 / 0
18.02.2020, 09:36
    #39927776
RRR39
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
kdv,

Да.
"Контора1" (где база) - "Провайдер1".
Домашний комп - "Провайдер1".
"Котнора2" (которой надо организовать работу с базой через интернет) - "Провайдер2".
Тормозит из Контора2 в Контора1.
...
Рейтинг: 0 / 0
18.02.2020, 09:38
    #39927777
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
pastor,

насколько я помню сетевой протокол правили в 2.1. В 3.0 сделали ещё несколько улучшений.
...
Рейтинг: 0 / 0
18.02.2020, 09:45
    #39927780
RRR39
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
pastor
RRR39,
Переходите на тройку, переписывайте приложение, уменьшайте кол-во обращений к серверу.


Хотел как то давно перевести базу на 2.5, но столкнулся с проблемой зарезервированных имен. В базе довольно много полей с именем "START". Соответственно с таким же именем есть поля представлений, параметры процедур и тригерров. В 2 с чем то это имя зарезервировали, и если поправить запросы не проблема, достаточно взять START в ковычки, то перетряхать и пересобирать процедуры и представления довольно геморойно. Задача конечно решаема, но это на крайней случай.
...
Рейтинг: 0 / 0
18.02.2020, 10:29
    #39927805
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
RRR39
В базе довольно много полей с именем "START"
Во блин, еще б begin/end поля назвали, или там, integer integer...
...
Рейтинг: 0 / 0
18.02.2020, 10:33
    #39927811
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
YuRock,

чуйка иногда подводит. Я вот тоже поле RANK назвал. При переходе на трёшку пришлось переделывать
...
Рейтинг: 0 / 0
18.02.2020, 10:49
    #39927824
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
18.02.2020 10:33, Симонов Денис пишет:
>
> чуйка иногда подводит. Я вот тоже поле RANK назвал. При переходе на трёшку пришлось переделывать
>

PATAMU CHTA NADO POLZOVAT RUSSKYE IMENA POLEY.

и хрен тогда нахтупишь на грабли %)))

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.02.2020, 10:59
    #39927835
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
МимопроходящийPATAMU CHTA NADO POLZOVAT RUSSKYE IMENA POLEY.
нет. надо просто учить английский язык.

p.s. а насчет START - действительно ключевое слово в 2.5, но "зачем оно" - не врубаюсь.
...
Рейтинг: 0 / 0
18.02.2020, 11:06
    #39927842
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
kdv,

триггер ON TRANSACTION START
В 3.0 ещё в определении SEQUENCE/IDENTITY может быть
...
Рейтинг: 0 / 0
18.02.2020, 11:07
    #39927843
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
Симонов Денис
pastor,

насколько я помню сетевой протокол правили в 2.1. В 3.0 сделали ещё несколько улучшений.


2.1 мы проскочили. с 1.5 сразу на 2.5

тройку тоже проскакиваем, но задержки по сети на 3.0 тестировали. улучшения были, но не в разы. оптимизация нашего кода принесла гораздо больше эффекта.
...
Рейтинг: 0 / 0
18.02.2020, 11:11
    #39927847
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
Симонов Денис
kdv,

триггер ON TRANSACTION START
В 3.0 ещё в определении SEQUENCE/IDENTITY может быть


там весь алфавит ангельский найти можно при желании.

вроде как убирали кучу ранее зарезервированных слов, на зависимость от контекста
...
Рейтинг: 0 / 0
18.02.2020, 13:01
    #39927916
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
RRR39
Скорость интернета клиентских машин одинакова 100 Мбит.
В чем проблема, и как ее решить?


RRR39
Среднее время на получение одной записи = 169,50 ms

Тебе еще повезло.
Потому что "запрос - ожидание - ответ".
Предположим, связь ч/з и-нет - через спутники.
Геостационарный спутник висит на высоте ~35700км. Э/м сигнал доходит до него за 0.12 сек. Еще 0.12 сек - обратно, итого - четверть секунды. Без учета времени обработки на сервере и в аппаратуре связи.

С FireBird 1.5 ничего сделать нельзя, он старый и всеми забыт. Нужно менять логику работы, не "запрос-ответ" маленькими порциями, а "запрос - много данных", например - с помощью сервера приложений. Нужно программировать.
...
Рейтинг: 0 / 0
18.02.2020, 13:07
    #39927926
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
pastor
RRR39,

FB версий до 2.5 (или даже до 3.0) сильно зависит не столько от пропускной способности сети, сколько от времени отклика.
после 50 мс работать становится некомфортно.

в 1.5. ничего с этим поделать нельзя.
Переходите на тройку, переписывайте приложение, уменьшайте кол-во обращений к серверу.


У меня сейчас приложения вместо чтения настроек и ресурсов по месту применения, читают все таблицу при подключении.


+1
Если таблица справочная (особенно если в ней хранится куча настроек), то лучше её запросить один раз и хранить на клиенте, периодически обновляя.

Также можно добиться значительного ускорения, если избежать лишних операций "prepare", они для мелких быстрых запросов выполняются дольше (если время отклика сети большое), чем сам запрос (скорее всего на этапе prepare выполняется не один, а несколько сетевых запросов, вероятно, в зависимости от количества параметров в запросе).
...
Рейтинг: 0 / 0
18.02.2020, 13:21
    #39927940
Дегтярев Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
DmSer
(скорее всего на этапе prepare выполняется не один, а несколько сетевых запросов, вероятно, в зависимости от количества параметров в запросе).

не один
op_allocate_statement + op_prepare_statement
и еще я видел op_info_sql
...
Рейтинг: 0 / 0
18.02.2020, 13:25
    #39927944
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
ёёёёё
Геостационарный спутник висит на высоте ~35700км. Э/м сигнал доходит до него за 0.12 сек. Еще 0.12 сек - обратно, итого - четверть секунды. Без учета времени обработки на сервере и в аппаратуре связи.
по факту было минимум 400 мс, если канал не загружен и от 600 до 800 мс в часы пик. Это если односторонняя спутниковая часть с запросами через АДСЛ. Романтика... Сейчас 3Г есть даже в деревне в 170 км от города. Спутник для телевизионщиков, делать "последнюю милю" через спутники зело дорого.
...
Рейтинг: 0 / 0
18.02.2020, 14:11
    #39927969
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
DmSer

+1
Если таблица справочная (особенно если в ней хранится куча настроек), то лучше её запросить один раз и хранить на клиенте, периодически обновляя.


Это ж надо логику какую-то прописать. Периодическое обновление! Я ещё понимаю, если справочник ну очень редкоизменяемый, ну прямо совсем редко.
Ещё надо заметить, что не совсем тривиальная задача сделать запрос, который подтянет данные с сервака и объединит их с теми, которые уже на клиенте.
...
Рейтинг: 0 / 0
18.02.2020, 14:18
    #39927974
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
KreatorXXI
DmSer

+1
Если таблица справочная (особенно если в ней хранится куча настроек), то лучше её запросить один раз и хранить на клиенте, периодически обновляя.


Это ж надо логику какую-то прописать. Периодическое обновление! Я ещё понимаю, если справочник ну очень редкоизменяемый, ну прямо совсем редко.
Ещё надо заметить, что не совсем тривиальная задача сделать запрос, который подтянет данные с сервака и объединит их с теми, которые уже на клиенте.


pastorУ меня сейчас приложения вместо чтения настроек и ресурсов по месту применения, читают все таблицу при подключении.
...
Рейтинг: 0 / 0
18.02.2020, 14:37
    #39927983
RRR39
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
ёёёёё
С FireBird 1.5 ничего сделать нельзя, он старый и всеми забыт. Нужно менять логику работы, не "запрос-ответ" маленькими порциями, а "запрос - много данных", например - с помощью сервера приложений. Нужно программировать.


Из дома то нормальная скорость.
...
Рейтинг: 0 / 0
18.02.2020, 14:39
    #39927988
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
RRR39
ёёёёё
С FireBird 1.5 ничего сделать нельзя, он старый и всеми забыт. Нужно менять логику работы, не "запрос-ответ" маленькими порциями, а "запрос - много данных", например - с помощью сервера приложений. Нужно программировать.


Из дома то нормальная скорость.

Значит, надо работать из дома.
...
Рейтинг: 0 / 0
18.02.2020, 14:44
    #39927994
RRR39
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
DmSer

Если таблица справочная (особенно если в ней хранится куча настроек), то лучше её запросить один раз и хранить на клиенте, периодически обновляя.


Как раз первый запрос, это загрузка на клиент SQL запросов, там их около 150 записей 5 BLOBов на запись. Домой грузит быстро, разница с локальной базой пару секунд, а в Контрору2 грузит минуту.
...
Рейтинг: 0 / 0
18.02.2020, 14:46
    #39927996
RRR39
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
ёёёёё
Значит, надо работать из дома.


В том то и дело, что работать надо из Конторы2
...
Рейтинг: 0 / 0
18.02.2020, 14:47
    #39927997
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
кастуй БЛОБы к варчару.
роундтрипов меньше будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.02.2020, 14:47
    #39927998
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость работы Fireberd по сети
RRR39,

BLOB говоришь. Грузит быстро... Верится с трудом

RRR39Домой грузит быстро, разница с локальной базой пару секунд, а в Контрору2 грузит минуту.

сравни пинги
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Скорость работы Fireberd по сети / 25 сообщений из 111, страница 1 из 5
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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