Замечания по выпуску


|9.2 Глава 8. Производительность работы

|9.2.1 Блочный пул буферов

| | | | |

|Эта возможность поддерживается только в операционной среде Sun |Solaris.

|Затраты на ввод-вывод делают предварительную выборку страниц с диска |дорогостоящей операцией. В DB2 предварительная выборка значительно |улучшает производительность, если обработка может выполняться одновременно с |вводом-выводом. На большинстве платформ доступны высокопроизводительные |операции чтения последовательно идущих страниц с диска в отдельные участки |памяти. Такие операции обычно называют "чтением последовательных |страниц" или "направленным вводом-выводом". На некоторых |платформах производительность этих операций падает при выполнении ввода-вывода |больших блоков данных. По умолчанию используются страничные пулы |буферов. Это значит, чти идущие подряд страницы на диске считываются в |отдельные страницы в памяти. На таких платформах производительность |предварительной выборки можно повысить, если читать страницы с диска в идущие |подряд страницы в пуле буферов. Переменная реестра DB2_BLOCK_BASED_BP |позволяет создать в пуле буферов область для хранения набора последовательных |страниц. Такие наборы последовательных страниц называются |"блоками". Когда задана эта переменная реестра, при |предварительной выборке идущих подряд страниц эти страницы будут считываться с |диска напрямую в эти блоки вместо чтения страниц по одной. Это улучшает |производительность операций ввода-вывода. Дополнительную информацию об |этой переменной реестра смотрите в разделе 'Registry and Environment |Variables' (Переменные реестра и среды) книги Руководство |администратора. |

|С пулом буферов с одним размером блока могут быть связаны несколько |табличных пространств с разными размерами экстента. Размеры экстентов и |размеры блоков тесно связаны друг с другом, хоть это и разные понятия. |Экстент определяет размер дробления табличного пространства при его |распределении по нескольким контейнерам. Блок же определяет размер |дробления, который используется серверами ввода-вывода для блочных операций |ввода-вывода при выполнении запросов последовательной предварительной |выборки.

|Для отдельных запросов последовательной предварительной выборки |используются страницы, равные размеру экстента. Получив такой запрос |предварительной выборки, сервер ввода-вывода определяет стоимость и выгодность |выполнения каждого запроса в виде блочной операции ввода-вывода (если в пуле |буферов есть блочная область) по сравнению с выполнением страничного |ввода-вывода с помощью чтения последовательных страниц. Выгодность |выполнения операции ввода-вывода в виде блочной операции - это выигрыш в |производительности за счет чтения последовательных данных с диска в |последовательную область памяти. Стоимость определяется тем, какой |объем памяти пула буферов расходуется при этом впустую.

|При блочном вводе-выводе память пула буферов может расходоваться впустую по |двум причинам. |

|Прим.:
Ни один блок из блочной области пула буферов не может быть поделен на |части. Страницы внутри блока должны идти подряд. Поэтому |возможно расходование памяти впустую. |

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

|Для получения наилучшей производительности для табличных пространств с |конкретным размером экстента следует использовать пул буферов с тем же |размером блока. Хорошей производительности можно достичь и когда размер |экстента некоторых табличных пространств превышает размер блока пула буферов, |связанного с этими табличными пространствами. Но не рекомендуется |связывать табличные пространства с пулом буферов, размер блока которого больше |размера их экстента.

|Прим.:
Блочная область пула буферов используется только для последовательной |предварительной выборки. Если последовательная предварительная выборка |используется мало или не используется совсем, блочная область пула буферов |будет простаивать.

|Для пула буферов нельзя одновременно использовать поддержку Address |Windowing Extensions (AWE) и поддержку блоков. Если в обеих переменных |реестра DB2_AWE и DB2_BLOCK_BASED_BP задан один и тот же пул буферов, |предпочтение отдается AWE. В этом случае поддержка блоков будет |отключена; она будет вновь разрешена после отключения AWE.

|Для пула буферов, использующего расширенную память, блочный ввод-вывод не |поддерживается. |

|9.2.1.1 Примеры блочных пулов буферов

| |

|Прежде, чем использовать эти примеры, вам нужно узнать идентификаторы (ID) |пулов буферов в вашей системе. ID пула буферов можно увидеть в столбце |BUFFERPOOLID производной таблицы системного каталога |SYSCAT.BUFFERPOOLS.

|Сценарий 1

|У вас есть пул буферов с ID 4 и размером в 1000 страниц. Вы хотите |создать блочную область размером в 700 страниц с блоками по 32 |страницы. Вам нужно выполнить команду:

|   db2set DB2_BLOCK_BASED_BP=4,700,32

|При запуске базы данных будет создаваться пул буферов с ID 4, содержащий |блочную область в 672 страницы и страничную область в 328 страницы. В |этом примере 700 не делится нацело на 32. Поэтому в качестве размера |блочной области будет взято меньшее значение - ближайший размер целого числа |блоков, вычисленный по следующей формуле:

|        ((размер блочной области))
|   FLOOR(-----------------) X размер блока
|        ( (размер блока)  )
|        (       700       )
| = FLOOR(-----------------) X 32
|        (       32        )
| = 21 x 32
| = 672

|Сценарий 2

|У вас есть пул буферов с ID 11 и размером в 3000 страниц. Вы хотите |создать блочную область размером в 2700 страниц. Вам нужно выполнить |команду:

|   db2set DB2_BLOCK_BASED_BP=11,2700

|При запуске базы данных будет создаваться пул буферов с ID 11, содержащий |блочную область в 2688 страницы и страничную область в 312 страницы. |Если размер блока не задан явно, по умолчанию используется значение 32 |страницы. В этом примере 2700 не делится нацело на 32. Поэтому в |качестве размера блочной области будет взято меньшее значение - ближайший |размер целого числа блоков, вычисленный по следующей формуле:

|        ((размер блочной области))
|   FLOOR(-----------------) X размер блока
|        ( (размер блока)  )
|        (      2700       )
| = FLOOR(-----------------) X 32
|        (       32        )
| = 84 x 32
| = 2688


[ Начало страницы | Страница назад | Страница вперед | Содержание | Индекс ]