Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.30;
Скачать: CL | DM;

Вниз

IBX, prepare & транзакции.   Найти похожие ветки 

 
asail   (2007-11-06 23:15) [0]

Здрасте Все!
Вопрос такой:
Как долго хранится на сервере откомпилированный запрос?
На протяжении времени жизни транзакции, коннекта клиента к БД или еще как?
Т.е. если я выполнил prepare для запроса, закрыл транзакцию, открыл новую - надо ли снова выполнять prepare или нет?
Аналогично если отключиться и снова подключиться к БД?
Спасибо.


 
Johnmen ©   (2007-11-07 09:27) [1]

Можно вообще не препарировать. Это делается в любом случае неявно.
Про остальное www.ibase.ru


 
asail   (2007-11-07 09:39) [2]


> Можно вообще не препарировать. Это делается в любом случае
> неявно.

Это я как раз понимаю. Вопрос в том, как добиться максимальной производительности при многократном вызове одного и того же запроса, но в контексте разных транзакций и нескольких коннектов к БД?


 
Johnmen ©   (2007-11-07 09:56) [3]


> нескольких коннектов к БД?

Откуда несколько коннектов?


 
Правильный_Вася   (2007-11-07 10:45) [4]

AFAIK, на время жизни сессии


 
asail   (2007-11-07 11:46) [5]


> Откуда несколько коннектов?

Ну законектился, выполнил запрос, отконектился. И так несколько (много) раз... Вопрос если при первом коннекте к БД выполнить prepare, то окажет ли это влияние на все остальные разы?


 
Правильный_Вася   (2007-11-07 12:02) [6]


> Ну законектился, выполнил запрос, отконектился. И так несколько
> (много) раз.

довольно странная (если не сказать жестче) арзитектура


 
Johnmen ©   (2007-11-07 12:23) [7]


> Ну законектился, выполнил запрос, отконектился. И так несколько
> (много) раз...

Это специально так, чтобы помедленнее было? :)


 
asail   (2007-11-07 13:01) [8]

Поясню:
Есть некий сервис который бежит и время от времени получает извне некие данные, которые надо определенным образом раскидать по БД.
Только при получении этих данных сервис коннектится к БД, открывает транзакцию и выполняет набор запросов.
Вопрос, в какой момент припэрить будет оптимальнее.


 
Sergey13 ©   (2007-11-07 13:08) [9]

> [8] asail   (07.11.07 13:01)
> Вопрос, в какой момент припэрить будет оптимальнее.

А как много ты надеешься на этом съэкономить? Запросы параметрические?


 
DrPass ©   (2007-11-07 13:26) [10]


> Поясню:
> Есть некий сервис который бежит и время от времени получает
> извне некие данные, которые надо определенным образом раскидать
> по БД.
> Только при получении этих данных сервис коннектится к БД,
>  открывает транзакцию и выполняет набор запросов.
> Вопрос, в какой момент припэрить будет оптимальнее.

В таком случае - ни в какой. Я не знаю, сколько подготовленный запрос сидит в буфере, и относится ли буфер к транзакции или ко всему коннекшену (думаю, все-таки к коннекшену). Но однозначно при прекращении сессии все ее буферы уничтожаются. Какого-либо глобального кеша запросов у птички нет.
Если оптимизация так важна - что тебе мешает приделать к твоему сервису постоянное соединение?


 
asail   (2007-11-07 13:38) [11]


> Запросы параметрические?

Ессесно...


> что тебе мешает приделать к твоему сервису постоянное соединение

Сервис может бежать дни, а то и недели/месяцы и держать все это время коннект к БД не есть хорошо...

Ну да бог с ним с коннекшеном, но хотя бы в разных транзакциях внутри одного коннекта держать подготовленные запросы помогло бы сильно...

Просто сейчас в этом сервисе порядка 300 различных запросов (на DataModuls) которым при каждом коннекте к БД делаю prepare. А внутри каждого коннекта запускается X транзакций, работающих с этими запросами. Вопрос в том, на сколько такой механизм эффективен и есть ли тут что оптимизировать?


 
Desdechado ©   (2007-11-07 13:43) [12]

Время соединения может на порядки превышать время выполнения одиночного запроса INSERT.
Так что держи постоянное подключение и фиксируй транзакции.


 
Sergey13 ©   (2007-11-07 13:44) [13]

> [11] asail   (07.11.07 13:38)

У тебя какая то проблема конкретная по производительности в наличии? ИМХО будет производительнее решать конкретно ее. Много на оптимизации препарирования не выиграешь. В конце концов что мешает просто с секундомером сравнить 2 варианта.


 
Johnmen ©   (2007-11-07 14:44) [14]


> Sergey13 ©   (07.11.07 13:44) [13]
> В конце концов что мешает просто с секундомером сравнить 2 варианта.

Цена деления :)


 
Johnmen ©   (2007-11-07 14:45) [15]

>asail  

Не зацикливайся на ловле блох.


 
DrPass ©   (2007-11-07 15:04) [16]


> Сервис может бежать дни, а то и недели/месяцы и держать
> все это время коннект к БД не есть хорошо...

В смысле, не хорошо? Соединение - не трусы, резинкой нигде не натрет. Сделай постоянное соединение и не морочь ни себе голову, ни машине процессорв



Страницы: 1 вся ветка

Текущий архив: 2008.03.30;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.057 c
2-1204145846
Леха
2008-02-27 23:57
2008.03.30
Проблема с dll


15-1203320038
dr_creigan
2008-02-18 10:33
2008.03.30
драйвера


3-1194010850
Андрей Пл
2007-11-02 16:40
2008.03.30
FireBird нужна прога для визуальной работы!!!


4-1185800432
Раф
2007-07-30 17:00
2008.03.30
Как в приложении запустить горячие клавиши


4-1185658389
fdooch
2007-07-29 01:33
2008.03.30
Получение системного шрифта