powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли держать читающую трансакцию открытой всё время работы приложения?
25 сообщений из 56, страница 1 из 3
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39632852
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте,

Прошу подсказать: есть ли какие-то противопоказания к subj? Не накапливается ли мусор?

Спасибо
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39632869
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.Borzov,

http://www.ibase.ru/ibtrans/
http://www.ibase.ru/ibx/

транзакции read read committed начиная с InterBase 6 стартуют типа сразу как committed, поэтому не влияют на "накопление версий".
"Накопление мусора" - терминологически некорректно, потому что мусор убирается. А вот удержание активными транзакциями версий от превращения в мусор - это да, плохо. За исключением read read committed.
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39632870
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы сказал так: в умелых руках это безопасно, но в целом - очень плохой знак типа "тут
говнокод".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39632939
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovЯ бы сказал так: в умелых руках это безопасно, но в целом - очень плохой знак типа "тут говнокод".
Если все-таки необходимо длительное время отображать результат Select-а на мониторе клиента, как лучше/безопаснее/надежнее сделать?
- CommitRetaining
- что-то другое?
Select выполняется с уровнем изоляции Read Committed.
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39632940
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729Dimitry SibiryakovЯ бы сказал так: в умелых руках это безопасно, но в целом - очень плохой знак типа "тут говнокод".
Если все-таки необходимо длительное время отображать результат Select-а на мониторе клиента, как лучше/безопаснее/надежнее сделать?
- CommitRetaining
- что-то другое?
Select выполняется с уровнем изоляции Read Committed.

Перестать использовать идиотские компоненты для которых "завершение транзакции== закрытие датасета"
Правда не уверен что такие есть.
У меня самодельный :)
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39632954
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks,

такие уже давно есть, только они требует полного фетча резалтсета
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39632967
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
frakssg729пропущено...

Если все-таки необходимо длительное время отображать результат Select-а на мониторе клиента, как лучше/безопаснее/надежнее сделать?
- CommitRetaining
- что-то другое?
Select выполняется с уровнем изоляции Read Committed.

Перестать использовать идиотские компоненты для которых "завершение транзакции== закрытие датасета"
Правда не уверен что такие есть.
У меня самодельный :)
Использую FIB+ 7.5 (офиц.купленные). Подскажите не идиотские -)
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39632988
dennis-r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729Использую FIB+ 7.5 (офиц.купленные). Подскажите не идиотские -)В FIB+ есть режим CachedUpdates. Ещё есть разные memory dataset'ы. И да, собственный dataset лучше.
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633022
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dennis-rsg729Использую FIB+ 7.5 (офиц.купленные). Подскажите не идиотские -)В FIB+ есть режим CachedUpdates. Ещё есть разные memory dataset'ы. И да, собственный dataset лучше.
Если правильно понимаю раздел "Использование кэшированных изменений" в FIBPlus Developers Guide, CachedUpdates предназначен для кэширования изменений. Разве он влияет на чтение?
dennis-rЕщё есть разные memory dataset'ы.
Клиентские компы слабые - мало оперативки. Нет ли здесь тупика?
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633030
dennis-r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729Если правильно понимаю раздел "Использование кэшированных изменений" в FIBPlus Developers Guide, CachedUpdates предназначен для кэширования изменений. Разве он влияет на чтение?Он позволяет считать данные и вообще отключиться от базы.
sg729dennis-rЕщё есть разные memory dataset'ы.
Клиентские компы слабые - мало оперативки. Нет ли здесь тупика?Если не выгребать миллионы записей, то никаких проблем.
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633058
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729Клиентские компы слабые - мало оперативки. Нет ли здесь тупика?

Это тупик если, во-первых, плохой разработчик приложения решил отображать весь триллион
записей и во-вторых, плохие компоненты этот дикий резалт-сет умеют держать исключительно в
ОЗУ. Устрани любую кривизну из этих двух и проблем со слабыми компами не будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633120
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.BorzovПрошу подсказать: есть ли какие-то противопоказания к subj? Не накапливается ли мусор?


могут накапливаться временные БЛОБы (например функция LIST в Fb 2.1), потому что они "умирают" только вместе с транзакцией.

Например http://www.sql.ru/forum/827880-a/mnogokratnye-update-blobov-in-place-bez-kommitov-utechka-pamyati?hl=blob ??????
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633145
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg729Если все-таки необходимо длительное время отображать результат Select-а на мониторе клиента, как лучше/безопаснее/надежнее сделать?
я же дал ссылку. Пропиши в параметрах транзакции
read
read_committed
rec_version
sg729- CommitRetaining
это зло, не надо его использовать.
sg729Select выполняется с уровнем изоляции Read Committed.
просто read committed недостаточно. См. выше.
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633518
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dennis-r, Dimitry Sibiryakov, kdv
Спасибо за помощь! -)
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633841
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо. Убираю длинные читающие транзакции. И тут сильно поможет FibDataset.CachedUpdates.

Однако напоролся на проблему, пытаюсь сейчас локализовать. А выглядит она так:
После открытия Dataset с CachedUpdates = true, если объект Database уничтожить, то при отрисовке в гриде, например, на некоторых полях (не на всех) начинают вылазить ошибки "Database not assigned for ...SelectQuery", и вылазит это на полях, в которых, как выясняется, FPrepared = false, а почему на них сейчас false, а на других - true вот это пока не понял, тестирую. Интересно так же, что dataset.transaction.DefaultDatabase := nil будет, конечно, обязательно и правильно, но ошибки оно не устраняет. А вот если физически не удалить Database, то ошибки не вылазит, даже после DefaultDatabase := nil.
Удаление Database нужно для возможности заполнения датасета в отдельном потоке. То есть, если в потоке отдельном открываем этот датасет и хотим использовать отдельный коннект, то создаем FibDatabase, заполняем dataset, который объявлен с CachedUpdates = true заранее, удаляем поток и FibDatabase. Если использовать в потоке доступ к отдельному FibDatabase, а к главному в приложении, а писали умные люди в форуме, что это теоретически не запрещено, то проблема не вылазит. Также проблема не вылазит, если завершившийся поток не прибить, а вместе с ним и Database оставить в памяти. Ошибка возникает только после физического удаления Database. Попробую разобраться с FPrepared для полей.
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633848
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
20.04.2018 16:18, V.Borzov пишет:
> Однако напоролся на проблему, пытаюсь сейчас локализовать. А выглядит она так

1. Делфи ту никто не знает.
2. Плюсы никем не саппортятся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633866
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,
Об этом выше речь шла.
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633909
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
20.04.2018 16:38, V.Borzov пишет:
> Об этом выше речь шла.

и что?
читай по буквам:

ЗДЕСЬ НЕ ТУТ!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633911
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.Borzov,
а для зачем ты загружаешь датасет в отдельном треде? Все равно же, пока не завершится процесс загрузки, работать не сможешь, в чем профит?
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633919
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.Borzov Убираю длинные читающие транзакции
зачем??? с read read_committed ведь все хорошо.
V.BorzovУдаление Database нужно для возможности заполнения датасета в отдельном потоке.
ну началось...
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633925
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvну началось...
Ещё в самом начале я написал про очень-очень плохой знак. И вот мы видим подтверждение
этого в действии.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633933
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvV.Borzov Убираю длинные читающие транзакции
зачем??? с read read_committed ведь все хорошо.
V.BorzovУдаление Database нужно для возможности заполнения датасета в отдельном потоке.
ну началось...

Как правильный программист должен делать селфи
[spoiler]
YouTube Video
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633939
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvзачем??? с read read_committed ведь все хорошо.

Спасибо, я понял. Но если есть техническая возможность закрыть всё лишнее за собой, то почему бы это не сделать.

КотовасияV.Borzov,
а для зачем ты загружаешь датасет в отдельном треде? Все равно же, пока не завершится процесс загрузки, работать не сможешь, в чем профит?
Гружу отчет, пока отчет грузится, приложение адекватно реагирует на запросы пользователя, вплоть до того, что можно еще пару отчетов открыть и загрузить. В варианте, когда поток отрабатывает с отдельным коннектом, требуется отдельный database. В случае, если возвращаемый в форму датасет является tpFibdataset, ему требуется оставлять открытым и транзакцию, с помощью которой он загрузил данные, и этот датабейс, который создан был в потоке.
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633941
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка,

У меня аж сердце ёкнуло, когда молотком по объективу...
Фотодизайнеры - козлы.
...
Рейтинг: 0 / 0
Можно ли держать читающую трансакцию открытой всё время работы приложения?
    #39633942
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.BorzovГружу отчет, пока отчет грузится, приложение адекватно реагирует на запросы пользователя,
вплоть до того, что можно еще пару отчетов открыть и загрузить.

Для создания таких приложений следует забыть про DB-aware, которое рассчитано
исключительно на мышекликанье поделок класса фишфак и начать-таки программировать. Для
начала можешь посмотреть на MVC паттерн (в котором из хороших идей только инкапсуляция
отображения данных и отрыв его от процесса получения данных, но и то уже хлеб).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 56, страница 1 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли держать читающую трансакцию открытой всё время работы приложения?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]