Это старая версия документа.


Настройка производительности БД

Всё нижеследующее относится к OpenEdge 10.1С/10.2B, в которой большинство остальных параметров по умолчанию выставлены в оптимальное значение.

Параметры БД в скрипте bq41d

RunAPW="yes"			# Запускать Async Page Writer ? (yes/no)
BQNAPW="2"			# Сколько именно AP Writer'ов (n_disks+1) ?
RunBIW="yes"			# Запускать Before-Image Writer ? (yes/no)
RunAIW="yes"			# Запускать After-Image Writer ? (yes/no)
BQNdbbufs="131072"		# Буфер кэша БД в блоках, рекомендуется = <размер БД> * 1-2%, в примере = 1 ГБ
BQNlocks="200000"		# Общее число блокировок в БД, рекомендуется = <кол-во лицевых счетов> * 2
BQParams="-semsets <BQNusers/20-50>"	

Оптимизация размера блока и кластера журнала before-image

База данных выполняет непрерывный процесс синхронизации содержимого разделяемой памяти с состоянием базы на диске, в рамках которого в фоновом режиме измененные блоки данных пишутся на диск. Новый цикл синхронизации начинается с открытием очередного кластера журнала before-image. Увеличение размера кластера журнала before-image приводит к увеличению интервала между контрольными точками, что дает процессам записи APWs необходимое время для их работы.

Для проверки эффективности обработки транзакций необходимо выяснить частоту выполнения контрольных точек, используется экран Checkpoints утилиты bq41d mon → R&D → 3. Other → 4. Checkpoints. Например:

Ckpt                                  ------ Database Writes ------
No. Time       Len   Freq   Dirty   CPT Q    Scan   APW Q Flushes   Duration  Sync Time

29 15:35:08    113      0    3088       0       0       0       0       0.21       0.17

28 15:35:01      7      7    4254       0       0       0    1483       0.11       0.08
27 15:34:49     12     12    4277       0       0       0     752       0.09       0.06
26 15:34:39     10     10    3915       0       0       0     826       0.08       0.05
25 15:34:26     13     13    4385       0       0       0     598       1.21       1.15
...

В идеальном состоянии интервал между проверками (колонка Len) должен составлять около минуты или более, а число буферов, сброшенных на диск в контрольной точке (колонка Flushes), должно быть равным или близко к нулю. Если интервалы короче минуты, то следует увеличить размер кластера. Однако его не следует делать слишком большим, оно не должно превышать 131072 КБ. Если число сброшенных буферов больше 10, то также следует увеличить размер кластера, или увеличить число фоновых процессов APW, или повысить производительность дисков по записи.

Увеличение размера блока, используемого для работы с журналом before-image, также увеличивает производительность. Но желательно, чтобы размер блока журнала before-image совпадал с размером блока базы данных.

Узнать текущий размер блока и кластера журнала before-image можно, запустив утилиту bq41d mon → R&D → 1. Status Displays → 9. BI Log. Например:

Before-image block size:           8192 bytes
Before-image cluster size:         512 kb (524288 bytes)

Изменить размер блока журнала before-image можно следующим образом (размер блока указывается в байтах):

bq41d stop
bq41d trunc –biblocksize 8

Изменить размер кластера журнала before-image можно следующим образом (размер кластера указывается в килобайтах) :

bq41d stop
bq41d trunc -bi 16384

Возможно одновременное изменение размеров блока и кластера журнала before-image:

bq41d stop
bq41d trunc –biblocksize 8 -bi 16384

Перестройка индексов (начиная с 10.2B06)

Предполагается, что:

  • 50% оперативной памяти и 16 процессорных ядер могут быть выделены под процесс перестройки индексов
  • индексы располагаются в отдельных областях БД (подробнее - Рекомендуемая структура БД QBIS.Bank)
  • в каталоге, указанном в параметре -T в файле bisquit.pf, имеется достаточное кол-во свободного пространства для размещения временных файлов сортировки
bq41d stop
bq41d trunc
bq41d backup
bq41d truncate area "op-i"
bq41d truncate area "history-i"
bq41d truncate area "signs-i"
bq41d truncate area "olap-i"
bq41d truncate area "other-i"
bq41d truncate area "perm-i"
bq41d truncate area "acct-i"
bq41d truncate area "pos-i"
bq41d truncate area "msg-i"
bq41d truncate area "text-i"
bq41d truncate area "mart-i"
bq41d idxbuild all -mergethreads 2 –threadnum 2 -datascanthreads 16 -B 1024 –TF 50 –TMB 64 –TB 64 –TM 32 -rusage -silent