Планирование оптимизаций

Оценить
(0 голоса)

Эффективное планирование процессов может привести к существенным различиям в производительности СУБД особенно для Oracle и DB2, которые используют двухпроцессную архитектуру (она более подробно описана в разделе "Двухпроцессные архитектуры" главы 5). В настоящем разделе обсуждаются функциональные возможности, предлагаемые Solaris для повышения эффективности планирования приложений баз данных.

Управление вытеснением

Введено для уменьшения конкуренции, связанной с защелками (latches) баз данных. Процессы баз данных используют защелки, или взаимоисключающие блокировки (mutexes), специфичные для конкретной СУБД, для перехода в последовательный режим доступа (процессор приостанавливает исполнение команд, пока не будет введена определенная команда) к критическим секциям программного кода или структурам данных. Каждому процессу, когда он планируется для выполнения на ЦП, предоставляется некий квант времени. Когда этот квант времени истекает или данный процесс вытесняется другим процессом с более высоким приоритетом, происходит переключение контекста (сохранение регистров процессора и загрузка их новым содержимым при переключении на другой процесс). Если процесс вытесняется в то время, когда он держит какую-нибудь защелку базы данных, то эта защелка становится недоступной до тех пор, пока данный процесс вновь не получит процессорное время и не освободит ее. Тем временем все другие процессы, требующие защелку, останавливаются.

Solaris 2.6 предоставила новую функциональную возможность, носящую название управление вытеснением, которая была впервые реализована в Oracle8i. Указанная возможность позволяет некоторому процессу базы данных, удерживающему критическую защелку, уведомлять Solaris о том, что он не желает быть вытесненным. Если это возможно, Solaris предоставит такому процессу помимо обычного некоторое дополнительное время ЦП.

Управление вытеснением должно быть разрешено программно. Используя простой API - schedctl_init(ЗХ),schedctl_start(ЗХ) и schedctl_stop(ЗХ))- программисты могут разработать код, инициирующий и включающий управление вытеснением для потока.

Модификации диспетчерских таблиц
Системные вызовы pread и pwrite
Асинхронные операции ввода/вывода ядра операционной системы
Расширения файловой системы Unix
Прямой ввод/вывод

Добавить комментарий


Защитный код
Обновить