Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.06.2008, 00:03
|
|||
|---|---|---|---|
|
|||
Транзакции |
|||
|
#18+
Возможно несколько глупый вопрос, но я толком Pg еще не использовал, буквально только что скачал. Подскажите, плиз, как происходит работа с транзакциями в Pg? Я имею в виду вот что: много лет работаю с Firebird и там, как правило, используются минимум две транзакции на клиенте - одна читающая, которая не нагружает сервер версиями записей, а другая (короткая) пишущая. А как у вас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.06.2008, 01:18
|
|||
|---|---|---|---|
Транзакции |
|||
|
#18+
У нас бизнес-логика реализована на ХП, поэтому не заморачиваемся с типом транзакции. Сколько надо столько и происходит изменение данных (в разумных приделах, конечно). Главное, чтобы целостность базы была в порядке. Единственно, чем может быть полезна, по-моему, только читающая транзакция, так это то тем, что счетчик номера транзакции не увеличивается (хотя это, вроде, только обещают сделать в 8.4) Правильно ли я понял, что для реализации какой-то одной логической функции используются две транзакции? Или даже больше транзакций? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.06.2008, 01:44
|
|||
|---|---|---|---|
|
|||
Транзакции |
|||
|
#18+
Dan BlackПравильно ли я понял, что для реализации какой-то одной логической функции используются две транзакции? Или даже больше транзакций? Попробую объяснить, суть примерно такая, если перейти на GUI: - есть грид с данными select'а в одной читающей транзакции с параметром read commited - пользователь добавляет/изменяет/удаляет данные, но вот insert/update/delete происходят уже в совершенно другой транзакции, которая никак не связана на первой - для изменения обновленных данных в гриде или выполняется refresh текущей записи с сервера. Схема упрощенная, но, надеюсь, понятная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.06.2008, 02:22
|
|||
|---|---|---|---|
Транзакции |
|||
|
#18+
А зачем может понадобиться два этих разных действия делать в одной транзакции? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.06.2008, 02:33
|
|||
|---|---|---|---|
|
|||
Транзакции |
|||
|
#18+
Dan BlackА зачем может понадобиться два этих разных действия делать в одной транзакции? Т.е., если я правильно понял, то идеология такая же? В одной транзакции, если мне не изменяет память в основном с MS SQL работают, но могу ошибиться, ибо не трогал его с 2002 года. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.06.2008, 02:38
|
|||
|---|---|---|---|
Транзакции |
|||
|
#18+
Сергей ФроловТ.е., если я правильно понял, то идеология такая же? Вообще, уже довольно поздно, и я, наверное, чего-то не допонимаю. Завтра народ проснётся и что-нибудь да напишет ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.06.2008, 08:44
|
|||
|---|---|---|---|
|
|||
Транзакции |
|||
|
#18+
Сергей ФроловВозможно несколько глупый вопрос, но я толком Pg еще не использовал, буквально только что скачал. Подскажите, плиз, как происходит работа с транзакциями в Pg? Я имею в виду вот что: много лет работаю с Firebird и там, как правило, используются минимум две транзакции на клиенте - одна читающая, которая не нагружает сервер версиями записей, а другая (короткая) пишущая. А как у вас? 1. С 8.3 читающие транзакции не трогают счетчик транзакции. 2. ИМХО транзакция читающая пока не начала писать , т.е. это автоматическая фича. 3. ИМХО можно спокойно всё делать в одной транзакции, и ничего страшного не будет, ни замедления ни ускорения (как минимум заметного). Что-то новое стоит писать на 8.3, ибо переходить всё равно прийдётся, а 8.3 достаточно стабильная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.06.2008, 14:56
|
|||
|---|---|---|---|
Транзакции |
|||
|
#18+
можно ещё принудительно запретить транзакции становиться пишущей если начинать её с Код: plaintext Код: plaintext -- „Истина — это вовсе не то, что можно убедительно доказать, это то, что делает всё проще и понятнее“ — Антуан де Сент-Экзюпери ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.06.2008, 16:46
|
|||
|---|---|---|---|
|
|||
Транзакции |
|||
|
#18+
важно понимать, что в отличии от firebird, который позволяет в рамках одного соединения открывать несколько транзакций - postgres может открывать только одну транзакцию в соединении. т.е. чтобы реализовать модель поведения такуюже как описано выше - нужно держать два соединения с постгресом. Также нужно понимать, что клиентская библиотека firebird автоматом преобразует комманды select в курсор и фетчит записи оттуда по мере необходимости приложению.. В постгресе для такого рода поведения нужно явно писать open cursor ..., в последующими коммандами fetch from cursor, если в постгресе просто отослать комманду select то на клиента вернется Весь получившийся набор данных.. Я к тому, что реализовать уже привычную вам архитектуру приложения для FB на PG будет непросто..( нетривиально?). Еще также есть другие засады. К примеру - FB управляет транзакциями только с клиента . Т.е. завершить транзакцию можно только послав комманду с клиента. Что позволяет реализовать следущую модель поведения : Старт транзакции выполнить комманду 1. выполнить комманду 2 ( происходит ошибка - транзакция не откатывается, откатывается только результаты работы комманды 2) commit. В результате в базе зафиксируется результат выполнения комманды 1. В PG - же все по другому. в момент возникновения ошибки, когда выполняется комманды 2 - отактится ВСЯ транзакция. Это естетсвенно заставляет пересмотреть сложившиеся привычки - которые закреплены у вас в результате опыта работы с Fb. Так что резюмирую.. для ПГ вам придется попотеть чтобы переделать приложения с учетом его особенностей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&tablet=1&tid=2004299]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 369ms |

| 0 / 0 |
