Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Количество транзакций на DataBase? / 25 сообщений из 28, страница 1 из 2
23.01.2004, 11:27
    #32385871
zahodun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Привет всем! Пытался искать, но так и не нашел следующую информацию: сколько можно запускать транзакций на один DataBase используя IBX (BCB6, FireBird 1.5)? Если, скажем, у меня будет 10 клиентов, но каждый "коннектится" к базе используя 6-8 транзакций, то как отработает сервер? Это для него 10 клиентов или 10х6 клиентов? Транзакции разноплановые, одни всегда открыты на чтение, другие кратковременные для записи и т.д. Интересует в общем плане, можно ли так делать или стоит бросить эту идею.
...
Рейтинг: 0 / 0
23.01.2004, 11:41
    #32385906
Kull Damned
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Делай, только старайся транзакции делать покороче... Если есть транзакции на select делай им CommitRetain сразу после select'а. А транзакции на запись открывай перед непосредственным обращением к БД.
...
Рейтинг: 0 / 0
23.01.2004, 11:51
    #32385930
IgorL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Где то здесь попадался код, открывающий за 4 часа 2 миллиона с копейками транзакций.
И ничего.
IMHO 10х6 это сущие пустяки, если конечно СУБД стоит на более менее нормальной машинке с достаточным количеством мозгов и метров/гектаров HDD.

Однако Kull Damned дело говорит, несмотря на казалось бы немерянное количство ресурса, лучше писАть следуя его советам.
...
Рейтинг: 0 / 0
23.01.2004, 12:00
    #32385949
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
>zahodun

Это у тебя триды или ... Как так 6-8 одновременно работающих транзакций?
В любом случае это не проблема :)

------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
23.01.2004, 12:02
    #32385952
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
ЗЫЖ Читать
6-8 одновременно работающих транзакций?
как
6-8 одновременно работающих транзакций в одной программе?
А то тут некоторые к словам придираются :(

------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
23.01.2004, 12:13
    #32385963
zahodun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Машинку хочу поставить P4 2ГГц, 512 ОЗУ, но дело в том, что у меня еще не было реальных проектов с использованием InterBase. Поэтому о необходимой производительности я могу узнать только в конференциях. Работать клиетские приложения будут весьма интесивно. Например, одна из задумок, когда будет некая таблица, в которую одно из приложений постоянно пишет данные, а у других эта таблица всегда открыта с read_commited (только на чтение) и они выгребают оттуда только те записи, которые нужны им. Таблица небольшая, но скорость заливки туда данных немаленькая (может доходить до 100 записей в сек). Т.е. одно приложение постоянно модифицирует таблицу, а десяток других должны постоянно мониторить изменения. И таких таблиц может быть несколько. Причем, другое приложение само "заполняет" следующую таблицу которую "мониторит" первое. Короче, ИБ-сервер используется как некий буфер между приложениями, посредством которого им нужно обмениваться информацией. Кроме того, есть и "классические" таблицы содержащие медленно изменяющиеся данные, но достаточно больших объемов...
...
Рейтинг: 0 / 0
23.01.2004, 12:17
    #32385970
zahodun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
:)
читать 6-8 транзакций в одной программе. В заголовке ведь первый вопрос: "Количество транзакций на DataBase?"
Т.е. хотел бы узнать есть ограничение на количество используемых транзакций при использовании одного DataBase.
...
Рейтинг: 0 / 0
23.01.2004, 12:33
    #32385999
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Слушай сюда.
У TIBDataBase , список тринзакций хранится в поле FTransactions: TList;
Вместимость TList составляет MaxListSize = Maxint div 16; .
Для Delphi-5 это 134 217 727.
Хватит?
...
Рейтинг: 0 / 0
23.01.2004, 12:37
    #32386007
IgorL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Короче, ИБ-сервер используется как некий буфер между приложениями, посредством которого им нужно обмениваться информацией.

%)
А просто на сокетах не лучше такое нарисовать???
Я бы поглядел в сторону бродкаста, скажем по UDP ежели сетка TCP/IP, да что там поглядел, именно так и нарисовано в одной из программок.
В твоем же случае придется постоянно дергать базу (по таймеру или вообще в отдельном треде), что IMHO не ГУД.

По поводу же количества транзакций посмотри например
http://www.ibase.ru/devinfo/lotoftrans.htm
...
Рейтинг: 0 / 0
23.01.2004, 12:51
    #32386043
zahodun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
..........
А просто на сокетах не лучше такое нарисовать???
Я бы поглядел в сторону бродкаста, скажем по UDP ежели сетка TCP/IP, да что там поглядел, именно так и нарисовано в одной из программок.
В твоем же случае придется постоянно дергать базу (по таймеру или вообще в отдельном треде), что IMHO не ГУД.
..............

Спасибо за ссылку.
А на сокетах у меня сечас сделано, но меня не очень устраивает. Все дело в структуре программы. Если организовывать обмен на сокетах, то иной раз придется делать так: читаем запись из базы одним клиентом, что-то с ней делаем, а потом передаем её через сокет другому клиенту? А зачем тогда SQL-сервер? Сейчас именно так и происходит. Иногда передаются данные, иногда части данных, иногда ссылки на поля в таблицах, только это слишком запутано. Поддерживать два канала передачи слишком муторно.

Вобще, система такая: существует два сервера, один InterBase, а другой IP сервер, который с помощью данных по сокетам координирует обмен, выставляет "свои" данные, полученные по другим каналам. Но уже практически реализовав это дело, я понял что идея не очень хорошая. Теперь я хочу "свой" сервер на равных с клиентами подключать к серверу SQL, чтобы он производил координацию через таблицы в базе, а от сокетов совсем отказаться. Сейчас я анализирую ситуацию, делаю тесты, чтобы понять имеет ли смысл это делать и возможно ли реализовать это практически.
...
Рейтинг: 0 / 0
23.01.2004, 12:55
    #32386051
zahodun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Мимоходящему: размерность intrger я и сам знаю. Просил подсказать знающих людей, сколько _реально_ можно подключать, может быть кто-нибудь уже наступал на какие-то грабли, а ты про "134 217 727" :(((
...
Рейтинг: 0 / 0
23.01.2004, 13:09
    #32386085
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
zahodunПросил подсказать знающих людей, сколько _реально_ можно подключать
А " подключать " можно именно столько, сколько я сказал ;)
Ибо ты можешь "подключить" мульён транзакций, но не стартовать их.
В отношении ограничения на количество активных транзакций на сервере, тебе дали ссылочку
...
Рейтинг: 0 / 0
23.01.2004, 13:10
    #32386091
IgorL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Тогда посмотри в сторону POST_EVENT
Просто и со вкусом :)
...
Рейтинг: 0 / 0
23.01.2004, 13:13
    #32386097
IgorL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Это я про то, чтоб не юзать сокеты, а стандартные средства СУБД.
...
Рейтинг: 0 / 0
23.01.2004, 13:58
    #32386178
zahodun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
POST_EVENT штука хорошая, правда жалко, что с параметрами пока не работает... ВОзможно придется использовать именно этот механизм.

У меня возник еще один вопрос, например, я делаю следующий запрос

select * from test_table

транзакция с параметрами:
read
read_committed
rec_version
nowait

так вот, пока транзакция активна, подразумевается ли что данные в запросе будут автоматически обновляться при изменении их в таблице другим приложением или нет? Или единственный путь быть "в курсе последних изменения" перезапускать транзакцию по event'у который генерируется по update в базе?
...
Рейтинг: 0 / 0
23.01.2004, 14:16
    #32386214
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Попробую рассказать "на пальцах" ;)

Стартуем Tr1.
select * from...
Начинаем тащить данные на клиента:
1-я строка
2-я строка
................
Стартуем Tr2.
update ... set ... where ...
Коммитим Tr2.
Продолжаем тащить данные:
23-я строка
24-я строка
Опаньки!
25-я то оказывается уже модифицирована!

Усёк?
...
Рейтинг: 0 / 0
23.01.2004, 14:26
    #32386236
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
2Мимопроходящий у него транзакция только для чтения.
2zahodun уровень read committed подразкмевает, что транзакция видит утвержденные записи. Так что чтобы увидеть изменения, достаточно перечитать данные, транзакцию можно не переоткрывать. Кстати, в Firebird 1.5 именно "read read_committed rec_version" транзакции на самом деле физически нет, данные читаются напрямую, поэтому, имхо, она может висеть сколько угодно. И commit retain не нужен совсем. А вот курсоры рекомендую все же закрывать за ненадобностью.
Кстати, транзакций на одно соединение может быть сколько угодно, в разумных пределах.
...
Рейтинг: 0 / 0
23.01.2004, 14:39
    #32386267
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Roman Ignatiev2Мимопроходящий у него транзакция только для чтения.
И?

Roman Ignatiev2zahodun уровень read committed подразкмевает, что транзакция видит утвержденные записи. Так что чтобы увидеть изменения, достаточно перечитать данные, транзакцию можно не переоткрывать.
Поддерживаю :)
Но! Я показал пример, в котором при "длинном" фетче, для read committed транзакции, в результирующий набор могут попасть данные, модифицированные в другой транзакции, после того, как запрос был отправлен на сервер, но до того, как был получен EOF

Roman IgnatievКстати, в Firebird 1.5 именно "read read_committed rec_version" транзакции на самом деле физически нет, данные читаются напрямую,
Чушь, полная! Не обижайся :)
...
Рейтинг: 0 / 0
23.01.2004, 14:49
    #32386286
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
2Мимопроходящий Не полная :)
http://www.ibase.ru/devinfo/ibtrans.htm можно найти строки:
"в Firebird, Yaffil и InterBase 6.5 транзакции read_committed read (read only) стартуют сразу в состоянии committed, поэтому не удерживают мусорные записи. Т.е. такая транзакция может длиться часами без ущерба для производительности сервера. Наиболее характерный пример использования - работа со справочниками."
Чуток ошибся, это и в FB1.0 есть.
А вот насчет "только для чтения" - эт я лоханулся, надо внимательнее посты читать, сорри...
...
Рейтинг: 0 / 0
23.01.2004, 14:54
    #32386295
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
2zahodun:

> POST_EVENT штука хорошая, правда жалко,
> что с параметрами пока не работает...

Если бы в текущем виде заработала с параметрами, то ты первый назвал бы ее очень плохой штукой ;-) Не рассчитан этот механизм на передачу больших пакетов данных.

> так вот, пока транзакция активна, подразумевается
> ли что данные в запросе будут автоматически обновляться
> при изменении их в таблице другим приложением или нет?

Что есть "данные в запросе"? Они могут частично обновляться прямо в процессе чтения, как уже отмечено Мимопроходящим. А можешь и просто перезапустить читающий запрос и получить измененные данные. Перезапуск транзакции абсолютно излишен.

2Мимопроходящий:

> Опаньки!
> 25-я то оказывается уже модифицирована!

А это зависит от плана читающего запроса... ;-)

2Roman Ignatiev:

> Кстати, в Firebird 1.5 именно "read read_committed rec_version"

Начиная с FB 1.0.

>> транзакции на самом деле физически нет, данные читаются
>> напрямую,

Транзакция есть. Но она создается в состоянии pre-committed, т.е. для конкурирующих транзакций она никогда не бывает активной.
...
Рейтинг: 0 / 0
23.01.2004, 14:57
    #32386300
IgorL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
В общем как было сделано у меня.
Правда не под FB, но это не важно.
На табличку вешается триггера на AI AU AD из триггеров вызывается ХП, которая отправляет посредством вызываемой dll по UDP бродкастом ID записи и название таблички. В FB можно эту dll написАть как UDF...
В клиентах слушается UDP и по получению сообщения перечитывают табличку если это надо.
...
Рейтинг: 0 / 0
23.01.2004, 14:59
    #32386304
zahodun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Roman Ignatiev
2zahodun уровень read committed подразкмевает, что транзакция видит утвержденные записи. Так что чтобы увидеть изменения, достаточно перечитать данные, транзакцию можно не переоткрывать.

Вот оно! Вот что мне нужно было узнать. Эххх. Пока сам поймешь чего тебе надо... :(

В голове проясняется, уже тестовое приложение написал. Вроде работает, теперь надо нагрузку эмулировать и посмотреть как это жить будет. Правда, есть еще один непонятный для меня глюк. У меня сейчас два компьютера. На одном EVENT-ы с базы прекрасно ловятся, а другой их в упор не видит. Причем IB-server ставил на оба и раньше на обоих нормально работало. Потом с какого-то момента на одном как ножом отрезало. Я вот думаю, может для евентов другой порт используется, а у меня его какое-нибудь приложение "закрыло"? Какая еще может причина быть? Приложение одно и то же при переносе с одной машины на другую просто не реагирует на Евенты. :(
...
Рейтинг: 0 / 0
23.01.2004, 15:00
    #32386305
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
автор2Мимопроходящий Не полная :)
Полная, полная ;)

авторhttp://www.ibase.ru/devinfo/ibtrans.htm можно найти строки:
"в Firebird, Yaffil и InterBase 6.5 транзакции read_committed read (read only) стартуют сразу в состоянии committed, поэтому не удерживают мусорные записи.
"Поднимите мне веки".
Я не вижу здесь "... транзакции на самом деле физически нет, данные читаются напрямую "
Или нужно читать между строк? ;)

ЗЫ: тебя наверное ввело в заблуждение слово committed . Не обращай внимания. Просто Дима когда говорил об этом, имел в виду состояние транзакции с точки зрения ядра сервера. Это не значит, что транзакции нет, или что она завершена.
...
Рейтинг: 0 / 0
23.01.2004, 15:20
    #32386351
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
2Мимопроходящий Ээээ... Хм... Плевать, главное, что не нагружает и висеть может :) На самом деле, действительно неподумавши сказал...
2zahodun Вот с эвентами у меня такое было через BDE, а IBX работает вроде нормально, ничего сказать не могу. А эта станция со стороны сервера пингуется?
...
Рейтинг: 0 / 0
23.01.2004, 15:33
    #32386385
zahodun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество транзакций на DataBase?
Станция не только пингуется, с неё читаются все данные. Проблема только в клиенте. Ситуация такая. Есть два компьютера А и Б. Firebird я поставил на обе машины. Базы идиентичные. Теперь делаю вот что: на А запускаю сервер, потом на А запускаю клиент и на Б запускаю клиент - все работает. На А выключаю сервер. На Б запускаю сервер, на Б запускаю клиент, на А запускаю клиент. Так вот клиент на А ловит Евенты с Б, а клиент на Б их не ловит. Пробовал подключать клиента на Б и как localhost и как 127.0.0.1 и с указанием реального IP и с указанием сетевого имени машины. Нифига! Хотя рядом стоит комп и прекрасно эти евенты регистрирует. Впечатление такое, что проблема именно в _получении_ клиентом пакетов. Сервер переставлял несколько раз - эффект нулевой :(
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Количество транзакций на DataBase? / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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