Страница 1 из 2

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

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

Добавлено: 06 июн 2006, 07:57
Dimitry Sibiryakov
Там же написано - параметры коннекта. Вполне вероятно в виде стандартного dpb.

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

Добавлено: 06 июн 2006, 14:04
Dimitry Sibiryakov
Логично. База в dpb не указывается. Значит у параметров какой-то внутренний формат...

Добавлено: 07 июн 2006, 18:43
WildSery
Отвечу сам на свой вопрос.
Формат такой:
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'

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

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

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

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

Добавлено: 08 июн 2006, 09:21
kdv
а были ли тесты по производительности с GC и без?
были. без - быстрее, если мусора много.

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

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

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

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

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

Добавлено: 13 июн 2006, 11:57
dimitr
WildSery писал(а):Garbage Collect всегда мешает.
блажен, кто верует (с)

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

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

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

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

Добавлено: 13 июн 2006, 16:56
CyberMax
А можно узнать размер БД и конфу сервера?

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