Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сборка мусора. / 25 сообщений из 52, страница 1 из 3
10.09.2018, 11:27
    #39700309
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Всем привет!
Помогите пожалуйста разобраться со сборкой мусора.

Описываю ситуацию.
Firebird 2.5. Embeded версия
Ibexpert для мониторинга статистики таблицы

Есть приложение, есть таблица в которой происходит update/insert.

Через IbExpert вижу что таблица замусоривается. Закрываю программу, в IbExpert делаю
select count(*) из таблицы, вижу что мусор очистился. Делаю тоже самое в программе, мусор не чиститься. Понимаю, что в программе остались "Заинтересованные транзакции".
У меня вопрос, как найти транзакции в моём приложении которые мешают сборке мусора?
Я смотрел в таблицы mon$transaction, mon$statements, mon$atachments но ничего нужного не нашёл, может не так смотрел конечно.
...
Рейтинг: 0 / 0
10.09.2018, 11:34
    #39700317
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
MandarinЯ смотрел в таблицы mon$transaction, ... но ничего нужного не нашёл
как это?

1. я не очень понимаю, зачем "чистить мусор" в Embedded. У вас что, приложение держит много транзакций?
2. версии чистятся только когда они становится мусором. То есть, например, в "монопольном" режиме
update
commit - если других транзакций нет, предыдущие версии стали мусором
start trans
select count - тут мусор соберется.
Если параллельно с той транзакцией, которая делала update, есть еще какая-то активная read/write транзакция, и она активна на момент select count, то версии в мусор не превращаются.
...
Рейтинг: 0 / 0
10.09.2018, 11:37
    #39700320
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Зачем ты всё это делаешь? Стандартные режимы чем-то
не устраивают? Если да, то чем не устраивает gfix sweep?

Mandarin> Делаю тоже самое в программе, мусор не чиститься.
Mandarin> Понимаю, что в программе остались "Заинтересованные транзакции".

Какие компоненты доступа, как настроены транзакции?

> Я смотрел в таблицы mon$transaction, mon$statements, mon$atachments
> но ничего нужного не нашёл, может не так смотрел конечно.

Показывай, как смотрел. delete from mon$transactions пробовал?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.09.2018, 11:38
    #39700322
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Ой, у него ещё и Ембеддед. Как всё запущено.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.09.2018, 11:39
    #39700323
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
kdvMandarinЯ смотрел в таблицы mon$transaction, ... но ничего нужного не нашёл
как это?

1. я не очень понимаю, зачем "чистить мусор" в Embedded. У вас что, приложение держит много транзакций?
2. версии чистятся только когда они становится мусором. То есть, например, в "монопольном" режиме
update
commit - если других транзакций нет, предыдущие версии стали мусором
start trans
select count - тут мусор соберется.
Если параллельно с той транзакцией, которая делала update, есть еще какая-то активная read/write транзакция, и она активна на момент select count, то версии в мусор не превращаются.

1. Чистить мусор в Embed нужно, т.к. он появляется и сильно замедляет работу :). приложение держит много активных транзакций, т.к. это большое сложное приложение с множеством модулей, которые работают с одной БД.
2. Вы говорите про транзакции которые работают с той же таблицей которую мне надо почистить, или вообще транзакции в БД?
...
Рейтинг: 0 / 0
10.09.2018, 11:42
    #39700326
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Гаджимурадов РустамЗачем ты всё это делаешь? Стандартные режимы чем-то
не устраивают? Если да, то чем не устраивает gfix sweep?

Mandarin> Делаю тоже самое в программе, мусор не чиститься.
Mandarin> Понимаю, что в программе остались "Заинтересованные транзакции".

Какие компоненты доступа, как настроены транзакции?

> Я смотрел в таблицы mon$transaction, mon$statements, mon$atachments
> но ничего нужного не нашёл, может не так смотрел конечно.

Показывай, как смотрел. delete from mon$transactions пробовал?


Делаю я это zlk того чтобы восстановить первоначальную скорость работы запросов, т.к. из-за замусоривания запросы работают медленнее.

gfix sweep очень даже подходит НО требует монопольного доступа к БД, а это очень сложно организовать

У меня в программе предусмотрел backup/restor при старте, с определённым интервалом, в этом случае мусор чистить, но на дохлых компьютерах это может занимать 10-15 минут и пользователи отказываются ждать. Надо настроить сборку в фоновом режиме.
...
Рейтинг: 0 / 0
10.09.2018, 11:46
    #39700330
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Mandarinиз-за замусоривания запросы работают медленнее.

Вообще-то нет. Обычно оно не оказывает заметного влияния на скорость запросов. Разве что в
случаях когда из-за недостатка места на страницах идёт сильная фрагментация записей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.09.2018, 11:49
    #39700332
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Dimitry SibiryakovMandarinиз-за замусоривания запросы работают медленнее.

Вообще-то нет. Обычно оно не оказывает заметного влияния на скорость запросов. Разве что в
случаях когда из-за недостатка места на страницах идёт сильная фрагментация записей.


К гадалке не ходи, как говорится :)
...
Рейтинг: 0 / 0
10.09.2018, 12:10
    #39700343
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Mandaringfix sweep очень даже подходит НО требует монопольного доступа к БДКонечно не требует
...
Рейтинг: 0 / 0
10.09.2018, 12:12
    #39700344
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Dimitry SibiryakovMandarinиз-за замусоривания запросы работают медленнее.

Вообще-то нет.Вообще-то ты снова пальцем в небо тычешь.
Ибо сборка мусора во время выполнения запросов таки не ускоряет выполнение оных.
...
Рейтинг: 0 / 0
10.09.2018, 12:14
    #39700346
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
MandarinУ меня вопрос, как найти транзакции в моём приложении которые мешают сборке мусора?Любая длительная тр-ция под подозрением. Кроме read committed read only.
...
Рейтинг: 0 / 0
10.09.2018, 12:15
    #39700347
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Mandarinприложение держит много активных транзакций, т.к. это большое сложное приложение с множеством модулей, которые работают с одной БД.
есть же правила - длинную транзакцию делать read read_committed rec_version, она не будет "удерживать версии".
А если не хотите исправлять "много активных транзакций", то тогда не надо страдать по поводу мусора. Одно следует из другого - исправляете транзакции, пропадает проблема мусора.
...
Рейтинг: 0 / 0
10.09.2018, 12:24
    #39700355
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Mandarin2. Вы говорите про транзакции которые работают с той же таблицей которую мне надо почистить, или вообще транзакции в БД?

причём тут таблица. Любая активная транзакция за исключением RC RO удерживает сборку мусора, если только он не порождён раньше этой транзакции.
...
Рейтинг: 0 / 0
10.09.2018, 12:31
    #39700359
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Гаджимурадов Рустамdelete from mon$transactions пробовал?

это ты что-то попутал, такой запрос не отработает в принципе. Грохать можно только активные запросы и подключения. Для транзакций такого не делали.
...
Рейтинг: 0 / 0
10.09.2018, 19:13
    #39700620
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Симонов Денис> это ты что-то попутал, такой запрос не отработает в принципе.
Симонов Денис> Грохать можно только активные запросы и подключения.
Симонов Денис> Для транзакций такого не делали.

Действительно. Простите великодушно, попутал, старею.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.09.2018, 09:16
    #39700744
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
kdvMandarinприложение держит много активных транзакций, т.к. это большое сложное приложение с множеством модулей, которые работают с одной БД.
есть же правила - длинную транзакцию делать read read_committed rec_version, она не будет "удерживать версии".
А если не хотите исправлять "много активных транзакций", то тогда не надо страдать по поводу мусора. Одно следует из другого - исправляете транзакции, пропадает проблема мусора.

Хватай специалиста!!! Держи его :) Вот золотой человек! :) Спасибо! То, что нужно!
З.Ы. Дайте ему премию :)
...
Рейтинг: 0 / 0
11.09.2018, 09:17
    #39700745
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Mandarin,

неужели исправил?
...
Рейтинг: 0 / 0
11.09.2018, 12:32
    #39700864
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Симонов Дениснеужели исправил?

Скорее замёл под коврик названным костылём.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.09.2018, 16:22
    #39700989
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
MandarinХватай специалиста!!! Держи его :) Вот золотой человек! :) Спасибо! То, что нужно!
З.Ы. Дайте ему премию :)kdv сам выдает премии.
...
Рейтинг: 0 / 0
11.09.2018, 20:27
    #39701099
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Симонов ДенисMandarin,

неужели исправил?
Исправил. Как посоветовал kdv я поменял параметры долгоиграющей транзакции и сборка мусора начала работать после select count(*)
...
Рейтинг: 0 / 0
11.09.2018, 20:29
    #39701101
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Dimitry SibiryakovСимонов Дениснеужели исправил?

Скорее замёл под коврик названным костылём.

Спасибо за критику :) именно она не даёт расслабиться и даёт стимул двигаться в перёд :)
...
Рейтинг: 0 / 0
12.09.2018, 16:42
    #39701641
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
11.09.2018 20:27, Mandarin пишет:
> Исправил. Как посоветовал kdv я поменял параметры долгоиграющей транзакции и сборка мусора начала работать после select count(*)

а зачем ты держишь эту транзакцию?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.09.2018, 17:24
    #39701666
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Мимопроходящий,

ну а чего тут непонятного, человеку хочется недофетченные курсоры держать, чтобы пользователи не ждали пока в грид выберется 100500 записей.
...
Рейтинг: 0 / 0
12.09.2018, 17:26
    #39701669
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
12.09.2018 17:24, Симонов Денис пишет:
> ну а чего тут непонятного, человеку хочется недофетченные курсоры держать, чтобы пользователи не ждали пока в грид выберется 100500 записей.

нет уж, пускай он сам скажет зачем ;)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.09.2018, 17:27
    #39701672
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сборка мусора.
Симонов Денисчеловеку хочется недофетченные курсоры держать, чтобы пользователи не ждали пока в грид
выберется 100500 записей.

Ну да, фетчить записи в фоновом режиме и отображать их сразу - слишком сложная техника.
Тут программист нужен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сборка мусора. / 25 сообщений из 52, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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