Форум: "Базы";
Текущий архив: 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