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


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

Всё нижеследующее относится к 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>"	

Оптимизация размера блока и кластера BI-файла

База данных выполняет непрерывный процесс синхронизации содержимого разделяемой памяти с состоянием базы на диске, в рамках которого в фоновом режиме измененные блоки данных пишутся на диск. Новый цикл синхронизации начинается с открытием очередного кластера журнала 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

32 18:13:47   8693      0     713       0       0       0       0       0.02       0.00

31 17:11:42   3725   3725     729       0       0       0       0       0.06       0.01
30 16:47:51   1431   1431     266       0       0       0      12       0.02       0.01
...

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

Узнать текущий размер блока и кластера файла 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