powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Очень медленная сборка мусора при бекапе
25 сообщений из 25, страница 1 из 1
Очень медленная сборка мусора при бекапе
    #38460016
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Ковыряюсь с одной маленькой (225 МБ) базой данных. Решил в какой-то момен времени попить кофе и запустил бекап - мусор собрать, просто работу зафиксировать. Это было час назад; файл бекапа с того времени вырос аж до 50 МБ. Все это время дисковая активность, загруженность процессора и памяти болтается в районе 1-5%. Строка запуска:
gbak -v -b -user sysdba -pass masterkey localtest1 san_`date +%Y%m%d-%H%M`.fbk
Бекап застрял на строчке
gbak: writing data for table H_TOVAR
Из этой таблицы были удалены все записи в процессе работы (около 2млн) и скорее всего сейчас по ней собирается мусор. Но не целый час же при общем объеме базы в пару сотен мегабайт же?

Я где-то что-то начудил, или это так и должно быть?

Firebird 2.5.2, Debian 7.1
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38460031
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonline,

еще одно подтверждение моей уверенности, что бэкап всегда надо делать как gbak -b -g.
http://www.ibase.ru/devinfo/delmany.htm
к сожалению, даты документа нет, но думаю, цитата Харрисон взята где-то до 2000 года.
Какие-то ускорения у ФБ в ODS на эту тему вроде были, но насколько это помогло - не знаю, не сравнивал.
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38460077
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Футыблин, аж на душе полегчало :)
Думал, кстати, что весь devinfo/ прочитал, а приведенный документ вроде впервые вижу. Но, тем не менее все более-менее прояснилось, спасибо большое.

P.S. Воспроизводимый тест и/или тикет в трекере нужен?
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38460078
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlinegbak: writing data for table H_TOVAR
Из этой таблицы были удалены все записи в процессе работы (около 2млн)
индексов сколько на этой таблице?

miwaonlineFirebird 2.5.2
более интересна ODS базы...
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38460102
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

ODS 11.2

Индексов четыре + PK пятый.
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38460282
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Классик ? Размер кеша для этой БД ?
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38460318
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Да, классик. А вот с размером кеша вышла лажа: он дефолтный, тоесть в конфиге параметр DefaultDbCachePages закоментирован. Сам не знал :(
Прошу извинить за потраченное время :(
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38460325
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonline,

если есть возможность - повтори бекап БД с мусором с более вменяемым размером кеша (хотя бы 256 страниц)
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38460328
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvКакие-то ускорения у ФБ в ODS на эту тему вроде были, но насколько это помогло - не знаю, не сравнивал.Т.е. про новую структуру индексов в ODS 11 ты "вроде бы" слышал, но никогда их не трогал ?
Не верю :)
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38460878
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladmiwaonline,

если есть возможность - повтори бекап БД с мусором с более вменяемым размером кеша (хотя бы 256 страниц)
Будет чуть позднее - мусор уже вынесли :) Но я на той же базе данных запустил ту же самую "генерацию мусора", которая была в прошлый раз, а потом запущу на ней же бекап. По результатам отпишусь.
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461060
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladпро новую структуру индексов в ODS 11 ты "вроде бы" слышал, но никогда их не трогал ? Не верю :)
слышал, но по сборке мусора никогда не сравнивал. К тому же, сравнить IB и FB достаточно тяжело, из-за фоновой сборки в супере ИБ. Но мысль уже появилась, просто ради развлечения - можно.

Впрочем, на 4 дня придется уехать в пампасы, ибо в офисе устроили blackout в рабочее время - какие-то ремонтные работы.
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461099
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladmiwaonline,

если есть возможность - повтори бекап БД с мусором с более вменяемым размером кеша (хотя бы 256 страниц)
"Восстановил мусор" и запустил бекап заново. На все той же таблице H_TOVAR, в которой было создано и затем сразу удалено примерно 1.1 миллиона записей, gbak "думает" уже больше получаса. Общий объем базы данных - напомню - 225 МБ. Размер кеша 512 страниц. Размер бекапа (почти) все это время 7.3 МБ. Процессор, память, диск не заняты (меньше 5% по загрузке каждого показателя).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
SQL> show table h_tovar;
ID                              INTEGER Not Null 
TOVAR_ID                        DECIMAL(13, 0) Nullable 
TOVAR_CODE                      DECIMAL(13, 0) Nullable 
DATE_OP                         DATE Nullable 
AMOUNT                          (MY_AMOUNT) DECIMAL(14, 3) Nullable 
INC_PRICE                       (MY_MONEY) DECIMAL(15, 2) Nullable 
OUT_PRICE                       (MY_MONEY) DECIMAL(15, 2) Nullable 
SELL_PRICE                      (MY_MONEY) DECIMAL(15, 2) Nullable 
DOC_ID                          INTEGER Nullable 
DOC_TYPE                        INTEGER Nullable 
CHANGE_TIMESTAMP                TIMESTAMP Nullable 
CONSTRAINT PK_H_TOVAR:
  Primary key (ID)

Triggers on Table H_TOVAR:
H_TOVAR_BI0, Sequence: 0, Type: BEFORE INSERT, Active

SQL> show indices h_tovar;
H_TOVAR_IDX1 INDEX ON H_TOVAR(TOVAR_ID) 
H_TOVAR_IDX2 INDEX ON H_TOVAR(TOVAR_CODE) 
H_TOVAR_IDX3 INDEX ON H_TOVAR(DOC_ID) 
H_TOVAR_IDX6 INDEX ON H_TOVAR(CHANGE_TIMESTAMP) 
PK_H_TOVAR UNIQUE INDEX ON H_TOVAR(ID) 

SQL> show database;
Database: localtest1
        Owner: SYSDBA                         
PAGE_SIZE 8192
Number of DB pages allocated = 28531
Sweep interval = 20000
Forced Writes are ON
Transaction - oldest = 765
Transaction - oldest active = 766
Transaction - oldest snapshot = 766
Transaction - Next = 787
ODS = 11.2
Default Character set: WIN1251
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461120
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonline,

ты бы лучше на исходной базе показал статистику по индексам этой таблицы из gstat. Или привел rdb$indices.rdb$statistics (или как его там) после пересбора set statistics index ....
А то может у тебя на одном из столбцов те самые 2млн записей имеют одно значение. А значит сервер при сборке мусора будет мучительно гонять эти страницы туда-сюда, в мелком кэше классика.
Я бы еще посмотрел на количество операций I/O этого процесса. База хоть и 225 мб, а вот судя по длительности сборки мусора, там ввода-вывода могут оказаться гигабайты.
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461125
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineshow table h_tovar;
Покажи ещё gstat -i -r -t H_TOVAR
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461178
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, через 2 часа срубил я процесс бекапа. Размер файла бекапа так и оставался 7.3 МБ, gbak висел на все той же строчке writing data for table H_TOVAR.

Dimitry Sibiryakovmiwaonlineshow table h_tovar;
Покажи ещё gstat -i -r -t H_TOVAR


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
miwa@worknote:~$ sudo fbstat -i -r -t H_TOVAR localtest1

Database "/usr/database/localtest1.fdb"
Database header page information:
        Flags                   0
        Checksum                12345
        Generation              816
        Page size               8192
        ODS version             11.2
        Oldest transaction      765
        Oldest active           766
        Oldest snapshot         766
        Next transaction        787
        Bumped transaction      1
        Sequence number         0
        Next attachment ID      23
        Implementation ID       19
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Nov 11, 2013 10:11:44
        Attributes              force write

    Variable header data:
        Sweep interval:         20000
        *END*


Database file sequence:
File /usr/database/localtest1.fdb is the only file

Analyzing database pages ...
H_TOVAR (206)
    Primary pointer page: 507, Index root page: 508
    Average record length: 0.00, total records: 555643
    Average version length: 60.90, total versions: 555643, max versions: 1
    Data pages: 6881, data page slots: 8585, average fill: 94%
    Fill distribution:
         0 - 19% = 0
        20 - 39% = 1
        40 - 59% = 0
        60 - 79% = 0
        80 - 99% = 6880

    Index H_TOVAR_IDX1 (0)
        Depth: 3, leaf buckets: 778, nodes: 555644
        Average data length: 0.31, total dup: 528434, max dup: 3241
        Fill distribution:
             0 - 19% = 3
            20 - 39% = 254
            40 - 59% = 380
            60 - 79% = 134
            80 - 99% = 7

    Index H_TOVAR_IDX2 (1)
        Depth: 3, leaf buckets: 768, nodes: 555644
        Average data length: 0.20, total dup: 528429, max dup: 3241
        Fill distribution:
             0 - 19% = 5
            20 - 39% = 218
            40 - 59% = 435
            60 - 79% = 102
            80 - 99% = 8

    Index H_TOVAR_IDX3 (2)
        Depth: 2, leaf buckets: 751, nodes: 555644
        Average data length: 0.05, total dup: 532486, max dup: 121404
        Fill distribution:
             0 - 19% = 1
            20 - 39% = 304
            40 - 59% = 349
            60 - 79% = 91
            80 - 99% = 6

    Index H_TOVAR_IDX6 (3)
        Depth: 2, leaf buckets: 347, nodes: 555644
        Average data length: 0.01, total dup: 555638, max dup: 106072
        Fill distribution:
             0 - 19% = 2
            20 - 39% = 0
            40 - 59% = 1
            60 - 79% = 0
            80 - 99% = 344

    Index PK_H_TOVAR (4)
        Depth: 2, leaf buckets: 415, nodes: 555644
        Average data length: 1.00, total dup: 0, max dup: 0
        Fill distribution:
             0 - 19% = 1
            20 - 39% = 1
            40 - 59% = 0
            60 - 79% = 0
            80 - 99% = 413


kdvА то может у тебя на одном из столбцов те самые 2млн записей имеют одно значение. А значит сервер при сборке мусора будет мучительно гонять эти страницы туда-сюда, в мелком кэше классика.

Нет, данные должны быть разные. Разве что в поле CHANGE_TIMESTAMP в случае синтетического наполнения таблицы будет только 10 разных значений из-за того, что для его наполнения используется current_timestamp, а сама таблица h_tovar наполняется как десятикраный повтор запроса insert into h_tovar ... select ... from m_tovar.
kdvЯ бы еще посмотрел на количество операций I/O этого процесса. База хоть и 225 мб, а вот судя по длительности сборки мусора, там ввода-вывода могут оказаться гигабайты.
Разве что позже - сейчас "для чистоты експеримента" наново набью теми же данными ту же таблицу и запущу бекап параллельно с iotop.

Хотя, вот нашел в одной из консолей; запускалось в случайные моменты времени с целью посмотреть дисковую активность:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
miwa@worknote:~$ sudo iotop -b -o -n 1
Total DISK READ:       0.00 B/s | Total DISK WRITE:     261.45 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
18797 be/4 root        0.00 B/s  522.89 K/s  0.00 %  0.68 % gbak -v -b -user sysdba -pass ********* localtest1 lt1.gbk
miwa@worknote:~$ sudo iotop -b -o -n 1
Total DISK READ:       0.00 B/s | Total DISK WRITE:     281.63 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
18797 be/4 root        0.00 B/s  281.63 K/s  0.00 %  0.35 % gbak -v -b -user sysdba -pass ********* localtest1 lt1.gbk
miwa@worknote:~$ sudo iotop -b -o -n 1
Total DISK READ:       0.00 B/s | Total DISK WRITE:     219.75 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
18797 be/4 root        0.00 B/s  219.75 K/s  0.00 %  0.29 % gbak -v -b -user sysdba -pass ********* localtest1 lt1.gbk

Завтра будут более упорядоченные результаты, хотя общая картина (доли, максимум единицы процентов IO) изменится вряд ли.
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461190
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineIndex H_TOVAR_IDX3 (2)
total dup: 532486, max dup: 121404

Index H_TOVAR_IDX6 (3)
total dup: 555638, max dup: 106072
Убивать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461198
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmiwaonlineIndex H_TOVAR_IDX3 (2)
total dup: 532486, max dup: 121404

Index H_TOVAR_IDX6 (3)
total dup: 555638, max dup: 106072
Убивать.

Касаемо IDX6 уже писал: использовал current_timestamp при перенаполнении таблицы (скопировал текст из триггера). В реальной базе такого безобразия нет, поскольку там current_timestamp все время разный. Сейчас перенаполняю базу наново уже с 'now'. А вот об idx3 пока что ничего не могу сказать: doc_id практически не повторяется в таблице-источнике, а база, с которой снимались цитируемые данные, уже убита. Прошу подождать с расстрельными статьями, пока наново не зальется очередной миллион записей.
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461200
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя общий объём оставшихся данных и индексов около 10К страниц а значит было около 20К страниц (т.к. осталось полмиллиона версий, а было 1.1 млн).


Т.к. мы (но не движок) точно знаем, что все эти 20К страниц нужно удалить, это означает жутко случайный прыг по ним через окошко в 512 страниц, которые
многократно читаются, вытесняются, при этом пишутся на диск (а не в кеш ФС, из-за W=ON) и т.д. по кругу.

Т.е. ты упираешься в скорость случайной записи, обеспечиваемой твоим диском.
Те самые 220 - 523 КБ\с или 27-65 стр\сек.

Что-то диск очень медленный, должно быть 100-300 страниц\сек даже для одиночного, но современного SATA диска...
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461203
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvА то может у тебя на одном из столбцов те самые 2млн записей имеют одно значение.На ОДС 11 это по барабану и никак не замедляет сборку мусора.

kdvА значит сервер при сборке мусора будет мучительно гонять эти страницы туда-сюда, в мелком кэше классика.Будет конечно, но это никак не зависит от кол-ва дубликатов ключей в индексе.
Даже наоборот - т.к. в ОДС 11 дубликаты упорядочены по номеру записи, то должно быть бОльшее попадание в кеш для "плохих" индексов...
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461227
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladУ тебя общий объём оставшихся данных и индексов около 10К страниц а значит было около 20К страниц (т.к. осталось полмиллиона версий, а было 1.1 млн).


Т.к. мы (но не движок) точно знаем, что все эти 20К страниц нужно удалить, это означает жутко случайный прыг по ним через окошко в 512 страниц, которые
многократно читаются, вытесняются, при этом пишутся на диск (а не в кеш ФС, из-за W=ON) и т.д. по кругу.

Т.е. ты упираешься в скорость случайной записи, обеспечиваемой твоим диском.
Те самые 220 - 523 КБ\с или 27-65 стр\сек.

Вот теперь понятно, спасибо.
hvladЧто-то диск очень медленный, должно быть 100-300 страниц\сек даже для одиночного, но современного SATA диска...
Да х.з. - обычный ноутбук, lenovo g780.
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461259
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonline,

ноутбучные винты скоростью не отличаются, как правило.

Если всё ещё интересно - попробуй повторить или с кешем в 20К страниц, или с FW=OFF.
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461569
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЕсли всё ещё интересно - попробуй повторить или с кешем в 20К страниц, или с FW=OFF.
Да, с кешем 20К страниц не успел даже во второй консоли запустить подготовленный скрипт для измерения дисковой активности :)

Тогда, раз пошла такая пьянка, еще два встречных вопросса. Первый - ни у кого не завалялось ссылки на статью/обсуждение о размере кеша вообще и почему его не стОит ставить очень уж большим для классика - в частности? И второй - а в тройке дефолтный размер кеша будет все таким же микроскопическим?
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461604
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonline,

не совсем. По умолчанию:
для CS/SC - 256
для SS - 2048

Т.е. увеличат только для CS и SC

Я себе для SS ставил 8K, Таблоид - 64K
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461606
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я про тройку
...
Рейтинг: 0 / 0
Очень медленная сборка мусора при бекапе
    #38461829
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineпочему его не стОит ставить очень уж большим для классика
Потому что сильно возрастут накладные расходы на его синхронизацию между параллельными
процессами. В тройке есть shared cache, там это менее актуально (вместе с самим классиком).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Очень медленная сборка мусора при бекапе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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