powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Большие паузы при наполнении базы
23 сообщений из 23, страница 1 из 1
Большие паузы при наполнении базы
    #39610904
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть база объемом 50Гб, планируемый объем после полного наполнения - 200-300 Гб. Запущена процедура наполнения базы данными, практически сплошные insert'ы один за другим, но не только, есть и проверки через select.

Замечен такой неприятный эффект: после некоторого времени (30-120 секунд) непрерывной правильной работы (клиенты наполнения получают отклик на свои операции, сервер стучит дисками и мигает лампочками дисковой активности) возникают большие (20-90 секунд) паузы (клиенты "замирают", сервер не производит дисковых операций). Потом нормальная деятельность возобновляется. Промежутки времени примерно в указанных диапазонах, но каждый раз разные.

Предполагаю, что в эти паузы Firebird производит какие-то мощные операции в памяти и/или подготавливает увеличение файла базы. Однако размер файла меняется далеко не каждый раз после паузы.

Вопрос: может быть, как-то можно оптимизировать процесс? Подскажите, пожалуйста, чем можно поиграть.

Большие паузы - это не здорово. Хорошо еще, что сейчас "живых" клиентов нет, а то их такие задержки крайне бы раздражали.

Firebird 3.03 SuperServer
Windows 2012 R2
32ГБ ОП
4ТБ NTFS
RAID1 (зеркало)
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610905
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky,

скорее всего файл базы данных расширяется, а расширяется он большими кусками
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610906
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисскорее всего файл базы данных расширяется
Это первое предположение, да. Но, повторюсь, далеко не после каждой паузы файл меняет свой размер, а если меняет, то как-то несущественно. На фоне 50Гб - на единицы-десятки Мб.

Может быть, есть где-то опция задать размер этих чанков? Чтобы сразу отхватить, так отхватить.
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610907
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky,

отсюда не видно что у вас там за insert и промежуточные select. Есть ли индексы?
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610908
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyЗамечен такой неприятный эффект: после некоторого времени (30-120 секунд) непрерывной правильной работы (клиенты наполнения получают отклик на свои операции, сервер стучит дисками и мигает лампочками дисковой активности) возникают большие (20-90 секунд) паузы (клиенты "замирают", сервер не производит дисковых операций).Наличие дисковых операций только по лампочкам определяется ?
Или таки кто-то умеет perfmon'ом пользоваться ?

Какой размер кеша БД ? Режим FW ? Что изменено в firebird.conf ?
Сколько индексов на таблице ? Есть триггеры ?

shalamyanskyМожет быть, есть где-то опция задать размер этих чанков?DatabaseGrowthIncrement
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610910
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, что отсюда не видно. Конкретика в данном случае существенна? Там 120 таблиц, и все они заполняются. Индексы есть, а как же. Отключить индексы не могу из-за тех самых проверок.
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610912
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky,

никто не предлагает отключить. Просто есть кое какие предположения на счёт пауз, но пусть лучше Влад ответит
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610916
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladКакой размер кеша БД ? Режим FW ? Что изменено в firebird.conf ?

Опции все стоят умолчальные из дистрибутива для Windows64.
DefaultDbCachePages = 2048
FileSystemCacheThreshold = 64K
FileSystemCacheSize = 0
TempCacheLimit = 64M
hvladРежим FW?

Прошу прощения, FW - это что?
hvladСколько индексов на таблице ? Есть триггеры ?

От 1 до 10 индексов, в основном по 2 на таблицу. И по 1-2 триггера.
hvladDatabaseGrowthIncrement

Вот! Это оно, скорее всего. Буду пробовать.

Наверное, я мог бы и сам порыться и найти, а не отвлекать занятых людей, но раз есть форум, почему не воспользоваться?
Благодарю и прошу извинить.
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610919
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladНаличие дисковых операций только по лампочкам определяется ?
Или таки кто-то умеет perfmon'ом пользоваться ?

Можно и не по лампочкам. Но лампочки красивее и к железу ближе.
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610921
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyDefaultDbCachePages = 20482048 страниц для 50+ГБ БД ? Серьёзно ?
Может на уровне БД другое значение ?

shalamyanskyFW - это что?Forced Writes

Что показывает gstat -h для этой БД ?

shalamyanskyМожно и не по лампочкам. Но лампочки красивее и к железу ближе.Я разве говорил что-то про resource monitor ?
Кто-то знает, что у него синее, а что - зелёное ? И где physical IO, а где - logical IO ?

Запустите PerfMon и для начала создайте график с
Processor\Privileged Time,
Processor\User Time,
LogicalDisk\Disk Read Bytes/sec,
LogicalDisk\Disk Write Bytes/sec,
PhysicalDisk\Disk Read Bytes/sec,
PhysicalDisk\Disk Write Bytes/sec

Ещё я снял бы трассу запросов (с fbtracemgr или даже IBE) с логгированием триггеров и счётчиками производительности и посмотел бы что там делается в паузах дисковой активности
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610925
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky,

куча несуразностей

1. "Запущена процедура наполнения базы данными" - и что, процедура наполнения будет продолжать так же шарашить при "живых клиентах"?

2 "Firebird 3.03 SuperServer" + "DefaultDbCachePages = 2048" - это как понимать?
увеличивать кэш надо, и FileSystemCacheThreshold тоже.
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39610933
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyWindows 2012 R2

kdv2 "Firebird 3.03 SuperServer" + "DefaultDbCachePages = 2048" - это как понимать?
увеличивать кэш надо, и FileSystemCacheThreshold тоже.
При процитированном - не поможет.
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39611070
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

я уже не помню, у этой версии винды что-то не так с файловым кэшем?
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39611189
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvя уже не помню, у этой версии винды что-то не так с файловым кэшем?

Да. Хотя конкретно на тройку это не должно бы влиять, поскольку в ней уже не используется
флаг FILE_RANDOM_ACCESS, но всё равно там кэш агрессивнее, чем полезно для здоровья.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39611379
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv1. "Запущена процедура наполнения базы данными" - и что, процедура наполнения будет продолжать так же шарашить при "живых клиентах"?

Да. Ожидаются ежедневные пополнения. Не в таком объеме, как при первичной закачке, но тоже существенные.

hvlad2048 страниц для 50+ГБ БД ? Серьёзно ?

kdv2 "Firebird 3.03 SuperServer" + "DefaultDbCachePages = 2048" - это как понимать?
увеличивать кэш надо, и FileSystemCacheThreshold тоже.

Господа, ваши рекомендации в конкретных цифрах? Или по какой методике размеры кеша определять?
Все, что я смог почерпнуть в документации, (правда, для 2.5), это следующее:

Параметр DefaultDbCachePages используется для настройки количества стра-
ниц одной базы данных, находящихся в кэш-памяти одновременно. Суперсервер ис-
пользует единый кэш (2048 страниц) для всех подключений и автоматически увели-
чивает его при необходимости. Классик создает отдельный кэш (по умолчанию 75
страниц) для каждого соединения.
При изменении данных параметров следует учитывать особенности аппа-
ратно-программной платформы, других настроек сервера (TempBlockSize). Также,
определение оптимальных для конкретной задачи настроек хеширования данных
сервером может быть произведено экспериментальным путем.
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39611392
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky,

у тебя супер!!! Увеличивай кеш минимум в 20 раз.

http://www.ibase.ru/files/firebird/Firebird_Hardware_Guide_2015_rus.pdf

Например вот так
Код: plaintext
1.
2.
DefaultDbCachePages = 255K
FileSystemCacheThreshold = 256K
TempCacheLimit = 4096M

З.Ы. Надеюсь x64
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39611430
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyИли по какой методике размеры кеша определять?

Включаешь аудит производительности запросов, даёшь базе прогреться в реальном рабочем
режиме, анализируешь соотношение reads/fetches. В качестве абсолютного минимума можно из
gstat взять сумму размеров горячих индексов в страницах (сомневаюсь, что ты сможешь
вычислить размер горячих данных, прилагающихся к ним).

Это всё чисто абстракция без знания конкретной БД и способов работы с ней. Реальные вещи
имеют ещё дополнительные нюансы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39611485
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyГоспода, ваши рекомендации в конкретных цифрах? Или по какой методике размеры кеша определять?
про существование сайта ibase.ru вы, видимо, не в курсе.
И про раздел
http://www.ibase.ru/develop/
тоже.
и про документ
http://www.ibase.ru/files/firebird/Firebird_Hardware_Guide_2015_rus.pdf
в нем разве что про FileSystemCacheThreshold забыли упомянуть, что он должен быть больше DefaultDbCachePages, иначе файловый кэш ОС отрубится.
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39611527
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внял вашим рекомендациям, прочитал документ, посчитал кэш, поменял настройки. Спасибо. Помогло, но несильно. Измененные строки firebird.conf сейчас такие:

DefaultDbCachePages = 100000
FileSystemCacheThreshold = 2048M
FileSystemCacheSize = 25
TempCacheLimit = 1024M

Размер страницы базы 16384.

На картинке видны "импульсы". Скважность "импульсов" уменьшилась после добавки кэша, но до единицы еще далеко.

Про трассировку понял, проведу позже. Надо еще разобраться с этими инструментами.
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39611536
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvиначе файловый кэш ОС отрубится.

Возможно, в его случае это как раз будет к лучшему. Если, конечно, у него дисковая
подсистема хорошая.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39611544
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky,

еще бы в перфмоне счетчики отмасштабировать правильно, чтобы графики не упирались вверх.

shalamyanskyFileSystemCacheThreshold = 2048M
нафига это, если размер кэша поставлен 100000 страниц? Вы же потом не вспомните, зачем такое значение В СТРАНИЦАХ воткнули.
shalamyanskyFileSystemCacheSize = 25
тоже непонятно, почему 25%, а не 50%, к примеру.
shalamyanskyTempCacheLimit = 1024M
а что, есть запросы с сортировкой, или большие файлы fb_...tmp в папке temp?

А к перфмону еще надо добавить "длину очереди". Впрочем, может, что-то не так с контроллером диска?
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39611554
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyDefaultDbCachePages = 100000Вы уверены, что для ВСЕХ БД так нужно ?

shalamyanskyFileSystemCacheSize = 25Вернуть в 0 и перезагрузиться.
Не надо этот параметр трогать.
gstat -h мы увидим когда-нибудь ?
...
Рейтинг: 0 / 0
Большие паузы при наполнении базы
    #39618560
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за участие! Набрался полезных знаний, которые помогли разобраться в ситуации.

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


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