Re: два вопроса по isc_dsql_free_statement
Oleg Matveyev wrote: 1) если приложение (или компоненты доступа) забывают выполнить isc_dsql_free_statement, то как в этом случае действует сервер? Означает ли это утечку ресурсов сервера? Мое предположение - ничего сервер не делает, до отключения данного соединения. Так точно. 2) второй вопрос вытекает из первого. Если приложение выполняет такую последовательность (сейчас смотрю на такое приложение): isc_start_transaction isc_dsql_allocate_statement isc_dsql_prepare isc_dsql_execute (isc_dsql_fetch) isc_commit_transaction - вот на данном этапе, сервер нормально переживет? А почему нет? Время жизни стейтмента по определению больше, чем транзакции. P.S. Если можно - интересует поведение FB1.5.4, FB2.x, Ya (Олег, какой там последний?) - короче все актуальные на сегодня версии. Без разницы, насколько я знаю. -- Дмитрий Еманов
Re: два вопроса по isc_dsql_free_statement
Oleg Matveyev ... Добрый день. 1) если приложение (или компоненты доступа) забывают выполнить isc_dsql_free_statement, то как в этом случае действует сервер? Означает ли это утечку ресурсов сервера? Мое предположение - ничего сервер не делает, до отключения данного соединения. Конечно, а почему он должен что-то делать ? 2) второй вопрос вытекает из первого. Если приложение выполняет такую последовательность (сейчас смотрю на такое приложение): isc_start_transaction isc_dsql_allocate_statement isc_dsql_prepare isc_dsql_execute (isc_dsql_fetch) isc_commit_transaction - вот на данном этапе, сервер нормально переживет? Да isc_dsql_free_statement - а этот этап иногда вообще забывается, то ли компонентой доступа, толи самим приложением. Если при выполнении другого запроса опять выполняется isc_dsql_allocate_statement, то приложение нужно лечить Вопрос: это нормально? Как сервер это переживет? Каждый statement жрёт около 64К виртуалки. Когда она закончится - ты об этом узнаешь ;) P.S. Если можно - интересует поведение FB1.5.4, FB2.x, Ya (Олег, какой там последний?) - короче все актуальные на сегодня версии. (Пытаюсь поддерживать совместимость со всеми) За Ya не скажу, в FB вроде одинаково всё должно быть -- Хорсун Влад
Re: два вопроса по isc_dsql_free_statement
isc_start_transaction isc_dsql_allocate_statement isc_dsql_prepare isc_dsql_execute (isc_dsql_fetch) isc_commit_transaction - вот на данном этапе, сервер нормально переживет? А почему нет? Время жизни стейтмента по определению больше, чем транзакции. Так, тогда значит это правильный порядок? а что мешает мне открыть бааальшую транзакцию...: isc_start_transaction for(;;) { isc_dsql_allocate_statement isc_dsql_prepare isc_dsql_execute (isc_dsql_fetch) isc_dsql_free_statement } isc_commit_transaction тоже вроде все верно, хотя, конечно - неоптимально.
Re: два вопроса по isc_dsql_free_statement
Каждый statement жрёт около 64К виртуалки. Когда она закончится - ты об этом узнаешь ;) спасибо, понаблюдаю.
Re: два вопроса по isc_dsql_free_statement
Oleg Matveyev ... isc_start_transaction isc_dsql_allocate_statement isc_dsql_prepare isc_dsql_execute (isc_dsql_fetch) isc_commit_transaction - вот на данном этапе, сервер нормально переживет? А почему нет? Время жизни стейтмента по определению больше, чем транзакции. Так, тогда значит это правильный порядок? а что мешает мне открыть бааальшую транзакцию...: isc_start_transaction for(;;) { isc_dsql_allocate_statement isc_dsql_prepare isc_dsql_execute (isc_dsql_fetch) isc_dsql_free_statement } isc_commit_transaction тоже вроде все верно, хотя, конечно - неоптимально. Не забывай о том, что у isc_dsql_free_statement есть ещё один параметр. Оптимально, в данном случае, будет так : isc_start_transaction isc_dsql_allocate_statement isc_dsql_prepare // если текст запроса в цикле не меняется for(;;) { // isc_dsql_prepare // если текст запроса в цикле меняется isc_dsql_execute (isc_dsql_fetch) isc_dsql_free_statement // DSQL_close } isc_dsql_free_statement // DSQL_drop isc_commit_transaction -- Хорсун Влад
Re: два вопроса по isc_dsql_free_statement
isc_dsql_prepare // если текст запроса в цикле не меняется нет-нет, как раз случай когда меняется
Re: два вопроса по isc_dsql_free_statement
isc_dsql_free_statement // DSQL_close } isc_dsql_free_statement // DSQL_drop а вот про это незнал, почитаю внимательнее.
Re: Два вопроса.
Dmitri Kuzmenko пишет: Hello, Dmitry! Dmitry Lendel wrote: 2 Утилита gkill от Oleg Loa убивает системные таблицы в базе? Теоретически получаем груду дигитального хлама, с которым возиться бесполезно? исходника разве нет? можно еще просто delete from rdb$pages выполнить. Это можно восстановить достаточно легко :) вот если из всех RDB... Тогда да, практически хлам. При условии остуствия метаданных или предыдущих копий БД.