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

Вниз

Как лучше заканчивать транзакцию на чтение?   Найти похожие ветки 

 
kaif ©   (2003-09-10 22:19) [0]

Приложение часто делает мелкие запросы на чтение в отдельных транзакциях (только SELECT). Можно такие транзакции заканчивать с помощью commit, а можно rollback. Что экономнее для ресурсов сервера? Или все равно?
Буду признателен за любые соображения.


 
Sergey_Masloff   (2003-09-10 23:08) [1]

Если только SELECT то ИМХО абсолютно параллельно что коммит что роллбэк. При selecte версии записей не создаются так что накладные расходы на завершение минимальны.


 
Evgeny V ©   (2003-09-11 06:22) [2]

При select лучше commit, по накладным расходам, ссылка - книга "Мир InterBase" авторы Ковязин и Востриков


 
Johnmen ©   (2003-09-11 09:14) [3]

Commit оптимальнее, если тр-ия только читающая.


 
stone ©   (2003-09-11 09:28) [4]

А зачем вообще в этом случае стартовать явную транзакцию? Разве неявные транзакции уже отменили?


 
Alexandr ©   (2003-09-11 09:33) [5]

в firebird есть реадонли транзакция. Самое то для селектов.
А завершать лучше по коммит.


 
jack128 ©   (2003-09-11 11:29) [6]

при определенных параметрах трансакции (read only и еще что, точно не помню) не создается версий записи, а транзакция стартует УЖЕ в commit - состоянии. firebird и yaffil если в трансакции были только select запросы, то rollback автоматом заменяется на commit).. Все описано на ibase.ru


 
kaif ©   (2003-09-11 11:50) [7]

Всем спасибо!
Я инстинктивно использовал везде commit.

2 Alexandr © (11.09.03 09:33) [5]
Интересно про readonly транзакции... Хотя я стараюсь не закладываться на определенный тип сервера. У меня программа на рынок.

2 stone © (11.09.03 09:28) [4]
Явные старты мне пришлось применять, так как если транзакция стартовала неявно и кроме select-а что-то делалось (тем не менее), то с некоторой вероятностью при многопользовательской работе в сети у меня сервер зацикливался (Yaffil-821). Поэтому я все старты переделал на явные. К сожалению, причина зацикливания сервера в этом. Хотя это эмпирический, но уже факт, подтвержденный многократно...


 
Romkin ©   (2003-09-11 11:56) [8]

2kaif read read_committed rec_version nowait - типовая самая легкая транзакция (практически ее нет), просто читаешь данные


 
Alexandr ©   (2003-09-11 12:38) [9]

дык и так readonly транзакции есть в FB, Yaffil
Interbase 6.5 и выше не смотрел. не знаю. Но что-то мне подсказывает, что скорее есть, чем нет.


 
kaif ©   (2003-09-11 16:00) [10]

спасибо
Romkin © (11.09.03 11:56) [8] и
Alexandr © (11.09.03 12:38) [9]

Попробовал readonly транзакции. Очень здорово работают. Есть ощущение легкости работы. К тому же одну мою глобальную транзакцию сделал readonly и сейчас легко отлавливаю все те места в программе, где имелись неявные старты с апдейтами (система очень большая).

Теперь такой вопрос. У меня в системе много мелких транзакций на чтение, создаваемых runtime. Однако есть и одна глобальная, с которой (исторически так получилось) много мелких таких запросов работает.
Что правильнее?
Иметь одну долгую глобальную транзакцию readonly read_committed для таких дел или лучше вообще не иметь долгих транзакций, даже readonly?


 
Zacho ©   (2003-09-11 16:07) [11]


> kaif © (11.09.03 16:00) [10]

Имхо, долгая read_committed read - вполне нормально, и никаких доп. нагрузок, неудобств, удержания версий и т.п. не приносит.


 
kaif ©   (2003-09-11 16:15) [12]

Что же, вырисовывется даже некоторая неплохая идеология...
Одна длинная readonly для всякой всячины и отдельные недолгие read_committed nowait транзакции для апдейтов или селектов, могущих закончиться апдейтами.


 
Johnmen ©   (2003-09-11 16:19) [13]

>kaif © (11.09.03 16:15)

Лично я именно так и делаю :)


 
Sergey_Masloff   (2003-09-11 23:30) [14]

Johnmen © (11.09.03 16:19) [13]
>Лично я именно так и делаю :)
Думаешь ты один? ;-)


 
Alexandr ©   (2003-09-12 07:22) [15]


> и отдельные недолгие read_committed nowait транзакции для
> апдейтов или селектов, могущих закончиться апдейтами.


а вот это лучше в snapshot делать


 
Deniz ©   (2003-09-12 08:46) [16]

> Alexandr © (12.09.03 07:22) [15]
>а вот это лучше в snapshot делать

А вот это(snapshot) для отчетов.


 
kaif ©   (2003-09-12 14:35) [17]

snapshot вроде (где-то читал) много ресурсов жрет, так что я его редко применяю, разве что для строгих отчетов, требующих "снимка базы".


 
Alexandr ©   (2003-09-12 14:42) [18]

дык зато между чтением и последующей записью в snapshop
никто не вклинится со своим апдейтом считанных тобой данных.
и в результате юзер будет уверен, что он поменял именно то что видит, на то, что хочет.


 
kaif ©   (2003-09-12 14:45) [19]

2 Alexandr © (12.09.03 14:42) [18]
Я как правило работаю в оптимистической модели (задачи учета).
У меня два юзера как правило одни и те же данные не редактируют. Хотя для пессимистической модели ты прав.


 
Alexandr ©   (2003-09-12 14:53) [20]

ну дык. тогда и ресурсов с чего бы ему много жрать...



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

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

Наверх




Память: 0.51 MB
Время: 0.017 c
3-3740
Patrick
2003-09-15 09:35
2003.10.02
Переменная DateTime в запросах SQL.


7-4139
pod
2003-07-18 07:46
2003.10.02
Клавиатура


3-3774
Gorlum
2003-09-10 22:55
2003.10.02
Помогите начать


6-4029
IBSN
2003-08-01 19:52
2003.10.02
Как вывести локальное имя компьютера?


4-4158
Orcy
2003-07-27 17:39
2003.10.02
Как получить handle edit а в окне другова приложения?