|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
Есть старая тема 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 07:27 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
RRR39, вопрос про базу на одном и том же компе, а клиент - с разных провайдеров? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 09:22 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
RRR39, FB версий до 2.5 (или даже до 3.0) сильно зависит не столько от пропускной способности сети, сколько от времени отклика. после 50 мс работать становится некомфортно. в 1.5. ничего с этим поделать нельзя. Переходите на тройку, переписывайте приложение, уменьшайте кол-во обращений к серверу. У меня сейчас приложения вместо чтения настроек и ресурсов по месту применения, читают все таблицу при подключении. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 09:34 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
kdv, Да. "Контора1" (где база) - "Провайдер1". Домашний комп - "Провайдер1". "Котнора2" (которой надо организовать работу с базой через интернет) - "Провайдер2". Тормозит из Контора2 в Контора1. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 09:36 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
pastor, насколько я помню сетевой протокол правили в 2.1. В 3.0 сделали ещё несколько улучшений. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 09:38 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
pastor RRR39, Переходите на тройку, переписывайте приложение, уменьшайте кол-во обращений к серверу. Хотел как то давно перевести базу на 2.5, но столкнулся с проблемой зарезервированных имен. В базе довольно много полей с именем "START". Соответственно с таким же именем есть поля представлений, параметры процедур и тригерров. В 2 с чем то это имя зарезервировали, и если поправить запросы не проблема, достаточно взять START в ковычки, то перетряхать и пересобирать процедуры и представления довольно геморойно. Задача конечно решаема, но это на крайней случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 09:45 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
RRR39 В базе довольно много полей с именем "START" ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 10:29 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
YuRock, чуйка иногда подводит. Я вот тоже поле RANK назвал. При переходе на трёшку пришлось переделывать ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 10:33 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
18.02.2020 10:33, Симонов Денис пишет: > > чуйка иногда подводит. Я вот тоже поле RANK назвал. При переходе на трёшку пришлось переделывать > PATAMU CHTA NADO POLZOVAT RUSSKYE IMENA POLEY. и хрен тогда нахтупишь на грабли %))) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 10:49 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
МимопроходящийPATAMU CHTA NADO POLZOVAT RUSSKYE IMENA POLEY. нет. надо просто учить английский язык. p.s. а насчет START - действительно ключевое слово в 2.5, но "зачем оно" - не врубаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 10:59 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
kdv, триггер ON TRANSACTION START В 3.0 ещё в определении SEQUENCE/IDENTITY может быть ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 11:06 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
Симонов Денис pastor, насколько я помню сетевой протокол правили в 2.1. В 3.0 сделали ещё несколько улучшений. 2.1 мы проскочили. с 1.5 сразу на 2.5 тройку тоже проскакиваем, но задержки по сети на 3.0 тестировали. улучшения были, но не в разы. оптимизация нашего кода принесла гораздо больше эффекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 11:07 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
Симонов Денис kdv, триггер ON TRANSACTION START В 3.0 ещё в определении SEQUENCE/IDENTITY может быть там весь алфавит ангельский найти можно при желании. вроде как убирали кучу ранее зарезервированных слов, на зависимость от контекста ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 11:11 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
RRR39 Скорость интернета клиентских машин одинакова 100 Мбит. В чем проблема, и как ее решить? RRR39 Среднее время на получение одной записи = 169,50 ms Тебе еще повезло. Потому что "запрос - ожидание - ответ". Предположим, связь ч/з и-нет - через спутники. Геостационарный спутник висит на высоте ~35700км. Э/м сигнал доходит до него за 0.12 сек. Еще 0.12 сек - обратно, итого - четверть секунды. Без учета времени обработки на сервере и в аппаратуре связи. С FireBird 1.5 ничего сделать нельзя, он старый и всеми забыт. Нужно менять логику работы, не "запрос-ответ" маленькими порциями, а "запрос - много данных", например - с помощью сервера приложений. Нужно программировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 13:01 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
pastor RRR39, FB версий до 2.5 (или даже до 3.0) сильно зависит не столько от пропускной способности сети, сколько от времени отклика. после 50 мс работать становится некомфортно. в 1.5. ничего с этим поделать нельзя. Переходите на тройку, переписывайте приложение, уменьшайте кол-во обращений к серверу. У меня сейчас приложения вместо чтения настроек и ресурсов по месту применения, читают все таблицу при подключении. +1 Если таблица справочная (особенно если в ней хранится куча настроек), то лучше её запросить один раз и хранить на клиенте, периодически обновляя. Также можно добиться значительного ускорения, если избежать лишних операций "prepare", они для мелких быстрых запросов выполняются дольше (если время отклика сети большое), чем сам запрос (скорее всего на этапе prepare выполняется не один, а несколько сетевых запросов, вероятно, в зависимости от количества параметров в запросе). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 13:07 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
DmSer (скорее всего на этапе prepare выполняется не один, а несколько сетевых запросов, вероятно, в зависимости от количества параметров в запросе). не один op_allocate_statement + op_prepare_statement и еще я видел op_info_sql ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 13:21 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
ёёёёё Геостационарный спутник висит на высоте ~35700км. Э/м сигнал доходит до него за 0.12 сек. Еще 0.12 сек - обратно, итого - четверть секунды. Без учета времени обработки на сервере и в аппаратуре связи. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 13:25 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
DmSer +1 Если таблица справочная (особенно если в ней хранится куча настроек), то лучше её запросить один раз и хранить на клиенте, периодически обновляя. Это ж надо логику какую-то прописать. Периодическое обновление! Я ещё понимаю, если справочник ну очень редкоизменяемый, ну прямо совсем редко. Ещё надо заметить, что не совсем тривиальная задача сделать запрос, который подтянет данные с сервака и объединит их с теми, которые уже на клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 14:11 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
KreatorXXI DmSer +1 Если таблица справочная (особенно если в ней хранится куча настроек), то лучше её запросить один раз и хранить на клиенте, периодически обновляя. Это ж надо логику какую-то прописать. Периодическое обновление! Я ещё понимаю, если справочник ну очень редкоизменяемый, ну прямо совсем редко. Ещё надо заметить, что не совсем тривиальная задача сделать запрос, который подтянет данные с сервака и объединит их с теми, которые уже на клиенте. pastorУ меня сейчас приложения вместо чтения настроек и ресурсов по месту применения, читают все таблицу при подключении. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 14:18 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
ёёёёё С FireBird 1.5 ничего сделать нельзя, он старый и всеми забыт. Нужно менять логику работы, не "запрос-ответ" маленькими порциями, а "запрос - много данных", например - с помощью сервера приложений. Нужно программировать. Из дома то нормальная скорость. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 14:37 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
RRR39 ёёёёё С FireBird 1.5 ничего сделать нельзя, он старый и всеми забыт. Нужно менять логику работы, не "запрос-ответ" маленькими порциями, а "запрос - много данных", например - с помощью сервера приложений. Нужно программировать. Из дома то нормальная скорость. Значит, надо работать из дома. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 14:39 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
DmSer Если таблица справочная (особенно если в ней хранится куча настроек), то лучше её запросить один раз и хранить на клиенте, периодически обновляя. Как раз первый запрос, это загрузка на клиент SQL запросов, там их около 150 записей 5 BLOBов на запись. Домой грузит быстро, разница с локальной базой пару секунд, а в Контрору2 грузит минуту. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 14:44 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
ёёёёё Значит, надо работать из дома. В том то и дело, что работать надо из Конторы2 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 14:46 |
|
Скорость работы Fireberd по сети
|
|||
---|---|---|---|
#18+
кастуй БЛОБы к варчару. роундтрипов меньше будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 14:47 |
|
|
start [/forum/topic.php?fid=40&msg=39927998&tid=1560425]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
130ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 285ms |
total: | 527ms |
0 / 0 |