Статьи

02.05.2024, 06:08
Меню сайта

Категории раздела
DB2 [6]
MSSQL [0]

Поиск
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Базы данных » DB2

Настройка размера буферных пулов

Анализ эффективности работы буферных пулов

Получить информацию о работе буферных пулов очень просто. Для этого в DB2 предусмотрен специальный монитор. Включается он командой

db2 update monitor switches using BUFFERPOOL ON


После того как монитор включен, можно получить снимок буферпулов для конкретной базы данных командой

db2 get snapshot for bufferpools on <DBNAME>


Ниже приведен фрагмент снимка буферпула V81C_INDEXBP

Имя пула буферов = V81C_INDEXBP
Имя базы данных = ASKU
Путь базы данных = E:\DB2\NODE0000\SQL00004\
Алиас входной базы данных = ASKU
Отметка времени снимка = 07.06.2010 11:36:50.407087

Логических чтений данных пула буферов = 31
Физических чтений данных пула буферов = 0
Логических чтений временных данных пула буферов = 0
Физических чтений временных данных пула буферов = 0
Записей данных пула буферов = 0
Логических чтений индекса пула буферов = 1502631
Физических чтений индекса пула буферов = 3936



Основным критерием эффективности работы буферпулов является соотношение количества логических и физических чтений. При логическом чтении данные считываются из памяти, при физическом - происходит считывание данных с внешнего носителя. В последних двух строках приведенного снимка буферпула видно, что количество логических чтений на 3 порядка превосходит количество физических чтений (В случае V81C_LARGEBP надо смотреть на строки "чтений данных пула"). Это идеальная ситауация для баз данных 1С, приемлемым считается превышение логических чтений над физическими на 2 порядка. Если соотношение логических и физических чтений меньше, то это говорит о том, что производительность не совсем оптимальная.

Оценка размеров информации в базе данных

Можно достаточно просто оценить какой размер буферных пулов вам необходим.
Выполнив запрос к базе данных можно получить информацию о размерах данных/индексов/бинарных объектах в базе данных DB2.

select sum(data_object_l_size) as data_size, sum(index_object_l_size) as index_size, sum(lob_object_l_size) as lob_size 
 from SYSIBMADM.ADMINTABINFO 
 where tabschema='USR1CV81'


USR1CV81в запросе выше - это имя схемы базы данных, в котрой 1С размещает таблицы. Фактически это имя пользователя, под которым 1С соединяется с базой данных DB2.

В результате вы получите размеры, выраженные в килобайтах. Например ниже приведены результаты для демо-конфигурации УПП.

DATA_SIZE INDEX_SIZE LOB_SIZE
-------------------- -------------------- --------------------
 3662336 2931264 213184

 

Настройка буферпулов для индексов и данных

Напомним, какие пары табличное пространство/буферный пул есть в базе данных 1C на DB2.

V81C_USERTEMP/V81C_USERTEMPBPиспользуются для временных таблиц.
V81C_TEMPSPACE/V81C_SYSTEMPBPиспользуется для внутренних сортировок и join'ов
V81C_LARGESPACE/V81C_LARGEBPиспользуются непосредственно для хранения данных, за исключением бинарных объектов.
V81C_LOBSPACE/V81C_LOBBPИспользуется для хранения бинарных объектов
V81C_INDEXSPACE/V81C_INDEXBPиспользуется для индексов



Зная объем хранимых данных и индексов можно расчитать какого размера (в страницах) надо иметь буферный пул, чтобы туда поместилась вся информация (идеальный случай).
Размер страницы буферного пула для данных V81C_LARGRBP 32 килобайта. Делим DATA_SIZE на 32 и получаем размер в страницах - 114448.
Размер страницы буферного пула для индексов V81C_INDEXBP 8 килобайт. Делим INDEX_SIZE на 8 и получаем размер в страницах - 366408.

Изменить размер буферного пула можно как через графический интерфейс Центра Управления DB2, так и непосредственно через команду alter bufferpool.

alter bufferpool V81C_LARGEBP size 114448 automatic;
alter bufferpool V81C_INDEXBP size 366408 automatic;



В случае, если в конце команды стоит AUTOMATIC, это означает, что самонастраивающийся менеджер памяти сможет автоматически изменять размер буферпулов в ходе работы системы. Если же AUTOMATIC убрать, то размер буферпулов будет жестко зафиксирован. Последний вариант лучше всего использовать в том случае, если размер базы сильно превышает объем доступной оперативной памяти для DB2. Например, если для развертывания базы используется бесплатная редакция DB2 Express-C, то объем доступной оперативной памяти ограничен в 2Гб, и увеличить буферные пулы до размеров, приведенных выше профсто физически невозможно. В данном случае, размер буферных пулов надо "вписать" в доступную оперативную память. Для бусплатной редакции DB2 Express-C рекомендуется под буферпулы данных и индексов выделить 1.4-1.6Гб и соразмерно распределить эту память между V81C_LARGEZBP и V81C_INDEXP без возможности управления размером буферпулов менеджером памяти DB2. При расчетах учитывайте, что размер задается в страницах, а размер страниц у этих буфйерпулов разный.

Настройка буферпулов для временных данных и сортировок

Как правило, ручной настройки V81C_USERTEMPBP V81C_SYSTEMPBP не требуется, хватает начальных значений и автоматического управления размером, за которое отвечает менеджер памяти DB2. Но воспользовавшись снимками буферных пулов, вы можете оценить, насколько эффективно работают эти части кэша DB2 и соответственно изменить их размеры.



Источник: https://www.ibm.com/developerworks/mydeveloperworks/wikis/home?lang=en#/wiki/Wc0d1a21236a5_4cb4_9d40_424193dcd115/page/%
Категория: DB2
Просмотров: 4032 | Теги: db2, конфигурирование, буферпул