powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ANN Выпущен Firebird 4!
25 сообщений из 371, страница 5 из 15
ANN Выпущен Firebird 4!
    #40118144
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockТак, одну неразрешимую проблему вроде решили :), осталось научиться делать НЕ_ReadConsistency транзакции при настройках в конфе по умолчанию :)

нет уж подожди. Я твой тест повторил и да тоже не заметил что промежуточная сборка мусора работает.
Хотя судя по описанию она должна была сработать. Поэтому хочется прояснить ситуацию у Влада. Видимо я что-то не понимаю

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
  xAtt := IBDatabase1.Attachment;
  xTra_1 := xAtt.StartTransaction([isc_tpb_write, isc_tpb_read_committed],taCommit);

  xInsert := xAtt.Prepare(xTra_1, 'insert into t(id, name) values(?, ?)');
  xDelete := xAtt.Prepare(xTra_1, 'delete from t');
  //xTra_1.Commit;

  for i:=0 to 100000 do
  begin
    xTra_2 := xAtt.StartTransaction([isc_tpb_write, isc_tpb_read_committed],taCommit);
    xDelete.Execute(xTra_2);
    xTra_2.Commit;

    xTra_2 := xAtt.StartTransaction([isc_tpb_write, isc_tpb_read_committed],taCommit);
    xInsert.SQLParams[0].AsInteger := i;
    xInsert.SQLParams[1].AsInteger  := i;
    xInsert.Execute(xTra_2);
    xTra_2.Commit;

    if (i mod 100 = 0) then
    begin
      Memo1.Lines.add(i.ToString);
      Application.ProcessMessages;
    end;


  end;

  xTra_1.Commit;  



пока приложение работало запускал получение статистики по таблицы и длина цепочки версий всё время увеличивалась
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118146
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисдлина цепочки версий всё время увеличивалась

Уверен? Приведённый код не создаёт цепочку версий. Он создаёт кучу записей с
ровно двумя версиями у каждой, которые никто не собирает в результате отсутствия
чтения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118147
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ишь, какие круги по воде-то пошли... Я-то думал - все давно всё знают и просто похихикают над старцем, понимающем по отдельности слова read_commited, concurrency и consistency в смысле уровней изоляции и растерянно уставившимся, как баран на новые ворота, на их сочетание, пытаясь представить себе плод греховной связи ужа с ежом.

Тынц почитал, не могу сказать что всё здорово понял. Как оказалось, я, к стыду своему, умудрился ещё и забыть английский, то есть, хоть большинство слов и знакомые, утрачена чуйка концепта построения фраз и смысл улавливается с трудом. Посему от комментариев насчёт что такое хорошо и что такое плохо пока воздержусь. Вообще-то наша любимая RC RO, которую бабушка Аня научила стартовать в состоянии commited, от рождения попахивала хаком. А с хаками надо держать ухо востро и ожидать неожиданных сюрпризов, так что какие-то телодвижения к более стройной концепции были в общем-то ожидаемы. Но по прочтении случившейся беседы у меня возникло устойчивое убеждение, что название Firebird 4 тут не годится, надо придумывать какое-то совсем другое птичье имя. Во избежание иллюзий. Потому что вот с этим

ъъъъъ

Это же полный п....ц, применительно, например к старым приложениям на дельфи с ibx/fib+, разве нет?


YuRock

В общем, ... , переход на 4-ку невозможен (только для совершенно новых проектов, коих в моей жизни вряд ли предвидится).


полностью согласен.

Тут надо сначала перевести своё собственное сознание на другие рельсы, разбить вдребезги стереотип, складывавшийся десятилетиями, разработать собственную архитектурную концепцию, довести её до стереотипа и потом перетрахивать всё что нажито непосильным трудом. То есть, фактически сделать его заново с нуля. Ткнулся вот сейчас на рабочем столе в иконку (можете начинать смеяться) FARа, наступил на каталог с текстами пятилетней несвежести (с моего ухода на пенсию) пятка основных приложений, трёхзвенки отдельно проживают. 3700 файлов и 100 мегабайт. От этих приложений у Дельфового линкера крышу срывает, собираются только из командной строки и обязательно предварительно перекрестясь. И вот это всё перетрахать? Концептуально-архитектурно? Ну-ну.

Мимопроходящий
Fr0sT-Brutal
пропущено...

У вас можно сколько угодно, а компоненты не умеют сохранять датасеты при закрытой транзакции.
это смотря какие компоненты.
один мягко говоря, организм, захреначил такое поведение в изначальный FIB, а все последующие компонентостроители посчитали что раз сам отЭц (Deatz) сделал именно так, то это есть божественный канон, и менять оное - идти супротив божественного.

зы: у нас это настраивается.


Брателло, не плюй в колодец Гришаня когда это родил-то? Когда скорости в LAN меряли в Кбайт/сек, в модемах в Кбит/сек, а объёмы ОЗУ в сотнях Кбайт. И отошёл в сторонку. На эту концепцию датасета чуть только не молились после Borland Pascal и всяких Record Manager-ов, когда каждую строку приходилось собирать десятком реквестов к разным таблицам. А последователям надо было бабло зарабатывать, и сегодня, а не в светлом будущем. С развитием железа потребовалось и развитие концепций, выразившееся, не полностью уверен, что к добру, в TClientDataset. Мой первый опыт с ним, где-то на границе емелиумов, на действительно дальней связи - комплект справок о состоянии запасов-заказов-резервов-ценах - в каком-нибудь Челябинске-Иркутске из Питера грузился 40 минут. И это я ещё не центровые запросы туда вставил, а засасывал справочники и собственно данные по отдельности и джойнил на клиенте, локейтами. На данные уходило минуты полторы, остальное - строковые литералы. Пришлось их таки перевести на репликацию. Да и сейчас - в запросах для клиента директора фабрики козлов жёстко зашиты ограничения по дате, на полгода вроде, чтоб старые данные не тащить десятками минут и у ноута его из щелей байты не посыпались :)
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118148
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

стоп. DELETE делает чтение, там же WHERE нет. Он должен был всё прочитать
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118149
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Это не мой тест, а ъъъъъ.

А по поводу Consistency - блин, ну ничего ж сложного нет добавить константу no_read_consistency, по аналогии с recversion/norecversion.

У меня тысячи установок FB. Менять/контролировать конфы везде - это практически нереально.
Гораздо проще в одном месте в своей программе, где я транзакции создаю по типам, которые мне нужны, необходимые мне константы жёстко прописать и не зависеть от конфигов.
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118150
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениспо идее delete и должен был собрать
как это? при delete остается 1 старая версия и 1 delete stub. Кто их будет убирать?
При update все гораздо проще, он читает и убирает. А delete конкретной записи - это финальная операция. Второй раз delete не сделать.
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118153
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисDELETE делает чтение, там же WHERE нет.

Теоретически да. Возможно, обрамляющая транзакция Read Committed портит всю
малину. Поменяй на Snapshot.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118155
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Симонов Дениспо идее delete и должен был собрать

как это? при delete остается 1 старая версия и 1 delete stub. Кто их будет убирать?
При update все гораздо проще, он читает и убирает. А delete конкретной записи - это финальная операция. Второй раз delete не сделать.

а ты повнимательней посмотри. Там DELETE перевыполняется 100500 раз. Да первый удалит предыдущую версию, но когда следующий запустится он уже прочитает delete stub от предыдущего в этот момент по идее должна сработать сборка мусора
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118156
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
не заметил что промежуточная сборка мусора работает
В ситуации insert + delete нет промежуточных версий и цепочки версий и так не могут быть длиннее 2.

В твоём примере delete не собирает мусор, т.к. tra1 удерживает OST и блокирует традиционную сборку мусора, а промежуточная тут не применима.
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118157
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

хах. Спасибо, вот теперь понял в чём дело.
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118158
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка,

не надо паники :) Всё может работать как и раньше.

Read Consistency установлен в 1 по умолчанию для того, чтобы новые юзеры сразу работали правильно.
Предполагается, что старые юзеры в состоянии проверить свои приложения и изменить пар-р в конфиге.
Мы многого от них ждём ?

PS исходный патч Николая не имел этой возможности и мне пришлось с ним долго спорить, дабы это добавить.
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118161
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
Предполагается, что старые юзеры в состоянии проверить свои приложения и изменить пар-р в конфиге.
Мы многого от них ждём ?
При чем тут проверить приложения. Приложения-то изменить можно было бы, если б в одном месте (а именно - добавить параметр в транзакцию).
А вот конфиги править везде - да, многого ждете
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118163
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
А по поводу Consistency - блин, ну ничего ж сложного нет добавить константу no_read_consistency
Это маразм.

YuRock
У меня тысячи установок FB. Менять/контролировать конфы везде - это практически нереально.
Гораздо проще в одном месте в своей программе, где я транзакции создаю по типам, которые мне нужны, необходимые мне константы жёстко прописать и не зависеть от конфигов.
Таки научись читать RN - с isc_dpb_config ты можешь задать и ReadConsistency = 0 и много чего другого для своих legacy приложений.

Или можно при запуске программы стартовать RC RV тр-цию и проверить её реальный тип. Не совпало - ругайся и проси изменить конфиг.

Вариантов много. Сидеть на старье и ворчать на всё новое - тоже вариант, но других не надо заставлять.
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118164
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
При чем тут проверить приложения.

притом, чтобы панику не поднимать в отсутствие объективных причин
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118166
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

лично моё мнение. Конфигурировать Firebird надо всегда. Параметры по умолчанию практически никогда не подходят.
Только не говори, что ты размер страничного кеша дефолтным оставляешь. Это только для совсем мизерных баз так можно. Но для них весь плач про сборку мусора не актуален
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118169
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисно когда следующий запустится он уже прочитает delete stub от предыдущего
это если кто-то вздумает повторно удалять одни и те же записи. Да, индекс видит все версии, по индексу прочитается, и всё будет ок. А вот если сегодня мы удаляем только за сегодня, а завтра - только за завтра? Никаких повторных удалений или попаданий в ключи не будет. И весь этот мусор так и будет валяться, до тех пор пока sweep не запустится (автоматом или вручную).
Опять же, чтобы быть на 100% уверенным, надо сделать тест :-) Но правильный тест :-)
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118170
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
Старый плюшевый мишка,

не надо паники :) Всё может работать как и раньше.

Read Consistency установлен в 1 по умолчанию для того, чтобы новые юзеры сразу работали правильно.
Предполагается, что старые юзеры в состоянии проверить свои приложения и изменить пар-р в конфиге.
Мы многого от них ждём ?

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


Ты маладэц, слюшай! Я эту портянку начал набирать до постов про конфиг, ближе к концу электрик ток украл (у нас в подъезде счётчики меняют), пришлось с квадратным матом колотить второй раз, естественно, новое не читая. Единственно что смущает - такие опции в конфиге рано или поздно становятся deprecated. Меня, впрочем, это колыхать уже не должно, честно говоря, даже уже не колышет, я как Верещагин, за державу :)
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118171
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
с isc_dpb_config ты можешь задать и ReadConsistency = 0
И на тройке не будет ругаться?
Ну тогда ок.
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118173
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

да я то разобрался в чём дело. Просто цепочка версий всегда равна 2 в данном случае промежуточную сборку мусора не возможно сделать.

Собственно говоря сама идея грохать записи и тут же их добавлять реального смысла не имеет. Для таких случаев есть GTT
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118175
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
YuRock,

лично моё мнение. Конфигурировать Firebird надо всегда. Параметры по умолчанию практически никогда не подходят.
Только не говори, что ты размер страничного кеша дефолтным оставляешь. Это только для совсем мизерных баз так можно. Но для них весь плач про сборку мусора не актуален

99% моих баз - мизерные. Их таких несколько тысяч, все кроме центральных, которых только десятки. И да, для мизерных конфиги - дефолтные.
Но вопрос сборки мусора для них - очень актуален. Любая база, даже мизерная, стать колом вполне способна, и обязательно всегда делает это, если оставлять длинную пишущую транзакцию.
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118177
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЛюбая база, даже мизерная, стать колом вполне способна, и обязательно всегда
делает это, если оставлять длинную пишущую транзакцию.

Тут необходимо-таки уточнить, что способна она встать колом только с очень и
очень кривым дизайном БД и ещё более кривым приложением. Во избежание неверных
толкований случайно сюда залетевшими из гугля.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118178
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
YuRockЛюбая база, даже мизерная, стать колом вполне способна, и обязательно всегда
делает это, если оставлять длинную пишущую транзакцию.

Тут необходимо-таки уточнить, что способна она встать колом только с очень и
очень кривым дизайном БД и ещё более кривым приложением. Во избежание неверных
толкований случайно сюда залетевшими из гугля.Вполне достаточно просто висящей пишущей транзакции.
Ну, кроме довольно редких случаев, когда не бывает DELETE/UPDATE и/или ROLLBACK.
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118186
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockВполне достаточно просто висящей пишущей транзакции.

Нет, не достаточно.

Постулат дизайна номер 1: База данных предназначена для длительного хранения
редко меняющихся данных. Для краткосрочного хранения быстро меняющихся данных
применяются совсем другие средства.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118189
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

YuRockВполне достаточно просто висящей пишущей транзакции.

Нет, не достаточно.

Постулат дизайна номер 1: База данных предназначена для длительного хранения
редко меняющихся данных. Для краткосрочного хранения быстро меняющихся данных
применяются совсем другие средства.


У тебя в родословной случаем греческой ветки нет? Был там у них один мужик, вроде Прокрустом звали ;)
...
Рейтинг: 0 / 0
ANN Выпущен Firebird 4!
    #40118196
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
YuRockВполне достаточно просто висящей пишущей транзакции.

Нет, не достаточно.

Постулат дизайна номер 1: База данных предназначена для длительного хранения
редко меняющихся данных. Для краткосрочного хранения быстро меняющихся данных
применяются совсем другие средства.Quia tuum est regnum, et potestas, et gloria in saecula.
Amen.
...
Рейтинг: 0 / 0
25 сообщений из 371, страница 5 из 15
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ANN Выпущен Firebird 4!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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