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

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

Модератор: kdv

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

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

Сообщение WildSery » 05 июн 2006, 16:37

Обращался к разработчикам - ни ответа ни привета.
Кто пользовался - помогите! В примере там описано только "TConnectDBProc = function (AConnectParams: PChar; AConnectErrorCallbacFunc: ConnectErrorCallbackFunc): integer; stdcall;"
Никакого примера по коннекту нет. Что передавать в PChar - уже голову сломал :(

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 06 июн 2006, 07:57

Там же написано - параметры коннекта. Вполне вероятно в виде стандартного dpb.

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

Сообщение WildSery » 06 июн 2006, 12:39

А разве в DPB указывается база данных?
Каким же ключём, подскажите. Я не нашёл.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 06 июн 2006, 14:04

Логично. База в dpb не указывается. Значит у параметров какой-то внутренний формат...

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

Сообщение WildSery » 07 июн 2006, 18:43

Отвечу сам на свой вопрос.
Формат такой:
ConnectParams:='db_name="localhost:d\my data\mybase.fdb";
user_name=SYSDBA;
password=masterkey;
clientlib="C:\Program Files\Firebird\bib\fbclient.dll";
lc_ctype=WIN1251;
sql_role_name=ADMIN;
sql_dialect=3'

Это все поддерживаемые функции. Жаль, нельзя отключить сборку мусора :(

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

Сообщение CyberMax » 08 июн 2006, 01:34

WildSery писал(а):Это все поддерживаемые функции. Жаль, нельзя отключить сборку мусора :(
Логично, что сборка устанавливается только на уровне БД. Представьте, что пять пользователей подключается с отключенной GC, пять с интервалом в 100 000, а еще пять с 20 000. Кому верить? :lol:
А собственно чем вам Garbage Collect мешает?

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 08 июн 2006, 05:23

Cybermax писал(а):Логично, что сборка устанавливается только на уровне БД
давай не будем путать GC и sweep. Первая устанавливается для коннекта, второй - для базы.
Cybermax писал(а):А собственно чем вам Garbage Collect мешает?
а вот на это и мне интересно услышать ответ...

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

Сообщение CyberMax » 08 июн 2006, 05:57

dimitr писал(а):давай не будем путать GC и sweep. Первая устанавливается для коннекта, второй - для базы.
Порылся в доках - в самом деле, можно отключать сборку мусора в коннекте. Написано, что для ускорения выборок.
Оффтоп: а были ли тесты по производительности с GC и без?

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

Сообщение kdv » 08 июн 2006, 09:21

а были ли тесты по производительности с GC и без?
были. без - быстрее, если мусора много.

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

Сообщение CyberMax » 08 июн 2006, 09:38

kdv писал(а):были. без - быстрее, если мусора много.
Ну это и ежу понятно. А проценты есть, хотя бы такие, относительные?

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

Сообщение kdv » 08 июн 2006, 10:01

А проценты есть, хотя бы такие, относительные?
я давно мерял, результатов не помню. при 2-3 версиях на записи как будто бы этих версий нет. смоделировать очень просто - стартуешь транзакцию snapshot, потом в других транзакциях делаешь несколько раз update по всей таблице и commit. Дальше еще в одной транзакции запускаешь что-нибудь вроде select count(*). Меряешь. Потом то же самое (count) делаешь с выключенной GC. Потом отпускаешь snapshot и повторяешь count, будет замер по сборке мусора.

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

Сообщение CyberMax » 09 июн 2006, 01:39

Дмитрий, подскажите, как отключить сборку мусора в коннекте? :cry:

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

Сообщение kdv » 09 июн 2006, 02:00

Дмитрий, подскажите, как отключить сборку мусора в коннекте?
читайте ВНИМАТЕЛЬНЕЕ www.ibase.ru/devinfo/ibtrans.htm

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

Сообщение WildSery » 13 июн 2006, 11:52

Garbage Collect всегда мешает. Я считаю, что он вообще нужен только если серьёзные проблемы с дисковым пространством.
Идёт активная работа с базой, версий записей по таблице документов доходит до 100 000 за полдня работы (это если не собирать мусор).
Если включить сборку - база через несколько часов работы просто встанет, в несколько раз замедлится обмен. До вечера дотянуть было вообще нереально - дохла намертво, простой запрос на сохранение документа, с утра выполнявшийся практически мгновенно, мог длиться минутами. Ночью делаем бэкап-рестор, он и убирает лишнее.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 13 июн 2006, 11:57

WildSery писал(а):Garbage Collect всегда мешает.
блажен, кто верует (с)

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

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

версий записей по таблице документов доходит до 100 000 за полдня работы
а вы не держите долгоживущие транзакции.
Если включить сборку - база через несколько часов работы просто встанет
это я уже проходил. обычно так ведут себя приложения, написанные на BDE, вообще без управления транзакциями.
В данном конкретном случае утверждать о плохом управлении транзакциями в приложении не могу, но симптомы очень похожие.

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

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

кстати, оговорюсь, что аналогичный эффект (увеличение числа версий) даже при коротких транзакциях может быть из-за "фоновой" сборки мусора.
www.ibase.ru/devinfo/garbage.htm
В хелпе IBAnalyst также описаны ситуации, когда не помогает и sweep.

в FB 2.0 в этом случае можно попробовать включить кооперативную сборку мусора, или комбинированную.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 13 июн 2006, 12:43

kdv писал(а):в FB 2.0 в этом случае можно попробовать включить кооперативную сборку мусора, или комбинированную.
оно по умолчанию включено

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

Сообщение CyberMax » 13 июн 2006, 16:56

А можно узнать размер БД и конфу сервера?

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

Сообщение WildSery » 13 июн 2006, 17:59

Именно BDE, заклятая. Основной модуль без исходников.
Размер средний 10 Gb. Версия FB 1.0.3.
dimitr писал(а): блажен, кто верует (с)
Возможно. Однако контрагрументов не вижу. Мой клинический случай не учитываем. Где про полезность почитать?

Ответить