Тюнинг таблицы локировок
Когда пользователи выполняют операции создания, чтения, изменения и удаления (CRUD) записей, они конкурируют за доступ к таблице локировок (Lock table). Чем больше выполняется параллельных CRUD-операций, тем выше конкуренция за локировки в таблице локировок и тем более низкая будет производительность.
Параметр старта Lock Table Entries (-L) устанавливает максимально допустимое количество локированных записей в базе данных в любой момент времени. Когда пользователь получает доступ и локирует запись, тогда используется запись в таблице локировок.
Администратор должен следить за использованием таблицы локировок, чтобы своевременно обнаружить приближение к предельному количеству, установленному параметром -L. По умолчанию значение параметра равно 8192. Если обнаружено, что количество локировок приближается к лимиту, например, достигло 90%, то для улучшения производительности необходимо увеличить значение параметра -L.
Для мониторинга таблицы локировок можно использовать PROMON или OpenEdge Management.
Мониторинг таблицы локировок в PROMON
Для мониторинга таблицы локировок с помощью PROMON выполняется следующая процедура:
- Запустить PROMON с подключением к работающей базе данных.
- В поле Enter your selection ввести R&D, нажать клавишу Enter.
- В меню Main (Top) Menu ввести 1 (Status Displays), нажать клавишу Enter.
- В меню Status Displays ввести 13 (Shared Resources). На экране отобразится информация об общих ресурсах базы данных.
Active transactions: 0 Lock table entries in use: 26665 of 100000 Lock table high water mark: 87562 Primary object cache (-omsize): Total: 1024 Used: 283 Pinned: 0 Secondary object cache (-omsize): Total: 1024 Used: 0 Pinned: 0 Primary MT cache (-mtpmsize): Total: 1024 Used: 0 Pinned: 0 Secondary MT cache (-mtpmsize): Total: 1024 Used: 0 Pinned: 0 Number of servers: 2 (5 allocated) Total users: 1 (20 allocated) Self-service: 1 Remote: 0 Batch: 0
Обратите внимание на значение Lock table entries in use, которое показывает количество локировок, используемых сейчас, и количество доступных локировок. Также обратите внимание на значение Lock table high water mark, которое показывает максимальное количество задействованных локировок за период наблюдения. Если это значение приближается к установленному лимиту, то увеличьте параметр –L.
Мониторинг таблицы локировок в OpenEdge Management
Для мониторинга таблицы локировок с помощью OpenEdge Management необходимо в OpenEdge Management на странице управления базой данных в секции Operational Views щёлкнуть мышью по ссылке Locks and Latches.
На открывшейся странице в секции Lock summary посмотреть на значения Locks in use и Most locks in use. Метрика Most locks in use эквивалентна метрике Lock table high water mark в PROMON. Если значение этой метрики приближается к установленному значению параметра -L, то увеличьте значение параметра для минимизации конкуренции за локировки и улучшения производительности.
Настройка правила мониторинга таблицы локировок
В качестве альтернативного варианта ручному мониторингу таблицы локировок, в OpenEdge Management можно настроить правило мониторинга, с помощью которого указывается допустимое пороговое значение параметра -L. Если количество локировок записей в базе данных достигнет установленного предела, то OpenEdge Management автоматически сгенерирует предупреждение (alert).
Для настройки правила мониторинга таблицы локировок необходимо:
- В меню OpenEdge Management выбрать Resources -> Go to Resources. Откроется страница со списком сконфигурированных OpenEdge-ресурсов.
- Прокрутить список и щёлкнуть мышью по имени ресурса базы данных, для которой необходимо создать правило мониторинга. Откроется страница управления базой данных.
- В секции Command and Control щёлкнуть мышью по ссылке Monitoring Plans. Откроется страница Monitoring Plans, где по умолчанию для базы данных добавлен план мониторинга Default_Schedule_Plan.
- Щёлкнуть по кнопке Edit. Откроется страница редактирования текущего плана мониторинга.
- Чтобы добавить новое правило мониторинга щёлкнуть по кнопке Add Rule. Откроется страница со списком доступных правил Select Database Rules.
- Щёлкнуть мышью по правилу Lock in Use High. Откроется страница со свойствами правила:
- Настроить свойства правила мониторинга:
-
- В поле Threshold указать пороговое значение для таблицы локировок. По умолчанию – 90%.
- В поле Alert severity указать степень серьёзности оповещения. По умолчанию – Warning.
- В поле Alert perform action указать действие, которое должен выполнить OpenEdge Management, когда будет сгенерировано оповещение. По умолчанию установлено действие Default_Action, которое означает, что оповещение будет показано только в OpenEdge Management.
- Щёлкнуть по кнопке Save.
- Щёлкнуть по кнопке Done Adding Rules. Правило мониторинга таблицы локировок будет добавлено в план мониторинга базы данных.
Увеличение размера таблицы локировок онлайн
Для увеличения значения параметра Lock Table Entries (-L) онлайн применяется утилита PROUTIL INCREASETO с новым значением для параметра -L кратным 32. Если новое значение не будет кратным 32, то утилита автоматически округлит его до ближайшего кратного 32-м значения в большую сторону.
Синтаксис команды:
proutil db-name -C increaseto -L lock-table-entries
Эффект от изменения параметра -L онлайн проявится немедленно, тем не менее для того, чтобы новое значение было использовано при следующем старте базы данных, его необходимо внести в файл параметров.
Работа утилиты PROUTIL INCREASETO оказывает следующее влияние:
- к базе данных добавляются новые сегменты разделяемой памяти;
- в связи с этим INCREASETO требует, чтобы пользователи, которые работают с базой данных напрямую (self-service client), имели достаточно привилегий безопасности для чтения новых сегментов разделяемой памяти;
- если существуют пользователи, напрямую подключённые к базе данных и не имеющие соответствующих привилегий, то INCREASETO попросит отключить их или прервать работу утилиты;
- пользователи с существующими подключениями должны отключиться или иметь возможность прикрепить новые сегменты разделяемой памяти. Тем не менее, чтобы изменения INCREASETO вступили в силу для подключённых через PROMON пользователей, они должны перезапустить PROMON.
- утилита INCREASETO позволяет только увеличить размер таблицы локировок. Уменьшите размер таблицы локировок можно только путём перезапуска базы данных.
Предположим, что необходимо увеличить значение параметра -L для базы данных sports с 8192 до 10240. Для этого необходимо выполнить следующую команду:
proutil sports -C increaseto -L 10240