![]() |
|
|
![]()
|
|
| Aprol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
КАк лучше делать?
Использовать одну транзакцию в приложении или несколько, по одной для каждого компонента? |
|||
|
||||
| Marduk |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 9.4.2007 Репутация: нет Всего: 2 |
лучше использовать по одной транзакции на каждую операцию Insert, update, delete
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
на этот вопрос сложно ответить однозначно, читающую можно одну-две, а пишущих можно и больше,
Я разделил, например, логически (для транзакций) программу на несколько модулей: в каждом модуле своя пишущая транзакция. Пример: в приложении может быть открыто несколько окон редактирования. Пользователь вносит данные в одно и нажимает сохранить, транзакция подтверждается и закрывается. Если одна пишущая транзакция, то во втором окне данные не сохранятся, т.к. ты закрыл транзакцию, а команду dataset.post не выполнил. Если окно редактирования в один момент времени может быть только одно, то и нет смысла создавать несколько транзакций. |
|||
|
||||
| DimW |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
лучше для кого? для тебя, юзера или сервера БД? и ненадейся получить однозначный ответ т.к. ты не указал СУБД, а работа разных СУБД в корне не одинакова. к примеру для ms sql приветствуются короткие таранзакции т.к. он блокиратор(хотя был какой то шаг к версионности в последних версиях), причем может заблокировать не только редактируюмую записть, но и таблицу полностью, отсуда остальные юзеры "курят"... в оракле наоборот приветствуются длинные транзакции (в меру длинные), так как оракл версионник и остальным юзерам глубоко пофиг на то что ты отредактировал, но не закоммитил. и такие транзакции производительней. и вобще решая задачу нужно отталкиваться от конкретной ситуации. что бы не быть голословным приведу пример по ораклу:
вот эта вставка с одной транзакцией отработала за 0,110 секунды таже вставка но разбитая на 1000 транзакций:
отработала за 0,181 а при вставке 10 000 записей зазница очень ощутимая: одной транзакцией: 0,437 10 000 транзакций: 1,781 это говорит о том что большую часть времени сервер трудился что бы зафиксировать изменения в таблице. Это сообщение отредактировал(а) DimW - 1.8.2007, 08:02 |
||||
|
|||||
| Aprol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Субд firebird
вобщем буду использовать пару транзакций одну на чтение другую на запись. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |