![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чем грозят длинные транзакции в FireBird ?
kudatsky © (2010-10-18 10:22:00)Разрабатывается СУБД на FireBird+Delphi+FibPlus. Будут задействованы SavePoints, поэтому повидимому без длинных транзакций не обойтись. Не исключены ситуации, когда транзакция стартует утром, а подтверждается вечером. База будет иметь объём несколько ГБ и будут одновременно работать до сотни пользователей. Чем грозит такая ситуация в связи с использованием длинных транзакций ? Главное - будет ли система работать стабильно ?
Виталий Панасенко(дом) (2010-10-26 21:37:00) [1]да, все мною прочитанные статьи, книги и т.д. в один голос говорят - "чем короче пишущая транзакция, тем лучше"... читающая.. да хоть до скончания времен(которое с 50% вероятностью из Нета наступит где-о через 3,5 млрд. лет с нынешним развитием науки)!
Sergey13 (2010-10-26 10:18:00) [2]> [34] kudatsky (26.10.10 09:38)
> Но у меня к этому не лежит душа ;-)
То, что тебе лень что-то делать - это конечно мощный аргумент, который перешибает любой довод против. 8-)
Во всех книгах/статьях по БД (это про "квалифицированное мнение") написано, что транзакции чем короче тем лучше. Нигде нет про их длительность "от меня и до вечера".
Твой подход напоминает старинный анекдот про испытание японской бензопилы в нашем лесхозе, где решили попробовать спилить бетонный столб.
Продолжай в том же духе и возможно появятся "глубокие знания" в этом вопросе, и уж точно появится "собственный опыт".
kudatsky (2010-10-26 09:38:00) [3]>Виталий Панасенко
Можно. Но у меня к этому не лежит душа ;-)
И как насчёт SUBJ?
Хотелось бы услышать квалифицированное мнение,
основанное на глубоком знании и собственном опыте.
Виталий Панасенко (2010-10-25 17:36:00) [4]А можно вести типа версии. Т.е. каждое ПОДТВЕРЖДЕННОЕ редактирование порождает НОВУЮ версию(читай "запись") данных об объекте. Предыдущая становится типа не актуальной. Тогда для отката достаточно удалить(переместить, не суть) последнюю запись, предыдущая станет актуальной
kudatsky (2010-10-25 17:26:00) [5]Друзья, спасибо за беседу. Кое-что я из неё почерпнул.
У меня кончается рабочий день. Завтра утром я сюда загляну.
kudatsky (2010-10-25 17:17:00) [6]>Виталий Панасенко
Так и делается. Сначала отдельная транзакция ставит метки и закрывается, а потом стартует редактирующая транзакция
Виталий Панасенко (2010-10-25 17:13:00) [7]да и еще вопрос: если ТРАНЗАКЦИЯ НЕ ПОДТВЕРЖДЕНА, ТО НИКТО ЭТИ САМЫЕ МЕТКИ НЕ УВИДИТ! во веки веков... либо нужно два прохода: выставить метки, а затем уже редактировать данные.. либо как в фибах - холостой апдейт БЕЗ комита, заблокирует запись
kudatsky (2010-10-25 17:13:00) [8]Насчёт человека - это шутка. Я же написал - запустить циклический процесс.
Запустить прогу, которая раз в минуту (или раз в секунду) будет всё это проверять
Sergey13 (2010-10-25 17:10:00) [9]> [27] kudatsky (25.10.10 16:50)
Ну вот с 9-00 до 16-00 человек пахал в поте лица. И только он захотел завершить работу, у него (или не у него, а сеть, или не сеть, а сервак) заглючило. Проверили - не отвечает. И что, 7 часов работы псу под хвост?
ИМХО, побьют. 8-)
kudatsky (2010-10-25 16:50:00) [10]Примем человека на пол-ставки, пусть трудится ;-)))
Проще всего запустить циклический процесс. Раз в минуту проверить достаточно.
Sergey13 (2010-10-25 16:44:00) [11]> [25] Виталий Панасенко (25.10.10 16:42)
> А кто этим будет заниматься?
Админ упавшего сервера. Все выходные путь сидит. 8-)
Виталий Панасенко (2010-10-25 16:42:00) [12]
> Если сигнал
> сколько то раз не поступил, то занятые строки освобождаются.
>
А кто этим будет заниматься?
Sergey13 (2010-10-25 16:39:00) [13]> [21] kudatsky (25.10.10 16:20)
> Как то это всё сложно...
Никто и не обещал, что все просто.
>Там ведь не одна таблица, а несколько.
Ну и что? Конечное количество то надеюсь. 8-)
kudatsky (2010-10-25 16:36:00) [14]Это важный вопрос, но я им ещё не занимался. Думаю, клиентское приложение должно регулярно подавать серверу сигналы о своём присутствии. Если сигнал
сколько то раз не поступил, то занятые строки освобождаются.
Виталий Панасенко (2010-10-25 16:29:00) [15]а если метку выставил, а прога/система "упала"?
kudatsky (2010-10-25 16:20:00) [16]Как то это всё сложно... Там ведь не одна таблица, а несколько.
Так что насчёт надёжности и возможных последствий вообще ?
Какие могут быть проблемы ? Может, пока не поздно, отказаться от SavePoints ?
Пока при нескольких пользователях всё вроде бы работает.
Sergey13 (2010-10-25 16:11:00) [17]+
Только копии в данном случае будут называться версиями, среди которых могут быть рабочие (те которые "железно" в БД) и временные, над которыми работа идет. Последняя временная, после утверждения, становится последней рабочей.
Sergey13 (2010-10-25 16:06:00) [18]> [18] kudatsky (25.10.10 15:22)
Копии можно плодить. И убивать по мере надобности. Второе даже необходимо.
kudatsky (2010-10-25 15:22:00) [19]>Sergey13
Мысль неплохая. Но как при этом использовать точки сохранения ? Я хочу дать пользователю возможность отойти на пару шагов назад.
kudatsky (2010-10-25 15:18:00) [20]Признак занятости ставится перед использованием. Т.е. сначала проверяется, не использует ли эти строки кто другой. Потом в отдельной транзакции эти строки отмечаются. И уж потом стартует длинная транзакция для редактирования.