Поиск по этому блогу

среда, 21 декабря 2011 г.

Администрирование 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


Картинка с ibm

А также расчитать по формуле:
Размер разделяемой памяти БД =
главные буферные пулы
+ 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"