Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Сборка мусора.  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1098
Всем привет!
Помогите пожалуйста разобраться со сборкой мусора.

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

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

Через IbExpert вижу что таблица замусоривается. Закрываю программу, в IbExpert делаю
select count(*) из таблицы, вижу что мусор очистился. Делаю тоже самое в программе, мусор не чиститься. Понимаю, что в программе остались "Заинтересованные транзакции".
У меня вопрос, как найти транзакции в моём приложении которые мешают сборке мусора?
Я смотрел в таблицы mon$transaction, mon$statements, mon$atachments но ничего нужного не нашёл, может не так смотрел конечно.
10 сен 18, 11:27    [21669654]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27449
Mandarin
Я смотрел в таблицы mon$transaction, ... но ничего нужного не нашёл

как это?

1. я не очень понимаю, зачем "чистить мусор" в Embedded. У вас что, приложение держит много транзакций?
2. версии чистятся только когда они становится мусором. То есть, например, в "монопольном" режиме
update
commit - если других транзакций нет, предыдущие версии стали мусором
start trans
select count - тут мусор соберется.
Если параллельно с той транзакцией, которая делала update, есть еще какая-то активная read/write транзакция, и она активна на момент select count, то версии в мусор не превращаются.
10 сен 18, 11:34    [21669664]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59016
Зачем ты всё это делаешь? Стандартные режимы чем-то
не устраивают? Если да, то чем не устраивает gfix sweep?

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

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

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

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

Posted via ActualForum NNTP Server 1.5

10 сен 18, 11:37    [21669666]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59016
Ой, у него ещё и Ембеддед. Как всё запущено.

Posted via ActualForum NNTP Server 1.5

10 сен 18, 11:38    [21669669]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1098
kdv
Mandarin
Я смотрел в таблицы mon$transaction, ... но ничего нужного не нашёл

как это?

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


1. Чистить мусор в Embed нужно, т.к. он появляется и сильно замедляет работу :). приложение держит много активных транзакций, т.к. это большое сложное приложение с множеством модулей, которые работают с одной БД.
2. Вы говорите про транзакции которые работают с той же таблицей которую мне надо почистить, или вообще транзакции в БД?
10 сен 18, 11:39    [21669670]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1098
Гаджимурадов Рустам
Зачем ты всё это делаешь? Стандартные режимы чем-то
не устраивают? Если да, то чем не устраивает gfix sweep?

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

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

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

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


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

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

У меня в программе предусмотрел backup/restor при старте, с определённым интервалом, в этом случае мусор чистить, но на дохлых компьютерах это может занимать 10-15 минут и пользователи отказываются ждать. Надо настроить сборку в фоновом режиме.
10 сен 18, 11:42    [21669678]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 45720

Mandarin
из-за замусоривания запросы работают медленнее.

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

Posted via ActualForum NNTP Server 1.5

10 сен 18, 11:46    [21669684]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1098
Dimitry Sibiryakov
Mandarin
из-за замусоривания запросы работают медленнее.

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


К гадалке не ходи, как говорится :)
10 сен 18, 11:49    [21669688]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
hvlad
Member

Откуда:
Сообщений: 9925
Mandarin
gfix sweep очень даже подходит НО требует монопольного доступа к БД
Конечно не требует
10 сен 18, 12:10    [21669715]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
hvlad
Member

Откуда:
Сообщений: 9925
Dimitry Sibiryakov
Mandarin
из-за замусоривания запросы работают медленнее.

Вообще-то нет.
Вообще-то ты снова пальцем в небо тычешь.
Ибо сборка мусора во время выполнения запросов таки не ускоряет выполнение оных.
10 сен 18, 12:12    [21669720]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
hvlad
Member

Откуда:
Сообщений: 9925
Mandarin
У меня вопрос, как найти транзакции в моём приложении которые мешают сборке мусора?
Любая длительная тр-ция под подозрением. Кроме read committed read only.
10 сен 18, 12:14    [21669723]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27449
Mandarin
приложение держит много активных транзакций, т.к. это большое сложное приложение с множеством модулей, которые работают с одной БД.

есть же правила - длинную транзакцию делать read read_committed rec_version, она не будет "удерживать версии".
А если не хотите исправлять "много активных транзакций", то тогда не надо страдать по поводу мусора. Одно следует из другого - исправляете транзакции, пропадает проблема мусора.
10 сен 18, 12:15    [21669724]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 8514
Mandarin
2. Вы говорите про транзакции которые работают с той же таблицей которую мне надо почистить, или вообще транзакции в БД?


причём тут таблица. Любая активная транзакция за исключением RC RO удерживает сборку мусора, если только он не порождён раньше этой транзакции.
10 сен 18, 12:24    [21669736]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 8514
Гаджимурадов Рустам
delete from mon$transactions пробовал?


это ты что-то попутал, такой запрос не отработает в принципе. Грохать можно только активные запросы и подключения. Для транзакций такого не делали.
10 сен 18, 12:31    [21669742]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59016
Симонов Денис> это ты что-то попутал, такой запрос не отработает в принципе.
Симонов Денис> Грохать можно только активные запросы и подключения.
Симонов Денис> Для транзакций такого не делали.

Действительно. Простите великодушно, попутал, старею.

Posted via ActualForum NNTP Server 1.5

10 сен 18, 19:13    [21670207]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1098
kdv
Mandarin
приложение держит много активных транзакций, т.к. это большое сложное приложение с множеством модулей, которые работают с одной БД.

есть же правила - длинную транзакцию делать read read_committed rec_version, она не будет "удерживать версии".
А если не хотите исправлять "много активных транзакций", то тогда не надо страдать по поводу мусора. Одно следует из другого - исправляете транзакции, пропадает проблема мусора.


Хватай специалиста!!! Держи его :) Вот золотой человек! :) Спасибо! То, что нужно!
З.Ы. Дайте ему премию :)
11 сен 18, 09:16    [21670509]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 8514
Mandarin,

неужели исправил?
11 сен 18, 09:17    [21670510]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 45720

Симонов Денис
неужели исправил?

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

Posted via ActualForum NNTP Server 1.5

11 сен 18, 12:32    [21670798]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2363
Mandarin
Хватай специалиста!!! Держи его :) Вот золотой человек! :) Спасибо! То, что нужно!
З.Ы. Дайте ему премию :)
kdv сам выдает премии.
11 сен 18, 16:22    [21671177]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1098
Симонов Денис
Mandarin,

неужели исправил?

Исправил. Как посоветовал kdv я поменял параметры долгоиграющей транзакции и сборка мусора начала работать после select count(*)
11 сен 18, 20:27    [21671453]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Mandarin
Member

Откуда: Саратов
Сообщений: 1098
Dimitry Sibiryakov
Симонов Денис
неужели исправил?

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

Спасибо за критику :) именно она не даёт расслабиться и даёт стимул двигаться в перёд :)
11 сен 18, 20:29    [21671455]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29045

11.09.2018 20:27, Mandarin пишет:
> Исправил. Как посоветовал kdv я поменял параметры долгоиграющей транзакции и сборка мусора начала работать после select count(*)

а зачем ты держишь эту транзакцию?

Posted via ActualForum NNTP Server 1.5

12 сен 18, 16:42    [21672475]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 8514
Мимопроходящий,

ну а чего тут непонятного, человеку хочется недофетченные курсоры держать, чтобы пользователи не ждали пока в грид выберется 100500 записей.
12 сен 18, 17:24    [21672528]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29045

12.09.2018 17:24, Симонов Денис пишет:
> ну а чего тут непонятного, человеку хочется недофетченные курсоры держать, чтобы пользователи не ждали пока в грид выберется 100500 записей.

нет уж, пускай он сам скажет зачем ;)

Posted via ActualForum NNTP Server 1.5

12 сен 18, 17:26    [21672533]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 45720

Симонов Денис
человеку хочется недофетченные курсоры держать, чтобы пользователи не ждали пока в грид
выберется 100500 записей.

Ну да, фетчить записи в фоновом режиме и отображать их сразу - слишком сложная техника.
Тут программист нужен.

Posted via ActualForum NNTP Server 1.5

12 сен 18, 17:27    [21672537]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить