Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Потдержка транзакции
SMitty
Вставить ник
сообщение 4:03:2008, 14:14
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 15
Регистрация: 4:03:2008
Из: СПб
Пользователь №: 15 641
Специализация: прикладная математика



Репутация: - 0 +


Здравствуйте форумчане.
Есть такая ситуация: пишу клиента на Delphi 7 к бд Oracle. На сервере FireWall настроен так, что отрубает транзакции по которым нет обмена данными долгое время.
Так вот суть вопроса: из Delphi приходится запускать довольно большие хранимые процедуры, они выполняются долго, соответственно FireWall транзакцию отрубает. Как можно обойти этот момент?
Буду рад любым идеям.
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 12)
European
Вставить ник
сообщение 4:03:2008, 14:45
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 816
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Цитата(SMitty @ 4:03:2008 - 17:14) *
Как можно обойти этот момент?

Зажать админам руки в дверь за такую конфигурацию фаервола

Или как-то уменьшать ХП, хотя это и не всегда возможно. А так анализировать план запроса, пытаться добиться минимальной "стоимости" запроса.
Подняться вверх 
 
Сообщение #2
SMitty
Вставить ник
сообщение 4:03:2008, 15:01
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 15
Регистрация: 4:03:2008
Из: СПб
Пользователь №: 15 641
Специализация: прикладная математика



Репутация: - 0 +


То есть стараться уложится в заданное время?
Я пытался сделать в отдельном потоке в рамках тойже транзакции непрерывный цикл запросов типа "select 1 from dual".
Но все равно приходится ждать ответа процедуры.
Подняться вверх 
 
Сообщение #3
European
Вставить ник
сообщение 4:03:2008, 15:35
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 816
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Цитата(SMitty @ 4:03:2008 - 18:01) *
То есть стараться уложится в заданное время?

Да, это прежде всего...
Кстати, а по какому критерию определялось время простоя, после которого транзакция отменяется?
Цитата(SMitty @ 4:03:2008 - 17:14) *
приходится запускать довольно большие хранимые процедуры, они выполняются долго

Долго это сколько?

Я так понимаю, что для обрубания транзакций должны быть веские доводы, а вариант
Цитата(SMitty @ 4:03:2008 - 18:01) *
сделать в отдельном потоке в рамках тойже транзакции непрерывный цикл запросов типа "select 1 from dual".

это из ряда "а нам все равно"
Подняться вверх 
 
Сообщение #4
SMitty
Вставить ник
сообщение 5:03:2008, 07:21
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 15
Регистрация: 4:03:2008
Из: СПб
Пользователь №: 15 641
Специализация: прикладная математика



Репутация: - 0 +


Цитата
а вариант
Цитата(SMitty @ 4:03:2008 - 18:01)
сделать в отдельном потоке в рамках тойже транзакции непрерывный цикл запросов типа "select 1 from dual".

это из ряда "а нам все равно"

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

Цитата
Кстати, а по какому критерию определялось время простоя, после которого транзакция отменяется?

Я так понимаю просто по статистике взяли среднее. Около пяти минут.
Процедура же может выполняться до получаса.
Подняться вверх 
 
Сообщение #5
European
Вставить ник
сообщение 5:03:2008, 08:20
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 816
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Цитата(SMitty @ 5:03:2008 - 10:21) *
Процедура же может выполняться до получаса.

На мой взгляд, это очень долго и нужно попытаться что-то сделать. Хотя все ИМХО, т.к. структуры таблиц и ХП мне не известны.

Я не специалист в конфигурации фаерволов и администрирования Оракла, но может стоит попытаться не применять ограничения к транзакциям для приложения? Это больше вопрос к администраторам...

P.S. Было бы интересно послушать мнение других форумчан
Подняться вверх 
 
Сообщение #6
sax_ol
Вставить ник
сообщение 5:03:2008, 08:38
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 740
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 27 +


Цитата(SMitty @ 5:03:2008 - 10:21) *
Около пяти минут.

Сильно настораживает ... многовато.
Подняться вверх 
 
Сообщение #7
European
Вставить ник
сообщение 5:03:2008, 08:44
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 816
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Цитата(sax_ol @ 5:03:2008 - 11:38) *
Сильно настораживает ... многовато

Относительно получасовых ХП не очень
Подняться вверх 
 
Сообщение #8
sax_ol
Вставить ник
сообщение 5:03:2008, 09:07
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 740
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 27 +


Пол часа это совсем ужос, тут и пять минут на таймаут ставить и то подумаешь ...
Подняться вверх 
 
Сообщение #9
SMitty
Вставить ник
сообщение 5:03:2008, 09:36
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 15
Регистрация: 4:03:2008
Из: СПб
Пользователь №: 15 641
Специализация: прикладная математика



Репутация: - 0 +


Да, ХП действительно выполняются очень долго. Приходится ворочить очень большими массивами данных. Поэтому переписывать процедуры или пытаться их разбить на много маленьких смысла не имеет.
Ситуацию осложняет то, что и приложение и ХП написаны намного раньше, чем введена эта конфигурация фаервола.
Подняться вверх 
 
Сообщение #10
sax_ol
Вставить ник
сообщение 5:03:2008, 09:47
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 740
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 27 +


Цитата(SMitty @ 5:03:2008 - 12:36) *
Приходится ворочить очень большими массивами данных. Поэтому переписывать процедуры или пытаться их разбить на много маленьких смысла не имеет.

Может надо с индексами поколдовать? оно иногда помогает ... как-то делали отчеты, там процедуры работали около 40-60 сек! заказчик был подавлен smile.gif пошаманили - в итоге 7-8 сек. ( ~ в 6 и более раз)

PS: но начинать надо с изучения планов выполнения.
Подняться вверх 
 
Сообщение #11
European
Вставить ник
сообщение 5:03:2008, 09:52
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 816
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


SMitty, тема всё больше уходит в душевные излияния.
Проблему можно решить следующими способами:
1 - изменить конфигурация фаервола
2 - изменить ХП
3 - совместно п.1 и п.2
4 - удалять гланды через ..., пытаясь "крутить" данные, чтобы наколоть фаервол.
Все остальные способы - различные вариации вышеизложенных. Остальное - Ваш выбор, т.к. никакой информации у нас нет

Подняться вверх 
 
Сообщение #12
SMitty
Вставить ник
сообщение 7:03:2008, 07:56
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 15
Регистрация: 4:03:2008
Из: СПб
Пользователь №: 15 641
Специализация: прикладная математика



Репутация: - 0 +


Огромное спасибо European и sax_ol за участие. Основные идеи решения я понял, а дальше думать буду
Подняться вверх 
 
Сообщение #13


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 17:05:2008 - 07:41
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net