|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
А источник для массового insert? Из базы во временные таблицы? ИЛи с клиента? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 21:08 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Я же всё подробно изложил уже. Несколько раз. С клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 21:10 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
А откуда на клиенте эти строки появились? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 21:19 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDenВот так-то так. Причём в разных транзакциях джойн одной и той же временной таблицы может происходить с любой из реальных таблиц базы Сдаётся мне, что временные таблицы здесь не нужны, а данные можно доставать прямо из таблиц, формируя условие с IN группами по тысяче штук сразу по мере получения пакета данных от "другой системы". В конечном итоге это скорее всего выйдет намного быстрее чем insert+select join. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 22:07 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Была такая идея. Но есть ещё и ограничение на размер текста SQL. Его легко преодолеть даже группируя по 1000 значений в in. ЗЫ: Наконец-то дошли руки померить скорость заполнения временной таблицы по сети 100'000-ю значений. Сетка гигабитная. Сервак в том же сегменте что и мой рабочий комп. Вот результаты: Firebird (блочная вставка по 20): 6.6 секунды на заполнение и практически мгновенное выполнение запроса после PostgreSQL (COPY + передача бинарного буфера): 1.4 сек на заполнение и 0.7 сек на выполнение запроса после Данные и там и там абсолютно одинаковые. Правда, Firebird был уже на серваке, но версии 3.0. Я 2.5 не стал ставить. Потестил на том что было. Чаще всего Firebird стоит на том же серваке, где крутится наша служба. В этом случае FB не только не отстаёт от PG но и даже работает быстрее (время заполнения временной таблицы и выполнения запроса близко к 1.4 сек), что меня устраивает. Всем спасибо кто посоветовал блочную вставку! )) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 22:32 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen Правда, Firebird был уже на серваке, но версии 3.0 Хотя я не уверен, что на гигабитной сети это будет особо заметно, но попробовать интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 22:41 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Включил WireCompression. Среднее время заполнения таблицы упало до 6.5 сек. Но сервак стоит на виртуалке. В параллель там много чего крутиться, так что это уменьшение времени в пределах погрешности )) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 22:50 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen Firebird (блочная вставка по 20): 6.6 секунды на заполнение и практически мгновенное выполнение запроса после PostgreSQL (COPY + передача бинарного буфера): 1.4 сек на заполнение и 0.7 сек на выполнение запроса после Немного перехвалил Firebird )) На самом деле запрос после заполнения выполняется не почти мгновенно, а ~0.7 сек, как и у PG. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 23:12 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen Включил WireCompression ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 23:34 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
zlib1.dll рядом с fbclient.dll был. Насчёт конфига не понял. На сервере в firebird.conf поставил WireCompression = true и перезапустил службу. Этого не достаточно? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 00:06 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDenНо есть ещё и ограничение на размер текста SQL. Его легко преодолеть даже группируя по 1000 значений в in. Это ограничение в 10 мегабайт для тройки. Ты уверен, что тысяча значений сумеет его преодолеть? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 00:21 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen zlib1.dll рядом с fbclient.dll был. Насчёт конфига не понял. На сервере в firebird.conf поставил WireCompression = true и перезапустил службу. Этого не достаточно? Проверить статус сжатия можно в мониторинге. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 07:14 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Пока что у кучи пользователей 2.5 и к сожалению переход на что-то более свежее не предвидится из-за нежелания пользователей ждать бакапа/рестора при обновлении сервиса (( Но есть идея все новые инсталляции делать уже на свежем FB ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 08:50 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
hvlad ArtDen zlib1.dll рядом с fbclient.dll был. Насчёт конфига не понял. На сервере в firebird.conf поставил WireCompression = true и перезапустил службу. Этого не достаточно? Проверить статус сжатия можно в мониторинге. Включил WireCompression = true в firebird.conf на клиенте. В итоге Error reading data from the connection. Видимо на сервере слишком старый FB 3.0. Попробую обновить ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 08:53 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Обновил. Заработало. По скорости практически нету разницы. Но трафик уменьшился. Без сжатия - 2043 Кб/164Кб и со сжатием - 366Кб/41Кб (к серверу FB/от сервера FB) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 09:10 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Избався от сетевого трафика. Переливай из базы в базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 09:18 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
птичку жалко ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 09:29 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen, будет время попробуй на 4.0 Batch API. У меня даже на localhost при массовой заливке получался выигрыш в 2.5-10 раз. Правда с EB не сравнивал. 22080521 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 09:37 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Так какое ограничение на размер всех параметров запроса у FB 2.5? Сейчас для varchar(256) значение XSQLVAR::sqllen получается 1024 байта (256*4). Сколько я таких параметров могу передать за раз? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 10:30 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Симонов Денис, Попробую конечно. Но о 4.0 мне остаётся только мечтать ) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 10:37 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen, 2.5 - 64K на длину сообщения (параметры) и на длину запроса 64K. 255 контекстов (грубо говоря запросов внутри Execute block). 3.0 - 10M. 255 контекстов. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 10:41 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Симонов Денис, Спасибо. Для varchar(256) буду передавать по 60 параметров в блоке. Для всех остальных типов - по 250 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 10:55 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDenПока что у кучи пользователей 2.5 и к сожалению переход на что-то более свежее не предвидится А до тебя точно дошло, что выбирать все 100000 скважин не обязательно одним запросом и даже в одном коннекте?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 12:29 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Если в мой сервис пришёл запрос на получение данных, я должен эти данные получить из базы и отправить их тому, кто их запрашивал. И это надо сделать быстро. Сервис конечно может ответить, что слишком много параметров в условии и фиг вам. Но за это меня по головке не погладят. Ни пользователи, ни программисты, которые этот сервис используют. Как это всё сделать намного лучше - я прекрасно понимаю. Но вопрос был совсем не об этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 12:55 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDenЕсли в мой сервис пришёл запрос на получение данных, я должен эти данные получить из базы и отправить их тому, кто их запрашивал. Нет, похоже, ты всё-таки тупишь... Объясняю на пальцах: 1. В твой сервис приходит запрос со списком параметров. Длинным списком. Этот список приходит в виде потока. 2. Ты этот поток параметров парсишь на отдельные значения. 3. Из этих значений ты формируешь запросы, которые посылаешь Firebird. Много запросов. 4. Полученные от сервера данные ты складываешь в ответ тому, откуда в твой сервис поступил запрос. Так вот, пункты 2-4 отлично параллелятся на Х параллельных потоков, в каждом из которых через отдельный коннект выполняются параллельные запросы на выборку У данных. В идеале ты можешь начинать отдавать данные ещё до того как тебе полностью пришлют запрос. Сейчас ты впустую тратишь время ожидая пока целый пакет параметров сложится во временную таблицу и потом ещё на ожидание пока он целиком обработается. Хотя вместо этого уже мог бы получать данные и отправлять заказчику. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2021, 13:07 |
|
|
start [/forum/topic.php?fid=40&msg=40058114&tid=1560072]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
146ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 256ms |
0 / 0 |