Базы данных Oracle - статьи

         

Миф об одном сегменте разделяемой памяти


SGA всегда следует конфигурировать для размещения в одном сегменте разделяемой памяти, чтобы добиться максимальной производительности базы данных. Установка параметров ОС для размещения всей SGA в одном сегменте разделяемой памяти должно быть первоочередной задачей при разрешении проблем производительности базы данных.

Факт

Многие АБД в среде UNIX стараются разместить всю SGA в одном сегменте разделяемой памяти, надеясь за счет этого повысить производительность. Однако в большинстве сред отсутствует измеримая деградация производительности, даже если SGA размещена в нескольких сегментах разделяемой памяти. Процессы Oracle почти всегда имеют одинаковое время доступа к различным компонентам SGA независимо от количества сегментов разделяемой памяти, содержащих SGA. Проведенное тестирование производительности многих UNIX-систем разоблачает этот миф. Одни и те же компоненты приложений запускались до и после модификации ядра UNIX, и при этом не было обнаружено абсолютно никакого измеримого повышения или снижения производительности. Практический результат: на большинстве UNIX-платформ в действительности не имеет никакого значения, используется ли для SGA один или более сегментов разделяемой памяти.

Говоря об этом, вы должны быть осведомлены о паре исключений. На некоторых аппаратных платформах, поддерживающих конфигурации доступа к слабосвязанной неоднородной памяти (NUMA, non-uniform memory access), взаимодействие различных узлов системы выполняется через "соединения" (interconnect) или коммутаторы, при этом сегменты памяти могут быть созданы в различных узлах, - в результате Oracle и ОС для чтения различных частей SGA будут постоянно использовать эти коммутаторы. Такое использование может создать проблемы производительности, если объем передаваемых данных превышает пропускную способность этих коммутаторов. Кроме того, если вы в среде Sun Solaris используете Intimate Shared Memory (ISM), параметр SHMMAX следует устанавливать так, чтобы вся SGA размещалась в одном сегменте разделяемой памяти.



Содержание раздела