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

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

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

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

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

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

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

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

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

Это тупик если, во-первых, плохой разработчик приложения решил отображать весь триллион
записей и во-вторых, плохие компоненты этот дикий резалт-сет умеют держать исключительно в
ОЗУ. Устрани любую кривизну из этих двух и проблем со слабыми компами не будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.04.2018, 13:01
    #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
19.04.2018, 13:23
    #39633145
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли держать читающую трансакцию открытой всё время работы приложения?
sg729Если все-таки необходимо длительное время отображать результат Select-а на мониторе клиента, как лучше/безопаснее/надежнее сделать?
я же дал ссылку. Пропиши в параметрах транзакции
read
read_committed
rec_version
sg729- CommitRetaining
это зло, не надо его использовать.
sg729Select выполняется с уровнем изоляции Read Committed.
просто read committed недостаточно. См. выше.
...
Рейтинг: 0 / 0
20.04.2018, 09:00
    #39633518
sg729
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли держать читающую трансакцию открытой всё время работы приложения?
dennis-r, Dimitry Sibiryakov, kdv
Спасибо за помощь! -)
...
Рейтинг: 0 / 0
20.04.2018, 16:18
    #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
20.04.2018, 16:25
    #39633848
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли держать читающую трансакцию открытой всё время работы приложения?
20.04.2018 16:18, V.Borzov пишет:
> Однако напоролся на проблему, пытаюсь сейчас локализовать. А выглядит она так

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

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

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

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

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

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

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

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


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