В этом посте формула расчета необходимой для db2 памяти.
Итак, DB2 тратит память на:
Итак, DB2 тратит память на:
- Разделяемую память экземпляра
- Память экземпляра (instance_memory) — этот параметр целесообразно установить в Automatic
- Куча мониторинга (mon_heap_sz), использующаяся в целях мониторинга.
- Буфер аудита (audit_buf_sz), обеспечивающий возможность использования средства db2audit.
- Буферы быстрого взаимодействия (fcm_num_buffers), использующиеся для межузлового взаимодействия между разделами и агентами
- Разделяемую память базы данных:
- Куча баз данных dbheap — тоже AUTOMATIC
- Главные буферные пулы
- Скрытые буферные пулы — запускаются, чтобы сохранить бд в рабочем состоянии, если главные буферные пулы сконфигурированы не правильно.
- Кэш каталога, кэш пакетов (pckcachesz)
- LOCKLIST список блокировок
- Сервисная куча util_heap_sz - память для различных сервисных утилит: восстановление, копирование, экспорт, импорт, загрузка, перестроение индексов. Для обслуживания БД
- Важно помнить, что в момент запуска каждой базы данных DB2, она сразу же отжирает оперативную память под буферные пулы, кучу базы данных, кучу блокировки, кэши
- Память сервисной кучи (util_heap_sz) и память для сортировки (sheapthres_shr)
- выделяется по мере необходимости.
- Сколько памяти выделено для баз db2 можно узнать с помощью утилиты
- db2mtrk -i -v -d
- А также расчитать по формуле:
- Размер разделяемой памяти БД =
- главные буферные пулы
- + 4 скрытых буферных пула (по 4, 8, 16, 32 KB)
- + куча БД (dbheap)
- + locklist
- + кэш пакетов (pckcachesz) + кэш каталога (catalogcache_sz)
- + сервисная куча (util_heap_sz)
- + (количество страниц estore * 100 Байтов) + ~ 10% дополнительного объема
-
- Кэш пакетов (pckcachesz) и кэш каталога (catalogcache_sz) расчитываются динамически
- pckcachesz = maxappls * 8
- catalogcache_sz = maxappls * 4
- Где maxappls = Automatic – максимальное число динамических приложений
-
- Таким образом, производительность работы главным образом зависит от настройки буферных пулов.
- И к их созданию и конфигурации стоит подойти со всей ответственностью )
- Посмотреть сколько оперативной памяти будут занимать буферные пулы
- db2 "select BPNAME, BUFFERPOOLID, NPAGES*ceil(PAGESIZE*0.001) from syscat.bufferpools union select 'all', 0, sum(NPAGES*ceil(pagesize*0.001))from syscat.bufferpools"
Картинка с ibm