Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
dvp:db:parameters [2013/04/10 21:45]
serge старая ревизия восстановлена
dvp:db:parameters [2017/07/25 11:07] (текущий)
serge [Перестройка индексов (начиная с 10.2B06)]
Строка 1: Строка 1:
 ====== Настройка производительности БД ====== ====== Настройка производительности БД ======
  
-Всё нижеследующее относится к OpenEdge 10.1С/​10.2B,​ в которой большинство остальных параметров по умолчанию выставлены в оптимальное значение.+Всё нижеследующее относится к OpenEdge 10.1С/​10.2B,​ в которой большинство остальных параметров по умолчанию выставлены в оптимальное значение. Выбор средств оптимизации работы брокера зависит от того, какая лицензия на OpedEdge DB используется. Многие действенные средства оптимизации недоступны в лицензиях ниже Enterprise DB.
  
-=== Параметры ​БД в скрипте ​bq41d ===+===== Рекомендуемые параметры ​запуска брокера Progress для оптимизации производительности ​===== 
 +В запускающем скрипте ''​bq41d''​ собраны все основные параметры,​ влияющие на производительность данного инстанса БД:
   RunAPW="​yes"​ #​ Запускать Async Page Writer ? (yes/no)   RunAPW="​yes"​ #​ Запускать Async Page Writer ? (yes/no)
   BQNAPW="​2"​ #​ Сколько именно процессов Async Page Writer запускать (1-2) ?   BQNAPW="​2"​ #​ Сколько именно процессов Async Page Writer запускать (1-2) ?
   RunBIW="​yes"​ #​ Запускать Before-Image Writer ? (yes/no)   RunBIW="​yes"​ #​ Запускать Before-Image Writer ? (yes/no)
   RunAIW="​yes"​ #​ Запускать After-Image Writer ? (yes/no)   RunAIW="​yes"​ #​ Запускать After-Image Writer ? (yes/no)
-  BQNdbbufs="​131072" # Буфер кэша БД в блоках,​ рекомендуется = 2% от размера БД, в примере ​= 1 ГБ+  BQNdbbufs="​350000" # Буфер кэша БД в блоках,​ рекомендуется = 2% от размера БД, в примере ​~ 2.8 ГБ для размера блока 8КБ
   BQNlocks="​200000"​ #​ Общее число блокировок в БД, рекомендуется = <​кол-во лицевых счетов>​ * 2   BQNlocks="​200000"​ #​ Общее число блокировок в БД, рекомендуется = <​кол-во лицевых счетов>​ * 2
   BQParams="​-semsets <​BQNusers/​20-50>"​    BQParams="​-semsets <​BQNusers/​20-50>"​
 +Остальные параметры,​ которые едины для всех брокеров БД на данном сервере,​ рекомендуется определять в файле [[dvp:​client:​parameters|bisquit.pf]].
 +Чтобы изменённые параметра вступили в действие,​ необходимо перезапустить брокер БД: ''​bq41d stop; bq41d start''​.
 +
 +==== Размер буферного пула базы (параметр BQNdbbufs) ====
 +Значение параметра задается в блоках базы данных. Рекомендуемое начальное значение для основной базы – 2% от размера БД. С течением времени это значение необходимо корректировать,​ учитывая показания Progress Monitor'​а - ''​bq41d mon''​ -> 5. Activity, и наблюдать значение поля “Buffer Hits”. В момент активной работы с базой оно не должно быть меньше 95%, рекомендуется поддерживать значение на уровне 98-99%.
 +  * Если значение поля “Buffer Hits” < 98%, параметр –B необходимо увеличить.
 +  * Если значение поля “Buffer Hits” >= 99%, параметр –B увеличивать бессмысленно.
 +Слишком большое значение параметра ведет к непроизводительному расходу памяти и может быть причиной падения производительности.
 +
 +Чтобы изменить размер буферного пула для следующего старта брокера в запускающем скрипте ''​bq41d''​ установите значение переменной:​
 +  BQNdbbufs="​131072"​ #​ Буфер кэша БД в блоках,​ рекомендуется = 2% от размера БД, в примере = 1 ГБ
 +и перезапустите брокер БД.
 +
 +Размер буферного пула можно изменить и при работающем брокере с помощью утилиты [[http://​knowledgebase.progress.com/​articles/​Article/​P134321|PROUTIL INCREASETO]],​ для этого выполните,​ например,​ команду:​
 +  $ bq41d increaseto -B 262144
 +  OpenEdge Release 10.2B07 as of Fri Sep  7 02:15:05 EDT 2012
 +   
 +  Waiting for Broker connection to newly added shared memory segments. (14269)
 +  Increase Params increasing buffer pools size (-B) from 131072 to 262144. (13980)
 +
 +==== Размер таблицы блокировок (параметр BQNlocks) ====
 +Рекомендуемое значение параметра равно удвоенному количеству лицевых счетов. Значение параметра необходимо увеличить при получении сообщения Progress “SYSTEM ERROR: Record lock table too small. Increase -L parameter.”
 +
 +Слишком большое значение параметра ведет к непроизводительному расходу памяти и снижению производительности.
 +
 +Чтобы изменить размер таблицы блокировок для следующего старта брокера в запускающем скрипте ''​bq41d''​ установите значение переменной:​
 +  BQNlocks="​200000"​ #​ Общее число блокировок в БД, рекомендуется = <​кол-во лицевых счетов>​ * 2
 +и перезапустите брокер БД.
 +
 +Размер таблицы блокировок можно изменить и при работающем брокере с помощью утилиты [[http://​knowledgebase.progress.com/​articles/​Article/​P134321|PROUTIL INCREASETO]],​ для этого выполните,​ например,​ команду:​
 +   $ bq41d increaseto -L 400000
 +   ​OpenEdge Release 10.2B07 as of Fri Sep  7 02:15:05 EDT 2012
 +   
 +   ​Increase Params increasing lock table size (-L) from 200000 to 400000 . (13979)
 +
 +==== Количество попыток спин-блокировки (-spin) ====
 +Этот параметр доступен в лицензии не ниже Enterprise, в лицензии Workgroup он заблокирован в значение 1. Рекомендуемое начальное значение - 5000. В дальнейшем,​ значение параметра необходимо периодически корректировать. Для этого наблюдайте значения поля “sema” (“sema/​s”) в выводе команды sar –m и значение поля “%sys” в выводе команды sar –u за 1-2 типовых рабочих дня. При наличии в поле “sema” значений,​ измеряющихся сотнями и тысячами,​ попробуйте увеличивать (по 1000-2000) значение параметра -spin, наблюдая,​ чтобы это не приводило к заметному увеличению среднего значения поля “%sys”. При этом пиковые значения поля “sema” должны уменьшаться.
 +
 +Изменять значение параметра рекомендуется в файле ''​bisquit.pf''​ одновременно для всех брокеров на данном сервере.
 +
 +==== Количество наборов семафоров(-semsets) ====
 +Этот параметр доступен в лицензии не ниже Enterprise DB. По умолчанию значение параметра равно 3. При большом (сотни) количестве одновременно работающих пользователей необходимо его увеличить для начала до значения,​ равного количеству одновременно работающих пользователей,​ поделенное на 50. При этом должно уменьшаться значение поля “sema” (“sema/​s”) вывода команды sar –m.
 +
 +Изменить значение параметра можно, дописав через пробел параметр со значением в список параметров,​ определенных в переменной BQParams запускающего скрипта.
 +
 +==== Использование асинхронной записи в файлы базы данных ====
 +=== Запуск Async Page Writer ===
 +Возможность асинхронной записи в файлы базы данных доступна в лицензии не ниже Enterprise. Для включения асинхронной записи необходимо запустить как минимум один специальный агент (APW). Процесс APW можно запустить при старте брокера. Для этого в запускающем скрипте bq41d  установите значения переменных:​
 +  RunAPW="​yes"​ #​ Запускать Async Page Writer ? (yes/no)
 +  BQNAPW="​2"​ #​ Сколько именно процессов Async Page Writer запускать (1-2) ?
 +и перезапустите брокер БД.
 +
 +В дальнейшем количество APW можно корректировать,​ исходя из показаний ''​bq41d mon''​ -> “5. Activity” и наблюдая значение поля “Writes by APW”. При активной работе с базой оно должно быть порядка 90%.
 +
 +Если значение поля “Writes by APW” значительно меньше,​ следует увеличить количество APW либо при работающем брокере (утилитой ''​bq41d exec proapw $BQ/​db/​bisquit''​),​ либо с перезапуском брокера,​ изменив значение переменной BQNAPW в запускающем скрипте.
 +
 +=== Запуск Before Image Writer ===
 +Для асинхронной записи в журнал before-image также используется специальный агент (BIW). В отличие от APW, BIW может быть запущен только один. Чтобы запустить BIW при старте брокера в запускающем скрипте ''​bq41d''​ установите значение переменной:​
 +  RunBIW="​yes"​ # Запускать Async Before-Image Writer ? (yes/no)
 +и перезапустите брокер БД.
 +
 +=== Запуск After Image Writer ===
 +Для асинхронной записи в журнал after-image также используется специальный агент (AIW), который тоже может быть запущен только один. Чтобы запустить AIW при старте брокера в запускающем скрипте ''​bq41d''​ установите значение переменной:​
 +  RunAIW="​yes"​ #​ Запускать After-Image Writer ? (yes/no)
 +и перезапустите брокер БД.
  
-=== Оптимизация размера блока и кластера журнала before-image ===+===== Оптимизация размера блока и кластера журнала before-image ​=====
 База данных выполняет непрерывный процесс синхронизации содержимого разделяемой памяти с состоянием базы на диске, в рамках которого в фоновом режиме измененные блоки данных пишутся на диск. Новый цикл синхронизации начинается с открытием очередного кластера журнала before-image. Увеличение размера кластера журнала before-image приводит к увеличению интервала между контрольными точками,​ что дает процессам записи APWs необходимое время для их работы. База данных выполняет непрерывный процесс синхронизации содержимого разделяемой памяти с состоянием базы на диске, в рамках которого в фоновом режиме измененные блоки данных пишутся на диск. Новый цикл синхронизации начинается с открытием очередного кластера журнала before-image. Увеличение размера кластера журнала before-image приводит к увеличению интервала между контрольными точками,​ что дает процессам записи APWs необходимое время для их работы.
  
-Для проверки эффективности обработки транзакций необходимо выяснить частоту выполнения контрольных точек, используется экран Checkpoints утилиты ​**bq41d mon** -> R&D -> 3. Other -> 4. Checkpoints. Например:​+Для проверки эффективности обработки транзакций необходимо выяснить частоту выполнения контрольных точек, используется экран Checkpoints утилиты ​''​bq41d mon'' ​-> R&D -> 3. Other -> 4. Checkpoints. Например:​
   Ckpt                                  ------ Database Writes ------   Ckpt                                  ------ Database Writes ------
   No. Time       ​Len ​  ​Freq ​  ​Dirty ​  CPT Q    Scan   APW Q Flushes ​  ​Duration ​ Sync Time   No. Time       ​Len ​  ​Freq ​  ​Dirty ​  CPT Q    Scan   APW Q Flushes ​  ​Duration ​ Sync Time
Строка 30: Строка 96:
 Увеличение размера блока, используемого для работы с журналом before-image,​ также увеличивает производительность. Но желательно,​ чтобы размер блока журнала before-image совпадал с размером блока базы данных. Увеличение размера блока, используемого для работы с журналом before-image,​ также увеличивает производительность. Но желательно,​ чтобы размер блока журнала before-image совпадал с размером блока базы данных.
  
-Узнать текущий размер блока и кластера журнала before-image можно, запустив утилиту ​**bq41d mon** -> R&D -> 1. Status Displays -> 9. BI Log. Например:​+Узнать текущий размер блока и кластера журнала before-image можно, запустив утилиту ​''​bq41d mon'' ​-> R&D -> 1. Status Displays -> 9. BI Log. Например:​
   Before-image block size:           8192 bytes   Before-image block size:           8192 bytes
   Before-image cluster size:         512 kb (524288 bytes)   Before-image cluster size:         512 kb (524288 bytes)
Строка 36: Строка 102:
 Изменить размер блока журнала before-image можно следующим образом (размер блока указывается в килобайтах):​ Изменить размер блока журнала before-image можно следующим образом (размер блока указывается в килобайтах):​
   bq41d stop   bq41d stop
-  bq41d trunc –biblocksize ​8+  bq41d trunc –biblocksize ​16
 Изменить размер кластера журнала before-image можно следующим образом (размер кластера указывается в килобайтах) : Изменить размер кластера журнала before-image можно следующим образом (размер кластера указывается в килобайтах) :
   bq41d stop   bq41d stop
Строка 42: Строка 108:
 Возможно одновременное изменение размеров блока и кластера журнала before-image:​ Возможно одновременное изменение размеров блока и кластера журнала before-image:​
   bq41d stop   bq41d stop
-  bq41d trunc –biblocksize ​-bi 16384+  bq41d trunc –biblocksize ​16 -bi 16384
  
   OpenEdge Release 10.2B07 as of Fri Sep  7 02:15:05 EDT 2012   OpenEdge Release 10.2B07 as of Fri Sep  7 02:15:05 EDT 2012
Строка 49: Строка 115:
   Before-image block size set to 8 kb (8192 bytes). (3781)   Before-image block size set to 8 kb (8192 bytes). (3781)
  
-=== Перестройка индексов (начиная с 10.2B06) ===+===== Перестройка индексов (начиная с 10.2B06) ​=====
 Предполагается,​ что: Предполагается,​ что:
-  * 50% оперативной памяти и 16 процессорных ядер могут быть выделены под процесс перестройки индексов+  * 50% оперативной памяти и процессорных ядра могут быть выделены под процесс перестройки индексов
   * индексы располагаются в отдельных областях БД (подробнее - [[dvp:​db:​structure|Рекомендуемая структура БД QBIS.Bank]])   * индексы располагаются в отдельных областях БД (подробнее - [[dvp:​db:​structure|Рекомендуемая структура БД QBIS.Bank]])
-  * в каталоге,​ указанном в параметре -T в файле bisquit.pf, имеется достаточное кол-во свободного пространства для размещения временных файлов сортировки+  * в каталоге,​ указанном в параметре -T в файле ​''​bisquit.pf''​, имеется достаточное кол-во свободного пространства для размещения временных файлов сортировки, либо заранее был создан файл ''​bisquit.srt''​.
  
   bq41d stop   bq41d stop
Строка 69: Строка 135:
   bq41d truncate area "​text-i"​   bq41d truncate area "​text-i"​
   bq41d truncate area "​mart-i"​   bq41d truncate area "​mart-i"​
-  bq41d idxbuild all -mergethreads ​–threadnum ​-datascanthreads ​16 -B 1024 –TF 50 –TMB 64 –TB 64 –TM 32 -rusage -silent+  bq41d idxbuild all -mergethreads ​–threadnum ​-datascanthreads ​-B 1024 –TF 50 –TB 64 –TM 32 -rusage -silent 
 +   
 +{{tag>​progress prodb performance}}