|Табл. 5. Переменные производительности
Имя переменной | Операционная система | Значения |
---|---|---|
Описание | ||
DB2_BINSORT | Все | По умолчанию=NO
Значения: YES или NO |
Включает новый алгоритм сортировки, уменьшающий использование
процессорного времени и общее время сортировок. Этот алгоритм
распространяет максимально эффективную технику сортировки целых чисел DB2 UDB
на все сортируемые типы данных, такие, как BIGINT, CHAR, VARCHAR, FLOAT и
DECIMAL, а также на сочетания этих типов. Чтобы включить этот новый
алгоритм, используйте команду:
db2set DB2_BINSORT = yes | ||
DB2_BLOCK_BASED_BP | Операционная среда Solaris | По умолчанию=Отсутствует
Значения: зависят от параметров |
Задает значения, определяющие создание блочной области внутри пула
буферов. Нужно задать ID пула буферов, который можно узнать в столбце
BUFFERPOOLID производной таблицы системного каталога
SYSCAT.BUFFERPOOLS. Необходимо задать число страниц, выделяемых
в пуле буферов для блочного ввода-вывода. Число страниц в блоке
задавать не обязательно; по умолчанию это число равно 32.
Формат этой переменной реестра: DB2_BLOCK_BASED_BP=ID пула буферов,размер области блока,[размер блока];... В одной переменной реестра можно определить блочные области для нескольких пулов буферов, задав значения для них через точку с запятой. Размер блока может быть от 2 до 256. Если BLOCK SIZE не задан, по умолчанию используется значение 32. Если заданный размер блочной области превышает 98% общего размера пула буферов, в этом пуле буферов не будет выделена блочная область. Всегда разумно оставлять некоторую часть пула буферов для страничной области, так как может потребоваться чтение отдельных страниц, даже если большая часть операций ввода-вывода в системе - это последовательная предварительная выборка. Если заданное значение размера блочной области не кратно размеру блока, в качестве размера блочной области используется меньшее значение - ближайший размер целого числа блоков. Дополнительную информацию о блочном вводе-выводе смотрите в разделе 10.2.1, Блочный пул буферов. | ||
DB2_NO_FORK_CHECK | UNIX | По умолчанию=OFF
Значения: ON или OFF |
Если эта переменная имеет значение "ON", процесс клиента не будет запрещать прикладной программе запускать копии этого процесса (это называется ветвлением). Ветвление может дать непредсказуемые результаты. Оно может не влиять на результаты или же давать некоторые неправильные результаты, может приводить к сообщениям об ошибках или к прерываниям работы прикладной программы. Если вы уверены, что прикладная программа не вызывает ветвления, и хотите улучшить производительность, измените значение этой переменной на "ON". | ||
DB2_MINIMIZE_LIST_PREFETCH | Все | По умолчанию=NO
Значения: YES или NO |
Предварительное чтение списка - это особый метод доступа к таблице,
предусматривающий получение нужных RID из индекса, их сортировку по номеру
страницы и затем предварительную выборку страниц данных.
Иногда оптимизатор не располагает точной информацией, чтобы решить, улучшится ли доступ за счет предварительной выборки списка. Это может случиться, когда предикаты selectivity содержат маркеры параметров или переменные хоста, не дающие оптимизатору использовать статистику каталога для определения избирательности. Переменная реестра не позволит оптимизатору предлагать предварительную выборку списка в таких ситуациях. | ||
DB2_INLIST_TO_NLJN | Все | По умолчанию=NO
Значения: YES или NO |
В некоторых ситуациях компилятор SQL может переписывать предикат списка
IN как объединение. Например, следующий запрос:
SELECT * FROM EMPLOYEE WHERE DEPTNO IN ('D11', 'D21', 'E21')можно переписать так: SELECT * FROM EMPLOYEE, (VALUES 'D11', 'D21', 'E21) AS V(DNO) WHERE DEPTNO = V.DNO Эта переделка может повысить производительность, если для DEPTNO есть индекс. Сначала список значений будет получен и присоединен к EMPLOYEE с объединением вложенного цикла с использованием индекса для применения предиката объединения. Иногда оптимизатор не располагает точной информацией, чтобы определить лучший метод объединения для переписанной версии запроса. Это может случиться, когда список IN содержит маркеры параметров или переменные хоста, не дающие оптимизатору использовать статистику каталога для определения избирательности. Эта переменная реестра заставит оптимизатор предпочесть объединения вложенных циклов для объединения списков значений при помощи таблицы, которая участвует в списке IN как внутренняя таблица в объединении. |
|Для переменной реестра DB2BPVARS поддерживаются два новых параметра: |NUMPREFETCHQUEUES и PREFETCHQUEUESIZE. Эти параметры поддерживаются на |всех системах и могут улучшить предварительную выборку данных для пула |буферов. Рассмотрим, например, последовательную предварительную |выборку, при которой PREFETCHSIZE разделен на PREFETCHSIZE/EXTENTSIZE |требований предварительной выборки. В этом случае требования помещаются |в очереди предварительной выборки, из которых серверы ввода/вывода выполняют |асинхронный ввод/вывод. По умолчанию DB2 поддерживает одну очередь |размера max(100, 2*NUM_IOSERVERS) для каждого раздела базы данных. В |некоторых средах производительность может вырасти, если задать большее число |очередей и/или очереди другого размера. Число очередей предварительной |выборки должно быть равно по крайней мере половине числа серверов |ввода-вывода. Задавая эти параметры, надо учесть также другие |параметры, такие как PREFETCHSIZE, EXTENTSIZE, NUM_IOSERVERS, размер пула |буферов и DB2_BLOCK_BASED_BP, а также характеристики рабочей нагрузки, |например, текущее число пользователей.
|Если вы думаете, что значения по умолчанию слишком малы для вашей среды,
|увеличьте эти значения сначала ненамного. Например, можно задать
|NUMPREFETCHQUEUES=4 и PREFETCHQUEUESIZE=200. Контролируйте значения
|этих параметров, чтобы отследить и оценить влияние таких изменений.
|
|Табл. 6. Сводка новых параметров
Имя параметра | Значение по умолчанию | Допустимый диапазон |
---|---|---|
NUMPREFETCHQUEUES | 1 | от 1 до NUM_IOSERVERS
если задается значение меньше 1, устанавливается 1 если задается значение больше NUM_IOSERVERS, устанавливается NUM_IOSERVERS |
PREFETCHQUEUESIZE | max(100,2*NUM_IOSERVERS) | от 1 до 32767
если задается значение меньше 1, устанавливается значение по умолчанию если задается значение больше 32767, устанавливается 32767 |
|Переменная реестра DB2_NEWLOGPATH2 доступна для всех
|операционных систем. Введена новая переменная -
|DB2_ROLLFORWARD_NORETRIEVE. Ниже представлена правильная информация
|для обеих этих переменных.
|
|Введена новая переменная - DB2_REDUCED_OPTIMIZATION.
|
|Табл. 8. Основные переменные реестра
Имя переменной | Операционная система | Значения |
---|---|---|
Описание | ||
DB2_REDUCED_OPTIMIZATION | ALL | По умолчанию=NO
Значения: YES, NO или любое целое число |
Эта переменная реестра позволяет запретить некоторые методы оптимизации,
используемые на конкретных уровнях оптимизации. При сокращении числа
используемых методов оптимизации уменьшаются также затраты времени и ресурсов
на выполнение оптимизации.
Имейте в виду, что динамическое снижение оптимизации на уровне 5, описанное в разделе Настройка класса оптимизации книги Руководство администратора: Производительность, имеет преимущество перед поведением, описанным для уровня оптимизации ровно 5 и значения DB2_REDUCED_OPTIMIZATION, равного YES или целому числу. |