|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Товарищ младший сержант чтобы мои датасеты вели внешне вели себя примерно так же, как и те, что я изучал когда-то (например, в связке Delphi BDE + Paradox). это ты зря Товарищ младший сержантСо всем остальным я буду разбираться потом (а может, и не буду разбираться), когда система начнет тормозить при старте, файл базы начнет разбухать и т.д. а что начало тормозить или разбухать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 17:34 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Симонов ДенисТоварищ младший сержант чтобы мои датасеты вели внешне вели себя примерно так же, как и те, что я изучал когда-то (например, в связке Delphi BDE + Paradox). это ты зря Товарищ младший сержантСо всем остальным я буду разбираться потом (а может, и не буду разбираться), когда система начнет тормозить при старте, файл базы начнет разбухать и т.д. а что начало тормозить или разбухать? У меня лично нет. Вернее, к тому моменту, когда начало, я уже знал, отчего и что делать. ... Я так, о мировой гармонии побухтеть вылез. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 17:36 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Симонов Денисдлинные транзакции RO RC не являются большой проблемой.У ТС не RC RO, т.к. RC RO не может быть OAT ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 17:36 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Симонов ДенисЯ сомневаюсь что в этом случае длинные RO RC будут такими же безобидными.В новой схеме снапшот будет создаваться для запроса\курсора, а не для RC тр-ции. Т.е. RC тр-ция (любая RO\RW) сама по себе по-прежнему никак не влияет на OAT, а вот незакрытый курсор - очень даже. Для snapshot (concurrency) тр-ций ничего не изменится ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 17:39 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВсе датасеты нынче - кэширующие. Другие фактически вымерли. Проблема в том, что идея делать background fetch шокирует даже Влада, а кроме самого датасета никто не в состоянии определить момент когда result set дофетчен и можно переходить в режим briefcase, закрывая и курсор и транзакцию. Я уже не говорю о том, что все поголовно наследники FIBC унаследовали его неспособность в этот режим переходить. ну background fetch вовсе не обязателен. Пользователь может и подождать, а заодно и разработчики научатся не открывать в гридах по миллиону записей. Когда я разбирался с FireDac там вполне можно было сделать FetchAll завершить транзакцию и перейти в режим briefcase. Причём это делалось довольно прозрачно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 17:40 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Симонов Денисне проще ли это делать в кэширующие датасеты и завершать транзакцию? Я как-то имел на эту тему разговор с Владом. И он сказал, что для девелоперов умолчательным был бы лучше автокоммит. Если уж транзакциями управлять не хотят (или не умеют), так пусть за них это делает сервер. Собственно, не имею ничего против. Только вот исторически FreeIBComponents не делали fetchall при закрытии транзакции, а тупо убивали (а не обрубали) кэш. Зачем, почему - только Грегори Диц сможет ответить. А после него - все копировали это поведение (точно так же как бездумно копировали умолчательный no_rec_version в драйверах). С другой стороны, хорошо стартануть транзакцию, выполнить запрос, и потихоньку фетчить. Но если там N миллионов записей в перспективе, то FetchAll при Commit, ясное дело, вызовет разрыв шаблонов (мол, опять Firebird виноват). А если обрезать буфер по коммиту, то непонятно, что с ним делать если вдруг юзер решит ехать дальше, чем считано с сервера. MS как-то пытается приучать, что либо FetchAll, либо никак (например, в dbExpress нет датасетов, зато есть абстрактный ClientDataSet). Но наследие прошлого висит на ноге тяжелой гирей. Впрочем, выполнять запросы с клиента без старта транзакции сервер вполне может научиться. А там и до изменения поведения компонент недалеко. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 17:41 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovПроблема в том, что идея делать background fetch шокирует даже ВладаОпять звон... сетевой сервер делает фетч в фоне, но фетчит не весь поток, а только пока не заполнит пакет данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 17:42 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
[quot hvlad Опять звон... сетевой сервер делает фетч в фоне, но фетчит не весь поток, а только пока не заполнит пакет данных. [/quot] Не надо видеть слово "сервер" там, где его нет. И слово "клиент" читать как "клиентская библиотека" - тоже не надо. Background fetch это задача приложения (для ленивых - библиотеки компонент). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 17:46 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
hvladУ ТС не RC RO, т.к. RC RO не может быть OAT Так речь уже не о ТС. Если бы Dimitry Sibiryakov не влез с осуждением концепции открытия одной длинной транзакций RO RC, то об этом никто бы и не заговорил. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 17:47 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Товарищ младший сержантсуществующее облако сведений о работе с FireBird провоцирует новичка начать работу не совсем правильно. поясните, пожалуйста, ход неправильной мысли. Т.е. базовые сведения, и какие неправильные действия из них выводятся. Насколько я в курсе, все неправильные выводы делаются либо на отсутствии базовых сведений, либо на их неверном понимании/прочтении. Типа (все утверждения - либо сомнительные, либо неверные) - надо делать backup/restore регулярно - чтобы выключить сборку мусора, надо сделать gfix -housekeeping 0 - мусор попадает в бэкап - версии возникают при чтении данных - если мы стартуем читающую транзакцию (RW, которая ничего не пишет), то версии не накапливаются и т.д. У новичка, к сожалению, редко бывает задача разобраться, как это работает. Он думает что нечто работает "вот так", и пока ему по лбу не прилетит, он разбираться не начнет. Так что, не надо перекладывать с одной головы на другую. p.s. еще один показательный пример - с "лишними" опциями бэкапа-рестора. Начинаешь спрашивать, нафига? - "так было до меня". Или - "я прочитал где-то, что надо так". Но где прочитал, и почему "надо так" - ответа нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 17:58 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Симонов ДенисТак речь уже не о ТС. как раз о ТС. :-) он показал, что есть OAT. и сказал, что это "читающая транзакция, с которой не должно быть проблем". Из чего выходит, что у него вовсе не RO RC. После чего меня начали обвинять, что я провоцирую на "длинные читающие", убеждая людей использовать для этого только RO RC, чего они почему-то не делают, следуя только рекомендации "длинных читающих". И понеслась... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 18:02 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНе надо видеть слово "сервер" там, где его нетДвижку пофигу кто фетчит записи ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 18:09 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Hello, Kdv! You wrote on 13 декабря 2016 г. 18:04:19: Kdv> И понеслась...я сейчас тоже наеду ;) ЛЮБАЯ долгоиграющая транзакция - bad design. не только в IB/FB - везде. поясню свой опиньён: даже если (применительно к IB/FB) это RC RO RV, такая транзакция не даст консистентного чтения в реальных боевых условиях. в системах чуть сложнее "палки-верёвки" нахер нужен такой отчёт (грубо говоря). нужен срез - старт снапшота, полный фетч, коммит. всё. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 18:11 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
kdvпоясните, пожалуйста, ход неправильной мысли. Т.е. базовые сведения, и какие неправильные действия из них выводятся. Базовые сведения: твоя статья об управлении транзакциями. Из неё новичок выводит, что длинная RORC транзакция - это хороший, правильный способ взаимодействия с базой, а не (как следовало бы понять) workaround, позволяющий малой кровью обойти архитектурные косяки VCL и FIBC-производных компонент в приложении с GUI на DB-aware control-ах. В результате (как это сделал ТС) такую транзакцию лепят даже в ботов и фоновые сервисы, где она совершенно ни к чему. Это даже если бы ТС таки выбрал правильные параметры транзакции... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 18:21 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
МимопроходящийЛЮБАЯ долгоиграющая транзакция - bad design. не только в IB/FB - везде. дык. Потому RO RC - это и есть "якобы транзакция". Сделали что могли на текущем движке. Мимопроходящийтакая транзакция не даст консистентного чтения в реальных боевых условиях. эээ. При чем тут снапшот? Ну даже если снапшот - раньше он один и был в InterBase, потом "враги" придумали RC. Но длинные транзакции-то вылезли в компонентах. Либо потеря кэша датасета после коммита, либо длинный TIBDatabase.DefaultTransaction, либо идиотское поведение компонент с автокомитом, которые тупо стартуют "дефолтную" транзакцию сразу после выполнения запроса и коммита. Нахрена они это делают НЕ перед выполнением запроса, я не знаю. В FIBPlus вообще умудрились для UpdateSQL/InsertSQL/DeleteSQL сделать длинную RW транзакцию с commitRetaining. Типа, апофеоз. Вот потому и сделали RO RC, чтобы хоть как-то уменьшить вред от длинных транзакций. И для отчетов ее никто не предлагал. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 18:26 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovИз неё новичок выводит, что длинная RORC транзакция - это хороший, правильный способ взаимодействия с базой тут согласен, я вообще собирался несколько статей с тематикой транзакций, версий и мусора переделать (местами). Сам читаю, и вижу, что кривовато написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 18:27 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Hello, Kdv! You wrote on 13 декабря 2016 г. 18:28:55: Kdv> Вот потому и сделали RO RC, чтобы хоть как-то уменьшить вред от длинных транзакций. хотели как луче, а вышло как всегда. (с) В.С.Черномырдин Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 18:29 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
kdv...В FIBPlus вообще умудрились для UpdateSQL/InsertSQL/DeleteSQL сделать длинную RW транзакцию с commitRetaining... ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 18:43 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Товарищ младший сержант? ну здрасьте. По крайней мере было такое, по умолчанию. у pFIBDataSet две транзакции, чтения и записи. И на запись было по дефолту CommitRetaining. Я уж и не помню, что мне ответили, когда я спросил "а что это за ужас". ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 20:09 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
kdvТоварищ младший сержант? ну здрасьте. По крайней мере было такое, по умолчанию. у pFIBDataSet две транзакции, чтения и записи. И на запись было по дефолту CommitRetaining. Я уж и не помню, что мне ответили, когда я спросил "а что это за ужас". Будем считать, что ты забыл. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 20:28 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Товарищ младший сержантkdvпропущено... ну здрасьте. По крайней мере было такое, по умолчанию. у pFIBDataSet две транзакции, чтения и записи. И на запись было по дефолту CommitRetaining. Я уж и не помню, что мне ответили, когда я спросил "а что это за ужас". Будем считать, что ты забыл. CommitRetainig для датасета (TpFIBDataSet) в FibPlus выполняется: - когда включен режим автокоммита и ( - когда для датасета транзакция одна и та же для чтения и для изменений - либо - - когда для этой единственной транзакции TimeoutAction = TACommitRetaining ) ... Для TpFIBQuery выполняется автоматический CommitRetainig, когда: - когда включен режим автокоммита - когда для его транзакции TimeoutAction = TACommitRetaining ... ... Для TpFIBDataBase похоже условия, при ApplyUpdates и "перед дисконнектом". ... ... Считать такой режим "умолчанием" как бы не совсем справедливо, не? Чтобы он заработал, нужно все же произвести кое-какие движения. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 20:48 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Товарищ младший сержантCommitRetainig для датасета (TpFIBDataSet) в FibPlus выполняется: - когда включен режим автокоммита ну и? это хорошо, что-ли? Товарищ младший сержантСчитать такой режим "умолчанием" как бы не совсем справедливо, не? в ФИБплюсе многие умолчания время от времени менялись. Например pFIBDatabase.SynchronizeTime по умолчанию True. Че, здорово, когда вдруг в приложении время с сервера устанавливается? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 21:35 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
kdvТоварищ младший сержантCommitRetainig для датасета (TpFIBDataSet) в FibPlus выполняется: - когда включен режим автокоммита ну и? это хорошо, что-ли? Товарищ младший сержантСчитать такой режим "умолчанием" как бы не совсем справедливо, не? в ФИБплюсе многие умолчания время от времени менялись. Например pFIBDatabase.SynchronizeTime по умолчанию True. Че, здорово, когда вдруг в приложении время с сервера устанавливается? Ну при чем тут теперь SynchronizeTime. Ты практически не знаешь FIB+, но периодически наезжаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 21:44 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
Товарищ младший сержантНу при чем тут теперь SynchronizeTime. Ты практически не знаешь FIB+, но периодически наезжаешь. при том, что это "неожиданное умолчательное поведение". А наезжаю я потому, что кроме этого есть и другие внезапно неожиданные поведения, умолчательные или нет. Например, почему автокоммит должен завершаться по commitretaining, если уже фиг знает сколько времени как этот режим не рекомендуется? p.s. FIBPlus я использую, но копаться в нем приходится только тогда, когда что-нибудь работает не так, как ожидалось. Или когда у компонент "слишком много ума". Меня не особо интересуют фишки FIBPlus, которые только запутывают или скрывают представление разработчика о том, как работает его программа. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 22:37 |
|
Firebird "вешает" диск на 100% при записи в Win10
|
|||
---|---|---|---|
#18+
kdv... Например, почему автокоммит должен завершаться по commitretaining, если уже фиг знает сколько времени как этот режим не рекомендуется? ... Я фигею с вас. Выше описал условия, когда CommitRetaining происходит, что тут непонятного? Как еще должно быть? Ну, скажи, что будет с открытыми датасетами, когда транзакция одна, и эта транзакция завершится по Commit. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2016, 23:22 |
|
|
start [/forum/topic.php?fid=40&msg=39366029&tid=1561802]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 143ms |
0 / 0 |