Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
9-1168453494
DillerXX
2007-01-10 21:24
2008.03.30
Загрузка процессора


15-1203177531
Alien1769
2008-02-16 18:58
2008.03.30
Интересная ошибка


15-1203262710
xayam
2008-02-17 18:38
2008.03.30
Вопрос по javascript


3-1194530578
-=Le][=-
2007-11-08 17:02
2008.03.30
Фильтр для получения списка значений.


2-1204284673
scorpio
2008-02-29 14:31
2008.03.30
Помогите с запросом из Foxa в Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский