IBEScript.dll - что передать в функцию Connect?

Методы, механизмы и инструментарий для репликации

Модератор: kdv

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 13 июн 2006, 18:29

WildSery писал(а): Где про полезность почитать?
Мозгой раскинуть. Чтоб выдать кажной транзакции версию записи, которую ей положено выдать, их надо перебрать. Что быстрее перебрать - 1 версию или тыщу?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 13 июн 2006, 20:14

Merlin писал(а): Мозгой раскинуть. Чтоб выдать кажной транзакции версию записи, которую ей положено выдать, их надо перебрать. Что быстрее перебрать - 1 версию или тыщу?
Раскинул. Новая транзакция берёт 1-ю по счёту (она же последняя, "рабочая"), не важно, сколько версий есть. А старые транзакции хоть со сборкой, хоть без сборки будут свои версии искать, от текущей вглубь.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 13 июн 2006, 20:23

Дык со сборкой одна невезучая при переборе и приберёт его за 1 раз (если с управлением транзакциями в приложении всё по уму), а не все будут сто раз перебирать.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 13 июн 2006, 20:32

Предлагаю закончить обсуждение, как вышедшее за рамки топика.
P.S. Блин, в разных источниках по-разному расписано хранение версий...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 13 июн 2006, 20:35

Новая транзакция берёт 1-ю по счёту (она же последняя, "рабочая"), не важно, сколько версий есть.
нет, мил-человек... сервер всегда берет пакет версий. И уж потом начинает разбираться, чего можно видать этой конкретной транзакции, а чего нет, и какие версии являются мусором.
P.S. Блин, в разных источниках по-разному расписано хранение версий...
например?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 13 июн 2006, 20:57

Пакет-то пакет, однако если нужна последняя версия (а новая транзакция её и возьмёт,) то это будет самая первая запись, и дальше не пойдёт.

Например, вот тут http://ibase.ru/devinfo/inplupd.htm (и тут http://ibase.ru/devinfo/versions.htm)
IB заменяет оригинальную запись новой версией, и создает указатель на старую версию записи (back version)
как и должно быть.

А вот тут http://ibase.ru/devinfo/mga.htm написано, что
конечную, выдаваемую версию записи сервер формирует на основании всех предыдущих (т.к. версии записи - это "отличия" обновлений предыдущей версии записи)
Вроде как наоборот, чтобы получить последнюю, нужно все дельты складывать. Либо написано двусмысленно.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 13 июн 2006, 21:12

чтобы получить последнюю, нужно все дельты складывать. Либо написано двусмысленно.
это я проверю, может и правда хреновню написал. В любом случае, флажок коннекта no_garbage_collect предотвращает просмотр сервером пакета версий на предмет поиска мусорных. То есть, транзакция читает первую или "серединную" версию - это пофиг.

В любом случае, при наличии достаточного числа активных транзакций может накопиться прилично версий, и работает сборка мусора или нет (no_garbage_collect), все равно производительность упадет. Кроме того, BDE этот флаг у коннекта выставить не позволяет.
Так возникают ситуации, которые описаны в хелпе IBAnalyst, в статейке "как правильно получать статистику из БД".

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 14 июн 2006, 01:51

WildSery писал(а):Именно BDE, заклятая. Основной модуль без исходников.
Размер средний 10 Gb. Версия FB 1.0.3.
:shock: . Тут точно отмена GC не поможет. Надо в другую сторону копать. Типа свою базу писать и все такое...

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 14 июн 2006, 11:07

Переписать всю систему - это ты загнул. Хотя постепенно к этому идём, все свои модули пишем "правильно".
А другой путь собственно и привёл меня в тему "Репликация". Разделил на две базы "оперативная" и "архивная", репликация данных как часы отлажена была до того (есть ещё база "для отчётов"), а вот с метаданными ещё не всё гладко.

Ответить