|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
Здравствуйте, Прошу подсказать: есть ли какие-то противопоказания к subj? Не накапливается ли мусор? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 21:37 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
V.Borzov, http://www.ibase.ru/ibtrans/ http://www.ibase.ru/ibx/ транзакции read read committed начиная с InterBase 6 стартуют типа сразу как committed, поэтому не влияют на "накопление версий". "Накопление мусора" - терминологически некорректно, потому что мусор убирается. А вот удержание активными транзакциями версий от превращения в мусор - это да, плохо. За исключением read read committed. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 22:20 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
Я бы сказал так: в умелых руках это безопасно, но в целом - очень плохой знак типа "тут говнокод". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 22:20 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЯ бы сказал так: в умелых руках это безопасно, но в целом - очень плохой знак типа "тут говнокод". Если все-таки необходимо длительное время отображать результат Select-а на мониторе клиента, как лучше/безопаснее/надежнее сделать? - CommitRetaining - что-то другое? Select выполняется с уровнем изоляции Read Committed. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 08:42 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
sg729Dimitry SibiryakovЯ бы сказал так: в умелых руках это безопасно, но в целом - очень плохой знак типа "тут говнокод". Если все-таки необходимо длительное время отображать результат Select-а на мониторе клиента, как лучше/безопаснее/надежнее сделать? - CommitRetaining - что-то другое? Select выполняется с уровнем изоляции Read Committed. Перестать использовать идиотские компоненты для которых "завершение транзакции== закрытие датасета" Правда не уверен что такие есть. У меня самодельный :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 08:50 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
fraks, такие уже давно есть, только они требует полного фетча резалтсета ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 09:24 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
frakssg729пропущено... Если все-таки необходимо длительное время отображать результат Select-а на мониторе клиента, как лучше/безопаснее/надежнее сделать? - CommitRetaining - что-то другое? Select выполняется с уровнем изоляции Read Committed. Перестать использовать идиотские компоненты для которых "завершение транзакции== закрытие датасета" Правда не уверен что такие есть. У меня самодельный :) Использую FIB+ 7.5 (офиц.купленные). Подскажите не идиотские -) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 09:40 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
sg729Использую FIB+ 7.5 (офиц.купленные). Подскажите не идиотские -)В FIB+ есть режим CachedUpdates. Ещё есть разные memory dataset'ы. И да, собственный dataset лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 10:19 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
dennis-rsg729Использую FIB+ 7.5 (офиц.купленные). Подскажите не идиотские -)В FIB+ есть режим CachedUpdates. Ещё есть разные memory dataset'ы. И да, собственный dataset лучше. Если правильно понимаю раздел "Использование кэшированных изменений" в FIBPlus Developers Guide, CachedUpdates предназначен для кэширования изменений. Разве он влияет на чтение? dennis-rЕщё есть разные memory dataset'ы. Клиентские компы слабые - мало оперативки. Нет ли здесь тупика? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 10:59 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
sg729Если правильно понимаю раздел "Использование кэшированных изменений" в FIBPlus Developers Guide, CachedUpdates предназначен для кэширования изменений. Разве он влияет на чтение?Он позволяет считать данные и вообще отключиться от базы. sg729dennis-rЕщё есть разные memory dataset'ы. Клиентские компы слабые - мало оперативки. Нет ли здесь тупика?Если не выгребать миллионы записей, то никаких проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 11:08 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
sg729Клиентские компы слабые - мало оперативки. Нет ли здесь тупика? Это тупик если, во-первых, плохой разработчик приложения решил отображать весь триллион записей и во-вторых, плохие компоненты этот дикий резалт-сет умеют держать исключительно в ОЗУ. Устрани любую кривизну из этих двух и проблем со слабыми компами не будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 11:39 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
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 ?????? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 13:01 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
sg729Если все-таки необходимо длительное время отображать результат Select-а на мониторе клиента, как лучше/безопаснее/надежнее сделать? я же дал ссылку. Пропиши в параметрах транзакции read read_committed rec_version sg729- CommitRetaining это зло, не надо его использовать. sg729Select выполняется с уровнем изоляции Read Committed. просто read committed недостаточно. См. выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 13:23 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
dennis-r, Dimitry Sibiryakov, kdv Спасибо за помощь! -) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 09:00 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
Всем спасибо. Убираю длинные читающие транзакции. И тут сильно поможет 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 для полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 16:18 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
20.04.2018 16:18, V.Borzov пишет: > Однако напоролся на проблему, пытаюсь сейчас локализовать. А выглядит она так 1. Делфи ту никто не знает. 2. Плюсы никем не саппортятся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 16:25 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
Мимопроходящий, Об этом выше речь шла. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 16:38 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
20.04.2018 16:38, V.Borzov пишет: > Об этом выше речь шла. и что? читай по буквам: ЗДЕСЬ НЕ ТУТ! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 17:31 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
V.Borzov, а для зачем ты загружаешь датасет в отдельном треде? Все равно же, пока не завершится процесс загрузки, работать не сможешь, в чем профит? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 17:34 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
V.Borzov Убираю длинные читающие транзакции зачем??? с read read_committed ведь все хорошо. V.BorzovУдаление Database нужно для возможности заполнения датасета в отдельном потоке. ну началось... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 17:53 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
kdvну началось... Ещё в самом начале я написал про очень-очень плохой знак. И вот мы видим подтверждение этого в действии. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 18:10 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
kdvV.Borzov Убираю длинные читающие транзакции зачем??? с read read_committed ведь все хорошо. V.BorzovУдаление Database нужно для возможности заполнения датасета в отдельном потоке. ну началось... Как правильный программист должен делать селфи [spoiler] ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 18:27 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
kdvзачем??? с read read_committed ведь все хорошо. Спасибо, я понял. Но если есть техническая возможность закрыть всё лишнее за собой, то почему бы это не сделать. КотовасияV.Borzov, а для зачем ты загружаешь датасет в отдельном треде? Все равно же, пока не завершится процесс загрузки, работать не сможешь, в чем профит? Гружу отчет, пока отчет грузится, приложение адекватно реагирует на запросы пользователя, вплоть до того, что можно еще пару отчетов открыть и загрузить. В варианте, когда поток отрабатывает с отдельным коннектом, требуется отдельный database. В случае, если возвращаемый в форму датасет является tpFibdataset, ему требуется оставлять открытым и транзакцию, с помощью которой он загрузил данные, и этот датабейс, который создан был в потоке. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 18:37 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, У меня аж сердце ёкнуло, когда молотком по объективу... Фотодизайнеры - козлы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 18:41 |
|
Можно ли держать читающую трансакцию открытой всё время работы приложения?
|
|||
---|---|---|---|
#18+
V.BorzovГружу отчет, пока отчет грузится, приложение адекватно реагирует на запросы пользователя, вплоть до того, что можно еще пару отчетов открыть и загрузить. Для создания таких приложений следует забыть про DB-aware, которое рассчитано исключительно на мышекликанье поделок класса фишфак и начать-таки программировать. Для начала можешь посмотреть на MVC паттерн (в котором из хороших идей только инкапсуляция отображения данных и отрыв его от процесса получения данных, но и то уже хлеб). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 18:47 |
|
|
start [/forum/topic.php?fid=40&msg=39633909&tid=1561144]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 183ms |
0 / 0 |