|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
Добрый день. Firebird 2.5.2, Windows Server 2008 R2. На крупной базе размером 350 Гб накопился разрыв между OIT и OAT, запустили sweep вручную. На данный момент sweep работает уже третьи сутки, последние сутки работает монопольно. I/O Write Bytes уже гораздо больше размера самой базы - 850 Гб. fb_lock_print (c ключом -c) демонстрирует активность. Например, сегодня ночью: LOCK_HEADER BLOCK Version: 145, Active owner: 0, Length: 5242880, Used: 4862912 Flags: 0x0001 Enqs: 308734391, Converts: 7300093, Rejects: 122080, Blocks: 689783 Deadlock scans: 0, Deadlocks: 0, Scan interval: 10 Acquires: 346723095, Acquire blocks: 2424222, Spin count: 0 Mutex wait: 0.7% Hash slots: 1009, Hash lengths (min/avg/max): 0/ 0/ 4 Remove node: 0, Insert queue: 0, Insert prior: 0 Owners (1): forward: 2747832, backward: 2747832 Free owners (614): forward: 3687360, backward: 672816 Free locks (14738): forward: 22024, backward: 2664552 Free requests (59617): forward: 3752656, backward: 4286880 Lock Ordering: Enabled Сегодня утром: LOCK_HEADER BLOCK Version: 145, Active owner: 0, Length: 5242880, Used: 4862912 Flags: 0x0001 Enqs: 357494277, Converts: 10067603, Rejects: 122080, Blocks: 689783 Deadlock scans: 0, Deadlocks: 0, Scan interval: 10 Acquires: 405238767, Acquire blocks: 2424222, Spin count: 0 Mutex wait: 0.6% Hash slots: 1009, Hash lengths (min/avg/max): 0/ 0/ 4 Remove node: 0, Insert queue: 0, Insert prior: 0 Owners (1): forward: 2747832, backward: 2747832 Free owners (614): forward: 3687360, backward: 672816 Free locks (14738): forward: 22024, backward: 2579944 Free requests (59617): forward: 3019584, backward: 4530496 Lock Ordering: Enabled Главный вопрос, есть ли какая-то возможность узнать прогресс работы sweep'а (грубо говоря, сколько ещё осталось ждать)? Можно ли по данным fb_lock_print определить, на каком этапе работы sweeper? И еще вопрос, нормально ли, что молотит третьи сутки? Предварительный backup через gbak с ключом -g делался чуть менее суток (примерно 22 часа), не в монопольном режиме. Большое спасибо заранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 08:07 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
GuestIgorFBНа крупной базе размером 350 Гб накопился разрыв между OIT и OAT, запустили sweep вручную. На данный момент sweep работает уже третьи сутки, последние сутки работает монопольно. I/O Write Bytes уже гораздо больше размера самой базы - 850 Гб. 02.06.2017 была у меня похожая история :) Проморгал разницу между OIT и OAT. В результате в одной таблице записи по первичному ключу стали доставаться за 188 секунд. Я не оговорился ровно _одна_ запись выбиралась не менее 188 _секунд_. Если быть точнее была такая любопытная статистика запроса: select * from Table where ID=109988700 Adapted Plan ------------------------------------------------ PLAN (TABLE INDEX (PK_TABLE)) Query Time ------------------------------------------------ Prepare : 15,00 ms Execute : 188 574,00 ms Avg fetch time: 188 574,00 ms Memory ------------------------------------------------ Current: 51 900 520 Max : 53 082 752 Buffers: 3 000 Operations ------------------------------------------------ Read : 17 423 231 Writes : 4 647 Ну конечно запустил sweep. В штаном режиме он на этой базе занимает примерно 10 минут. У меня терпения хватило на 4 часа молотилова, потом снес sweep. Поднял буферы с 3000 до 10000. Прекратилось бешеное доставание страниц из кеша ОС и sweep как положено отработал минут за 10. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 08:37 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
GuestIgorFBГлавный вопрос, есть ли какая-то возможность узнать прогресс работы sweep'а (грубо говоря, сколько ещё осталось ждать)? gstat -r ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 08:42 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
GuestIgorFBесть ли какая-то возможность узнать прогресс работы sweep'аВ 2.5.2 - нет, позже (с 2.5.6, iirc) можно наблюдать в трейсе потабличную статистику. Для ускорения можно деактивировать индексы, раз уж и так никто в БД не работает. Но потом, есс-но, их придётся активировать. Можно снять статистику gstat -r и отключить только индексы на таблицах с наибольшим кол-вом версий и при наличии большого кол-ва индексов на таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 10:25 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
Евгений КилинПроморгал разницу между OIT и OAT. В результате в одной таблице записи по первичному ключу стали доставаться за 188 секунд. не "в результате". OIT - это просто индикатор, что эта транзакция была завершена по rollback, и все. Если он застревает, то просто увеличивается объем памяти, аллокируемый транзакциями snapshot при старте (Next-OIT)/4 байт. На "доставание" записи, тем более по ПК, OIT никак не влияет. Просто в конкретном месте скопилось дофига версий, при этом они не стали мусором из-за длительной транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 13:11 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
kdvПросто в конкретном месте скопилось дофига версий, при этом они не стали мусором из-за длительной транзакции. Нет, я делал эксперимент: 100 000 немусорных версий одной записи. Выборка её не занимала дольше пары секунд. 180 секунд это явно сборка мусора, которая во всех существующих версиях имеет O(N^2) алгоритм сбора ключей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 13:38 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
kdvЕвгений КилинПроморгал разницу между OIT и OAT. В результате в одной таблице записи по первичному ключу стали доставаться за 188 секунд. не "в результате". OIT - это просто индикатор "Для чего sweep пытается собрать мусор во всей базе данных? Для того, чтобы подвинуть "вверх" номер Oldest Interesting Transaction (Oldest transaction в gstat -h)... А транзакции snapshot оценивают состояния конкурирующих транзакций и возможность модификации записей именно от Oldest transaction до Next transaction. Собственно, при чтении версий, номер транзакций которых меньше Oldest transaction, сервер даже не проверяет наличие версий" http://www.ibase.ru/sweep/ Но если честно мне все это не интересно :) Мне интересно только одно, чтобы свип не тупил в случае форсмажора. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 13:39 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
Евгений Килин, не путай сборку мусора и свип. 99% что в твоём случае началась именно сборка мусора, а не запустился автосвип. Что касается самого свипа, то 2.5.3 было существенное ускорение в некоторых случаях CORE-3994 Тут ещё жаркая дискуссия по этому поводу была ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 13:50 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
Симонов ДенисЕвгений Килин, не путай сборку мусора и свип. 99% что в твоём случае началась именно сборка мусора, а не запустился автосвип. Что касается самого свипа, то 2.5.3 было существенное ускорение в некоторых случаях CORE-3994 Тут ещё жаркая дискуссия по этому поводу была Да не путаю я свип и сборку мусора :)) Я прекрасно понимал, что проблема с мусором и параллельными точечными селектами зачистил несколько критичных ИДшников. В моем случае версия была выше 2.5.3. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 13:56 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovсборка мусора, которая во всех существующих версиях имеет O(N^2) алгоритм сбора ключей.Ты снова трындишь, не зная о чём ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 14:08 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
hvladТы снова трындишь, не зная о чём Ты готов отрицать, что процедура list_staying() для получения каждой новой версии проходит заново всю их цепочку, начиная с головной?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 14:27 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, посмотри когда она вызывается и что нового вокруг неё в новых версиях. А потом трынди про регулярную сборку мусора и про все существующие версии... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 14:33 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
hvladпосмотри когда она вызывается и что нового вокруг неё в новых версиях. Во-первых, если ты забыл, трэд в девеле, приведший к CORE-4935 начал именно я: https://sourceforge.net/p/firebird/mailman/message/32332647/ Во-вторых, ТС-у с его 2.5 от этого не легче. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 14:55 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, перечитай ту ветку, свой нынешний трындёж и на что именно я тебе ответил. И - нет - не она привела к появлению CORE-4935. И - нет - ты никому не открыл глаза, проблема была известна задолго до этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 15:05 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
hvladперечитай ту ветку, свой нынешний трындёж и на что именно я тебе ответил. А теперь перечитай свой код и подумай в каком случае вызывается старый, неэффективный вариант процедуры. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 17:29 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 17:31 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
Мимопроходящий, у кого раздвоение ? Если шо - я справа, с усами ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 18:58 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
Евгений КилинЯ прекрасно понимал, что проблема с мусором и параллельными точечными селектами зачистил несколько критичных ИДшников. тогда при чем тут OIT ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 19:19 |
|
Firebird 2.5.2 - контроль работы sweep на большой базе (350Гб)
|
|||
---|---|---|---|
#18+
hvlad> Если шо - я справа, с усами ;) Осталось выяснить, кто тот дылда рядом... :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 19:21 |
|
|
start [/forum/topic.php?fid=40&tid=1561363]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 154ms |
0 / 0 |