Re: два вопроса по isc_dsql_free_statement

2007-05-21 Пенетрантность Dmitry Yemanov


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

2007-05-21 Пенетрантность Horsun Vlad

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

2007-05-21 Пенетрантность 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

тоже вроде все верно, хотя, конечно - неоптимально.




Re: два вопроса по isc_dsql_free_statement

2007-05-21 Пенетрантность Oleg Matveyev

 Каждый statement жрёт около 64К виртуалки. Когда она закончится - ты
об
 этом узнаешь ;)

спасибо, понаблюдаю.




Re: два вопроса по isc_dsql_free_statement

2007-05-21 Пенетрантность Horsun Vlad

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

2007-05-21 Пенетрантность Oleg Matveyev

 isc_dsql_prepare // если текст запроса в цикле не меняется

нет-нет, как раз случай когда меняется





Re: два вопроса по isc_dsql_free_statement

2007-05-21 Пенетрантность Oleg Matveyev

   isc_dsql_free_statement // DSQL_close
 }
 isc_dsql_free_statement // DSQL_drop

а вот про это незнал, почитаю внимательнее.




Re: Два вопроса.

2006-05-19 Пенетрантность Alexey Kovyazin


Dmitri Kuzmenko пишет:


Hello, Dmitry!

Dmitry Lendel wrote:

2 Утилита gkill  от Oleg Loa убивает системные таблицы в базе? 
Теоретически

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


исходника разве нет?
можно еще просто delete from rdb$pages выполнить.




Это можно восстановить достаточно легко :)

вот если из всех RDB... Тогда да, практически хлам. При условии 
остуствия метаданных или предыдущих копий БД.