powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Пул коннектов или что-то еще
25 сообщений из 44, страница 1 из 2
Пул коннектов или что-то еще
    #39132399
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При высокочастотной ставки записей в базе имеет ли смысл кроме коннектов держать еще открытые транзакции и может препаренные запросы в каждом флаконе? Инсерты однородные, редко может понадобится еще дополнителные ставки. Коммит(Рет) нужно после каждой.

Если при работе сервиса оборвалось связь с FB, можно как-то ловить это в реале, кроме фэйла уже при вызове isc_start_transaction итп?
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132402
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociПри высокочастотной ставки записей в базе имеет ли смысл кроме коннектов держать еще открытые транзакции и может препаренные запросы в каждом флаконе? Инсерты однородные, редко может понадобится еще дополнителные ставки. Коммит(Рет) нужно после каждой.
Dorin Marcoci, всё зависит от характера хранящихся данных. Телеметрия?

Dorin MarcociЕсли при работе сервиса оборвалось связь с FB, можно как-то ловить это в реале, кроме фэйла уже при вызове isc_start_transaction итп?
Для этого вам понадобиться нечто большее, чем просто "клиент" и "сервер". Возможно, придется написать некую промежуточную службу, работающую на том же сервере, что и Firebird, через которую будут осуществляться вставки данных и контролироваться транзакции.
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132408
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci> держать еще открытые транзакции и может
Dorin Marcoci> препаренные запросы в каждом флаконе?
Dorin Marcoci> Коммит(Рет) нужно после каждой.

Коммит и открытые транзакции плохо совместимы.
Хотя с retaining-ом можно, но этот вопрос уже столько
раз обсуждался, просто почитай.

А вот отпрепаренные запросы легко переживают
коммит, их повторно препарить не нужно, только
параметры меняй и повторно Exec-Commit.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132410
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociПри высокочастотной ставки записей в базе имеет ли смысл кроме коннектов держать еще открытые транзакции и может препаренные запросы в каждом флаконе? Инсерты однородные, редко может понадобится еще дополнителные ставки. Коммит(Рет) нужно после каждой.

Если при работе сервиса оборвалось связь с FB, можно как-то ловить это в реале, кроме фэйла уже при вызове isc_start_transaction итп?

1. Подготовленные запросы - имхо, держать хорошо. Но вы не сказали, сколько у вас клиентов параллельно пишут в базу.

2. Состояние сервера можно контролировать периодическим "пинг-понгом" простых запросов в фоновой нити.

3. Есть библиотечка ZeroMQ , которая позволяет несложным образом реализовать буферизацию сообщений как на приеме, так и на передаче (и задавать объем буферов), реализовано автоматическое восстановление соединения при обрыве и т.п. Контроль за состоянием коннекта выполняется методом посылки - отправки служебных сообщений (когда нет других сообщений) в отдельной нити.

Организуйте работу через такую прослойку - будет проще обеспечить работу FB под непрерывной нагрузкой, особенно если входной поток данных неравномерный, и источник данных не может долго ждать, пока сервер завершит операцию вставки.
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132435
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociКоммит(Рет) нужно после каждой.
Дисковую систему расширяй. Она сляжет первой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132441
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociКоммит(Рет) нужно после каждой.
commit retaining не нужен никогда. пул - сколько угодно. пул транзакций - имеет смысл только для read read_committed rec_version. Остальные транзакции д.б. короткими.
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132442
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvcommit retaining не нужен никогда.
Вообще-то лично у меня ему применение нашлось. Но это скорее экзотика.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132446
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

опять же, я следую принципу - если человек не понимает, то лучше ему сказать, что пользоваться фичей Х нельзя, совсем. Если ему интересно, почему "нельзя", он разберется сам (или найдет статьи на ibase.ru о том, почему retaining - не очень хорошо). Если же ему похер, то он и спрашивать не будет.
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132448
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvон разберется сам
Если бы он был в состоянии разобраться сам, то не валил бы в одну мутную кучу пул
коннектов, транзакции и препарированные запросы. Ибо это всё же перпендикулярные вещи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132458
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> опять же, я следую принципу

Вот и признался. А я тебе давно говорил,
что этот принцип неправильный и ущербный.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132589
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем кто откликнулись и изложили мысли.
Оставил вопрос вчера к концу рабочего дня и только сегодня взглянул.

Данные приходят по сетке (tcp/udp) с каждого девйса где-то раз в 30сек, практически равномерно/рандомно распределенные.
Принимаю пакеты серверами Indy (TIdTcpServer, TIdUdpServer).
Выделяется поток где обрабатывается каждый входящий пакет.
Хотелсь бы обслуживание хотяб 1000 клиентов на одном ноде (это примерно 33 ставок в секунду).

Щас работает, но нагрузка маленькая. Есть пул коннектов. При обработке стартует транзакция, запрос ставки и коммит.
Вот и пришла и идея повышения марсштбируемости путем добавения в пула еще и по долгой ридкоммитед транзакции и препаренного запроса для каждого коннекта. И после обработки пакета делать коммит ритэйн. Плохо ли? Можно в принципе раз там на 1000 ритэйн коммитов делать и коммит и заново стартовать транзакцию и препарить запрос.

Про ZeroMQ, спасибо учту, но пока думаю если в случае перенакопления можно необработанные пакеты в локальном стэке держать пока все потоки-обработчики заняты. Но лимит на количество потоках пока нету, создаются сколько надо.

Или держать всегда готовые потоки-обработчики как workerы в apache?

Насчет обрыва связи с ФБ сервером, скорее в продакшине будет локально, но хотелось обработать и потеря коннекта, когда было отключения сокета, попытатся восстановить связь. Есть в fbclient-е такой колбэк? Щас могу ловить при старте транзакции/запрса по коду ошибки статуса.
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132595
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociВот и пришла и идея повышения марсштбируемости путем добавения в пула
еще и по долгой ридкоммитед транзакции и препаренного запроса для каждого коннекта. И
после обработки пакета делать коммит ритэйн. Плохо ли? Можно в принципе раз там на 1000
ритэйн коммитов делать и коммит и заново стартовать транзакцию и препарить запрос.

Идея бредовая.
Во-первых, потому что препарированные запросы не привязаны к транзакции и коммит их не
уничтожает.
Во-вторых, потому что старт транзакции (в отличии от установки коннекта) - операция лёгкая.

Dorin MarcociЩас могу ловить при старте транзакции/запрса по коду ошибки
статуса.
А следует - при каждом вызове API. Ибо соединение может разорваться когда угодно.

PS: И сдаётся мне, что СУБД для задачи таки выбрана неверно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132597
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
препарированные запросы не привязаны к транзакции и коммит их не
уничтожает
хм... вот спасибо. а я думал что они дестроится...

СУБД для задачи таки выбрана неверно
на чем знаем, на том и пишем :)

Дмитрий вроди делал тесты: http://www.ibase.ru/devinfo/instest.htm
Результаты неплохие.
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132598
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci И после обработки пакета делать коммит ритэйн.
зачем тебе вообще нужен commitRetaining???
и, как уже сказал DS, препарированный запрос может выполняться в любой транзакции, prepare к транзакции не привязан.
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132601
ZeroMQ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvDorin Marcoci И после обработки пакета делать коммит ритэйн.
зачем тебе вообще нужен commitRetaining???
...
Да он просто глумится...
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132603
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociДмитрий вроди делал тесты: http://www.ibase.ru/devinfo/instest.htm
Результаты неплохие.
Да с вашими жалкими 33 записями в секунду вы в принципе близко к лимиту быстродействия не
подойдёте. Сомнение вызывает что вы вообще собираетесь потом делать с напиханными в БД
сырыми данными.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132606
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociДмитрий вроди делал тесты: http://www.ibase.ru/devinfo/instest.htm
Результаты неплохие.
этому тесту уже 17 лет. Ковязин для семинара в июне 2015 делал тест вставки, там в таблицу без индексов 1млн записей вставляется 2.6 секунд, в таблицу с числовым ПК - 7.6 секунд, в таблицу с пк varchar 35 секунд.
Таблоид тоже недавно делал тест параллельной вставки для ФБ 3.0, там 1млн записей в таблицу с числовым ПК вставляется 24 секунды.
То есть, в худшем случае это 20 тысяч записей в секунду. Без всяких пулов.
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132607
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvТо есть, в худшем случае это 20 тысяч записей в секунду. Без всяких пулов.

Вы просто не добрались до худшего варианта с отдельной транзакцией на каждую запись. Я же
говорил, что дисковая подсистема ляжет первой...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132609
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociНо лимит на количество потоках пока нету, создаются сколько надо.
еще добавлю. что по тестам того же Таблоида, никакого смысла в распараллеливании вставки в одну таблицу по разным коннектам нет, совершенно. Более того, производительность вставки, идентичную ОДНОМУ коннекту, можно получить в нескольких коннектах только на суперсервере. На классике и суперклассике при вставке будет борьба за блокирование страницы, и производительность будет по любому хуже (причем чем больше страница, тем хуже).
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132610
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВы просто не добрались до худшего варианта с отдельной транзакцией на каждую запись.
такой задачи не было :-)
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132959
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvзачем тебе вообще нужен commitRetaining???
Дмитрий, я думал что можно выиграть в производительности если делать только CommitRetaining вместо Commit;Start; при обработке пакета.
Буду переделывать на пул коннекшинов + препаренные запросы + кототкиу транзакции: старт/ставка/коммит. Так лучше?

kdvеще добавлю. что по тестам того же Таблоида, никакого смысла в распараллеливании вставки в одну таблицу по разным коннектам нет, совершенно.
Тогда лучше наверное в общий стэк копить пакеты, и раз в секунду инсертить накопленные... запутался уже...
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132961
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcociя думал что можно выиграть в производительности если делать только CommitRetaining вместо Commit;
интересно, откуда появилась мысль про "производительность" commitretaining?
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132965
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Kdv!
You wrote on 21 декабря 2015 г. 12:29:38:

Kdv> интересно, откуда появилась мысль про "производительность" commitretaining?
имхо, автор смотрит через кривую призму дельфийских компонентов...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132980
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvDorin MarcociНо лимит на количество потоках пока нету, создаются сколько надо.
еще добавлю. что по тестам того же Таблоида, никакого смысла в распараллеливании вставки в одну таблицу по разным коннектам нет, совершенно. Более того, производительность вставки, идентичную ОДНОМУ коннекту, можно получить в нескольких коннектах только на суперсервере. На классике и суперклассике при вставке будет борьба за блокирование страницы, и производительность будет по любому хуже (причем чем больше страница, тем хуже).

Все вышесказанное имеет смысл только для локального подключения.
Если сервер БД - одно, а сервер телеметрии - другое, то смысл распараллеливать есть.
...
Рейтинг: 0 / 0
Пул коннектов или что-то еще
    #39132986
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv"производительность" commitretaining
Так будет только фиксация изменений без старта другой транзакции (что я думал непростая операция).
Помню Еманов говорил к релизу 2.0 или 2.5 что были сделаны оптимизации по CommitRetaining и что можно держать сколько угодно транзакцию открытой.
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Пул коннектов или что-то еще
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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