powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ускорение работы растущей базы данных Firebird через приложение на Delphi
25 сообщений из 243, страница 8 из 10
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117865
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
ъъъъъ
пропущено...


Так. Заменил я коммит на роллбэк - база всё равно пухнет. После роллбэка.
Слабо верится (точнее, совсем не верится), что версии сохраняются при commit/rollback.
Скорее, у тебя ForcedWrites отключено.
А то, что версии остаются после rollback - это правильно.

тестировал с fb 2.0 и 4.0.

fb 2.0
По commint или rollback, в базу пишется весь накопившийся мусор. Пофиг на параллельные транзакции.
fb 4.0
Аналогично, но мусор в базу пишется не только по commint или rollback, а постепенно, в процессе. Надо полагать, дабы избежать переполнения памяти в длинных и активных транзакциях. И тоже пофиг на параллельные транзакции.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117866
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъЭто как понимать?

Это надо понимать так, что не надо смотреть на размер файла в проводнике.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117867
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
ъъъъъЭто как понимать?

Это надо понимать так, что не надо смотреть на размер файла в проводнике.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TForm1.ShowDBSize;
var
  info: TWin32FileAttributeData;
begin
  if not GetFileAttributesEx(PChar(fDBName), GetFileExInfoStandard, @info) then
    lblDBSize.Caption := '?'
  else
    lblDBSize.Caption := IntToStr(Int64(info.nFileSizeLow)
      or Int64(info.nFileSizeHigh shl 32));

end;
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117869
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
...
А вот интересно.
Сделал я тестовое приложение, которое в цикле
Код: pascal
1.
2.
3.
4.
старт транзакции
  пишет в табличку
  удаляет
коммит



- ну и параллельно запускаю RO или RW транзакции и наблюдаю, что размер базы меняется (RW параллельная транзакция) или нет (RO параллельная транзакция)...

"размер базы меняется (RW параллельная транзакция) или нет (RO параллельная транзакция)" - это в FB 2.0.
...
А в fb 4.0 база пухнет при любых RC транзакциях, хоть RO, хоть RW.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117871
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
...
А в fb 4.0 база пухнет при любых RC транзакциях, хоть RO, хоть RW.

Офигеть, сколько нового.
В FB 4.0 RC транзакции по умолчанию стартуют с доп. опцией опцией "Read Consistency".
Если на сервере, в firebird.conf установить ReadConsistency в 0, то параллельные RC RO транзакции уже не будут заставлять "пухнуть" базу.

kdv, имхо, твои статья требуют серьёзного дополнения.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117874
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
YuRock,

у тебя фибы установлены? Могу крошечное тестовое приложение выложить, сам увидишь.
Нет
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117876
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
YuRock,

у тебя фибы установлены? Могу крошечное тестовое приложение выложить, сам увидишь.

В общем, кому интересно - вот крошечное приложение. Требует наличие FIB+, не обязательно инсталлированные, лишь бы путь к файликам был в "library path" Delphi.
На компе должен быть установлен и запущен сервер FB, раскоммитить и отредактирвоать нужные константы, пределяющие №порта и путь к клиентской библиотеке:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
const

// fb 2.0
//  cFBClientDLL = 'C:\FBServer\bin\fbclient.dll';
//  cFBPort = 3100;

// fb 4.0
  cFBClientDLL = 'D:\Tools\FB\Servers\Firebird-4.0.1.2631-0_Win32\fbclient.dll';
  cFBPort = 3111;
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117879
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
ъъъъъ
YuRock,

у тебя фибы установлены? Могу крошечное тестовое приложение выложить, сам увидишь.

В общем, кому интересно - вот крошечное приложение. Требует наличие FIB+, не обязательно инсталлированные, лишь бы путь к файликам был в "library path" Delphi.
На компе должен быть установлен и запущен сервер FB, раскоммитить и отредактирвоать нужные константы, пределяющие №порта и путь к клиентской библиотеке:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
const

// fb 2.0
//  cFBClientDLL = 'C:\FBServer\bin\fbclient.dll';
//  cFBPort = 3100;

// fb 4.0
  cFBClientDLL = 'D:\Tools\FB\Servers\Firebird-4.0.1.2631-0_Win32\fbclient.dll';
  cFBPort = 3111;




https://www.sql.ru/forum/actualfile.aspx?id=22405985] Приложенный файл (tstGarb.7z - 2Kb)

Запускается, [пере]создается файл базы, табличка tbl (id integer, name varchar(100)), и в бесконечном цикле выполняется скрипт, который можно поменять.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117880
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
ъъъъъ
YuRock,

у тебя фибы установлены? Могу крошечное тестовое приложение выложить, сам увидишь.
Нет

Ну, ладно.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117881
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

Погоди, ты в одной и той же транзакции запись меняешь несколько раз? Вполне нормально ожидать при этом, что будет одна версия изменяться. Нет смысла их копить, их всё равно
- никто не увидит
- никто не перезапишет
При завершении транзакции почему размер меняется - другой уже вопрос. Что-тот там пишется еще может.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117882
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
ъъъъъ,

Погоди, ты в одной и той же транзакции запись меняешь несколько раз? Вполне нормально ожидать при этом, что будет одна версия изменяться. Нет смысла их копить, их всё равно
- никто не увидит
- никто не перезапишет
При завершении транзакции почему размер меняется - другой уже вопрос. Что-тот там пишется еще может.

Не понял вопроса.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117887
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
YuRock
ъъъъъ,

Погоди, ты в одной и той же транзакции запись меняешь несколько раз? Вполне нормально ожидать при этом, что будет одна версия изменяться. Нет смысла их копить, их всё равно
- никто не увидит
- никто не перезапишет
При завершении транзакции почему размер меняется - другой уже вопрос. Что-тот там пишется еще может.

Не понял вопроса.
Увидел. Ты пишешь и удаляешь в одной транзакции.
Вполне возможно, сервер настолько умный, что всё равно обходится одной версией, просто изменяет ее.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117896
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как интересно...
Есть табличка,
Код: sql
1.
2.
3.
4.
CREATE TABLE TBL (
    ID    INTEGER NOT NULL,
    NAME  VARCHAR(100)
);



Сперва выполняем

Код: sql
1.
2.
3.
4.
insert into tbl values (1, 'Колбаса') ;
insert into tbl values (2, 'Сосиски') ;
insert into tbl values (3, 'Хлеб') ;
... много-много раз insert


а потом, в цикле

Код: sql
1.
2.
3.
start transaction;
update tbl set id = 123,  name = 'Молоко';
commit;


Так вот, в fb 2.0, при наличии параллельной RW транзакции, база бешено пухнет.

А в fb 4.0 - не пухнет. Хотя, при включении параллельной RW транзакции, скорость апдейта все равно существенно уменьшается.

Чудеса в решете.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117897
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, сколько нам открытий чудных готовит Release Notes нечтения дух...

Ты думаешь, выпуск двух минорных версий и двух мажорных - просто изменение циферки?..
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117900
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Протеститровал и с FB 2.5: апдейты, при включении параллельной RW транзакции, также заставляют "пухнуть" базу.

Наверное, нужно таки переползать на FB 4.0.
Если не боитесь Read Consistency, конечно. :)
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117901
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Ты думаешь, выпуск двух минорных версий и двух мажорных - просто изменение циферки?..

Ага.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117903
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
О, сколько нам открытий чудных готовит Release Notes нечтения дух...

Ты думаешь, выпуск двух минорных версий и двух мажорных - просто изменение циферки?..

"Я читаю, но не понимаю" - (с).

В версии 4.0 столько уже накрутили, что не знаешь, откуда подвоха ждать. Пока сам не пощупаешь, не осознаЁшь.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117907
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Протеститровал и с FB 2.5: апдейты, при включении параллельной RW транзакции, также заставляют "пухнуть" базу.

Наверное, нужно таки переползать на FB 4.0.
Если не боитесь Read Consistency, конечно. :)

Read Consistency - это круть. То, чего давно не хватало.

А подвох там - это таймзоны, отключить которые легко и для всех я пока так и не понял, как. Видимо, так и останется никак.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117913
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое простое - параметром конфига. Чуть сложнее SET BIND в триггере на коннект.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117916
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
ъъъъъ
Протеститровал и с FB 2.5: апдейты, при включении параллельной RW транзакции, также заставляют "пухнуть" базу.

Наверное, нужно таки переползать на FB 4.0.
Если не боитесь Read Consistency, конечно. :)

Read Consistency - это круть. То, чего давно не хватало.
...

Тебя не смущает, что теперь, с "Read Consistency", все RC транзакции станут причиной создания множества версий? Там, где у тебя в древних приложениях жила "безобидная" длинная RC RO транзакция, базы начнут "пухнуть".
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117925
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
YuRock
пропущено...

Read Consistency - это круть. То, чего давно не хватало.
...

Тебя не смущает, что теперь, с "Read Consistency", все RC транзакции станут причиной создания множества версий? Там, где у тебя в древних приложениях жила "безобидная" длинная RC RO транзакция, базы начнут "пухнуть".
Не станут. Они будут держать только те версии, которые изменили.
В этом - главная прелесть.
Прочти уж до конца, что читать начал.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117926
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
Они будут держать только те версии, которые изменили.

Что могут изменить RO транзакции?
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117928
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Самое простое - параметром конфига. Чуть сложнее SET BIND в триггере на коннект.
Если речь про DataTypeCompatibility = 3.0 - то это будет та же тройка, смысла перехода на такое нет.
Что касается set bind of TIME ZONE, то это может работать не всегда корректно, на клиент может приходить не то, что было на сервере. А для меня это недопустимо.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117929
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
YuRock
Они будут держать только те версии, которые изменили.

Что могут изменить RO транзакции?
Речь о любых Read commited транзакциях.
RO ничего держать не будут, т.к. ничего не изменят в их контексте.
...
Рейтинг: 0 / 0
Ускорение работы растущей базы данных Firebird через приложение на Delphi
    #40117934
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
RO ничего держать не будут, т.к. ничего не изменят в их контексте.

Так было до 4.0.
С 4.0, RC RO + Read Consistency - изменения, стало как в RC RW.
Смотри:
...
Рейтинг: 0 / 0
25 сообщений из 243, страница 8 из 10
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ускорение работы растущей базы данных Firebird через приложение на Delphi
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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