|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
Сделал изменения в коде. Теперь записи новые добавляются очень редко. Потестировав пару часов, я проверил размер файла базы - как был размер на диске 63901696 байт, так и остался. Т.е. даже ни на байт не увеличился ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2021, 23:54 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
kdv Для всех версий ФБ до версии 4 это должна быть транзакция read only read committed. В этом случае она не будет препятствовать превращению старых версий в мусор. Вот тут надо "не" вставить перед (или лучше после) "должна быть". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2021, 23:56 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
rgreatIBM DB2 забыл. с каких пор DB2 стала версионником? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2021, 23:57 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
X11учили, что одна "вечная" транзакция - это хорошо только если она read read_committed. и кстати, можно было бы посмотреть gstat -r, чтобы увидеть, версии накапливаются или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2021, 23:58 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 00:01 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
X11 Сделал изменения в коде. Теперь записи новые добавляются очень редко. ...а текущие записи об активных сессиях обновляются по таймеру. Таймер не менял - 5 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 00:06 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
kdv, Понятно что DB2 не версионная. Я про другое. Я про то что DB2 относится к тем СУБД, табличные пространства которых на пустом месте не распухают. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 00:38 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
rgreatтабличные пространства которых на пустом месте не распухают. "блокировочники не пухнут" - возьмем фразу на заметку. p.s. "на пустом" - я не спорю, что версионник для задач "залили-удалили" не очень подходит, как раз потому что удаление это типа не удаление. Но в блокировочнике поди удали запись, которую читают - повиснешь на блокировке. Другой подход нужен, и т.д. А в версионнике - тяп-ляп, и всё. Правда, потом, "почему пухнет, почему тормоза", и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 02:36 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
rgreat YuRock Должна. UPDATE и DELETE порождают ровно такие же версии, как и INSERT. Это особенность FireBird? Так-то, в приличной базе, если блобов нет, табличное пространство при апдейте не должно расти. Только логи. У Firebird нет логов. Есть версии записей. Они все находятся в файле базы данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 04:16 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
rgreat Но только в приличной и нормально настроенной БД такого роста занимаемого объема, быть не может, если объем фактических данных в таблицах почти не растет. Речь не про настройку БД/СУБД, а про некорректную работу приложения с транзакциями. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 04:20 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
X11 Сделал изменения в коде. Теперь записи новые добавляются очень редко. Потестировав пару часов, я проверил размер файла базы - как был размер на диске 63901696 байт, так и остался. Т.е. даже ни на байт не увеличился Что изменил-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 09:15 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
X11 я тут показал параметры транзакций 22405570 X11 вообще, в приложении хватает транзакций, т.е. их на самом деле не две. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 10:50 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
_Vasilisk_, Ну да.... и что.... Есть отдельные запросы, как на запись, так и на чтение и не все они привязаны к двум транзакциям. Но у всех транзакций одинаковые параметры . 99% наборов данных (TUniQuery) привязаны к той единственной вечной читающей транзакции. Но если запрос на Update/Delete/Insert то пишущую транзакцию я иногда создаю как отдельную пишущую транзакцию на время выполнения запроса. Вот как в данном случае. Например, есть еще модуль сохранения/восстановления разных настроек, т.е. размеры столбцов у сеток, размеры окон, панелей, видимость компонент и т.д. Здесь тоже использует та одна вечная транзакция на чтение и создается своя отдельная пишущая на время записи данных в таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 11:25 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
kdv Если "транзакция записи короткая", это ничего не значит, она просто удалением порождает версию, и всё. Удерживать эту версию может та самая "длинная транзакция одна на всё". Для всех версий ФБ до версии 4 это должна быть транзакция read only read committed. В этом случае она не будет препятствовать превращению старых версий в мусор. это ведь правильные параметры для read only? read;nowait;rec_version;read_committed ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 11:30 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
kdv Короче, читаем подряд http://www.ibase.ru/mga http://www.ibase.ru/garbage/ http://www.ibase.ru/sweep/ Статьи у тебя классные, но, имхо, нужны готовые рецепты. Хорошо бы примеры живого кода из приложений: вот так база пухнет, чтобы не пухла, нужно вот тут сделать не так, а так (или так). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 11:31 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
X11 Есть отдельные запросы, как на запись, так и на чтение и не все они привязаны к двум транзакциям. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 12:08 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
_Vasilisk_ X11 Есть отдельные запросы, как на запись, так и на чтение и не все они привязаны к двум транзакциям. X11, дёргай периодически gstat -h ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 12:19 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
ъъъъъ, это так не работает. Производительность мониторится gstat -h /gstat -r, mon$, трассировка. Чаще всего на работу с транзакциями кладут болт. В статье про ibx у меня есть общие рекомендации по управлению транзакциями, но это максимум, что я могу дать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 12:40 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
kdv в блокировочнике поди удали запись, которую читают - повиснешь на блокировке. Не подвиснешь. Что бы чтение блокировало запись - это надо специально этого захотеть. Блокировка обычно идет в обратную сторону. Но и WITH UR FOR READ ONLY никто не отменял, если надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 13:18 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
fraksУ Firebird нет логов. Технически - есть. Но не на диске (обычно). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 14:17 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
X11 _Vasilisk_, Ну да.... и что.... Есть отдельные запросы, как на запись, так и на чтение и не все они привязаны к двум транзакциям. Но у всех транзакций одинаковые параметры . 99% наборов данных (TUniQuery) привязаны к той единственной вечной читающей транзакции. Но если запрос на Update/Delete/Insert то пишущую транзакцию я иногда создаю как отдельную пишущую транзакцию на время выполнения запроса. Вот как в данном случае. Например, есть еще модуль сохранения/восстановления разных настроек, т.е. размеры столбцов у сеток, размеры окон, панелей, видимость компонент и т.д. Здесь тоже использует та одна вечная транзакция на чтение и создается своя отдельная пишущая на время записи данных в таблицу. У тебя где-то есть живая "write" транзакция. И не обязательно в "твоих" приложениях. Ты мог открыть ibExpert и, например, посмотреть данные любой в табличке. По умолчанию ibExpert открывает таблички в RC-R W транзакции. Вот и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 16:51 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
kdv ъъъъъ, это так не работает. Производительность мониторится gstat -h /gstat -r, mon$, трассировка. Чаще всего на работу с транзакциями кладут болт. В статье про ibx у меня есть общие рекомендации по управлению транзакциями, но это максимум, что я могу дать. А вот интересно. Сделал я тестовое приложение, которое в цикле Код: pascal 1. 2. 3. 4.
- ну и параллельно запускаю RO или RW транзакции и наблюдаю, что размер базы меняется (RW параллельная транзакция) или нет (RO параллельная транзакция). Тут всё понятно. А потом я вынес старт и коммит транзакции за пределы цикла. И база стала пухнуть после лишь коммита, при этом никаких параллельных транзакций я не запускал. Это как понимать? То, что должны храниться все версии до завершения транзакции - это понятно. Но нашиша их в базу пихать при коммите, когда нет других транзакций? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 17:14 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
ъъъъъ А потом я вынес старт и коммит транзакции за пределы цикла. И база стала пухнуть после лишь коммита, при этом никаких параллельных транзакций я не запускал. Это как понимать? То, что должны храниться все версии до завершения транзакции - это понятно. Но нашиша их в базу пихать при коммите, когда нет других транзакций? Так. Заменил я коммит на роллбэк - база всё равно пухнет. После роллбэка. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 17:18 |
|
Ускорение работы растущей базы данных Firebird через приложение на Delphi
|
|||
---|---|---|---|
#18+
ъъъъъ ъъъъъ А потом я вынес старт и коммит транзакции за пределы цикла. И база стала пухнуть после лишь коммита, при этом никаких параллельных транзакций я не запускал. Это как понимать? То, что должны храниться все версии до завершения транзакции - это понятно. Но нашиша их в базу пихать при коммите, когда нет других транзакций? Так. Заменил я коммит на роллбэк - база всё равно пухнет. После роллбэка. Скорее, у тебя ForcedWrites отключено. А то, что версии остаются после rollback - это правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2021, 17:43 |
|
|
start [/forum/topic.php?fid=58&msg=40117634&tid=2036796]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 152ms |
0 / 0 |