Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
dvp:db:parameters [2013/04/10 20:52]
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"​ #​ Сколько именно ​AP Writer'​ов (n_disks+1) ?+  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" # Буфер кэша БД в блоках,​ рекомендуется = <размер БД> * 1-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''​.
  
-=== Оптимизация размера блока и кластера ​BI-файла ===+==== Размер буферного пула базы (параметр 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 приводит к увеличению интервала между контрольными точками,​ что дает процессам записи APWs необходимое время для их работы. База данных выполняет непрерывный процесс синхронизации содержимого разделяемой памяти с состоянием базы на диске, в рамках которого в фоновом режиме измененные блоки данных пишутся на диск. Новый цикл синхронизации начинается с открытием очередного кластера журнала before-image. Увеличение размера кластера журнала before-image приводит к увеличению интервала между контрольными точками,​ что дает процессам записи APWs необходимое время для их работы.
  
-Узнать текущий размер блока и кластера файла before-image можно, запустив утилиту **bq41d mon** -> R&D -> 1. Status Displays -> 9. BI Log. Например:​ +Для проверки эффективности обработки транзакций необходимо выяснить частоту выполнения контрольных точекиспользуется экран Checkpoints утилиты ​''​bq41d mon'' ​-> R&D -> 3. Other -> 4. Checkpoints. Например:​
-  Before-image block size:           8192 bytes +
-  Before-image cluster size:         512 kb (524288 bytes) +
-Для проверки эффективности обработки транзакций необходимо выяснить частоту выполнения контрольных точек используется экран 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 
 +   
 +  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, или повысить производительность дисков по записи.
  
-  32 18:​13:​47 ​  ​8693 ​     0     ​713 ​      ​0 ​      ​0 ​      ​0 ​      ​0 ​      0.02       0.00+Увеличение размера блока, используемого для работы с журналом before-image,​ также увеличивает производительностьНо желательно,​ чтобы размер блока журнала before-image совпадал с размером блока базы данных.
  
-  31 17:​11:​42 ​  ​3725 ​  ​3725 ​    ​729 ​      ​0 ​      ​0 ​      ​0 ​      ​0 ​      ​0.06 ​      ​0.01 +Узнать текущий размер ​блока и кластера журнала ​before-image можно, запустив утилиту ''​bq41d mon''​ -> R&D -> 1. Status Displays -> 9. BI Log. Например
-  30 16:​47:​51 ​  ​1431 ​  ​1431 ​    ​266 ​      ​0 ​      ​0 ​      ​0 ​     12       ​0.02 ​      ​0.01 +  Before-image block size:           8192 bytes 
-  ... +  Before-image cluster size:         512 kb (524288 bytes)
-В идеальном состоянии интервал между проверками должен составлять около минуты или более, а число буферов, сброшенных ​на диск в контрольной точке (колонка Flushes), должно ​быть равным или близко к нулю. Если они короче минуты, то следует увеличить размер кластера. Однако его не следует делать слишком большим,​ оно не должно превышать 131072.+
  
-Изменить размер блока ​файла before-image можно следующим образом (размер блока указывается в байтах):​+Изменить размер блока ​журнала before-image можно следующим образом (размер блока указывается в килобайтах):​
   bq41d stop   bq41d stop
-  bq41d trunc –biblocksize ​8 +  bq41d trunc –biblocksize ​16 
-Изменить размер кластера ​файла before-image можно следующим образом (размер кластера указывается в килобайтах) :+Изменить размер кластера ​журнала before-image можно следующим образом (размер кластера указывается в килобайтах) :
   bq41d stop   bq41d stop
   bq41d trunc -bi 16384   bq41d trunc -bi 16384
-Возможно одновременное изменение размеров блока и кластера ​файла 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 
 +   
 +  Before-image cluster size set to 16384 kb. (1620) 
 +  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
Строка 59: Строка 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}}